黑马程序员技术交流社区

标题: (ado.net)遇到的一个小问题(sql语句)参数化查询 [打印本页]

作者: 顾磊磊    时间: 2013-8-21 22:28
标题: (ado.net)遇到的一个小问题(sql语句)参数化查询
本帖最后由 顾磊磊 于 2013-8-23 20:39 编辑


部分代码如上图所示或者如下所示:
  1. cmd.CommandText = "select age from T_Student where Name=&Name or Age>@aaa";
  2. cmd.Parameters.Add(new SqlParameter("@Name",txtName,Text));
  3. cmd.Parameters.Add(new SqlParameter("@aaa",Convert.ToInt32(txtAge.Text)));
复制代码
其中参数"@aaa",为何要转化成int类型,感觉没必要啊?


作者: ℡跡....    时间: 2013-8-21 22:57
你那个age年龄应该是int类型,而txtage.text是字符串类型,肯定要转成int类型呀。
作者: ℡跡....    时间: 2013-8-21 22:57
你那个age年龄应该是int类型,而txtage.text是字符串类型,肯定要转成int类型呀。
作者: 瞎猫馒头米田共    时间: 2013-8-22 02:21
带参数是SQL语句,在数据库内部实际上是调用了exec 内部的一个存储过程,而这个过程回根据你传入参数的类行,给参数付上相应的数据库中的数据类型。这里没有强制要求你转换类型,其实是一个object类型即可,但是一般都会转换成相对应的类型。
作者: 小天    时间: 2013-8-22 08:04
因为你的数据表中这个Age字段是int类型,如果你不转换的话,插入数据表的时候就会报错
作者: 高文咪    时间: 2013-8-22 10:21
你数据库age这段是int类型的吧......
这种转换是由你数据库字段类型决定的;如果程序与数据库字段值类型不一致的话,程序运行时会报错~~~
作者: 左岸    时间: 2013-8-22 12:43
当操作数的类型不同,而且不属于基本数据类型时,经常需要强制类型转换,将操作数转化为所需要的类型。强制类型转换具有两种形式,称为显式强制转换和隐式强制类型转换。1、显式强制类型转换:显式强制类型转换需要使用强制类型转换运算符2、隐式强制类型转换:隐式类型转换发生在赋值表达式和有返回值的函数调用表达式中。
作者: 顾磊磊    时间: 2013-8-23 20:41
感谢各位的回复,测试了一下,不转换数据类型,的确会报错,受教了
作者: 丁海平    时间: 2013-8-25 11:22
你看到Age>@aaa,只有值型的数据才能比较啊




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2