黑马程序员技术交流社区
标题:
(ado.net)遇到的一个小问题(sql语句)参数化查询
[打印本页]
作者:
顾磊磊
时间:
2013-8-21 22:28
标题:
(ado.net)遇到的一个小问题(sql语句)参数化查询
本帖最后由 顾磊磊 于 2013-8-23 20:39 编辑
QQ截图20130821222116.png
(31.62 KB, 下载次数: 10)
下载附件
2013-8-21 22:21 上传
部分代码如上图所示或者如下所示:
cmd.CommandText = "select age from T_Student where Name=&Name or Age>@aaa";
cmd.Parameters.Add(new SqlParameter("@Name",txtName,Text));
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