黑马程序员技术交流社区

标题: SQL变量声明问题 [打印本页]

作者: 吴瑞祥    时间: 2012-11-15 18:02
标题: SQL变量声明问题
本帖最后由 wrx362114 于 2012-11-15 18:41 编辑

using(sqlconnection conn = new sqlconnection())
{
conn.connectionstring=@'连接字符串';
conn.open();
using (sqlcommand cmd = conn.createcommand())
{
string ab="table2";
cmd.commandtext="select count(*) from @A";
cmd.parameters.add(new sqlparameter("A",ab));
console.writeline(cmd.parameters.count);//这里可以看到有1个变量,如果把上句注释就只有0个变量
console.writeline(convert.toint32(cmd.executescalar()));//报错,必须声明变量A,这个是怎么回事
}
}

作者: 李栋Jelly    时间: 2012-11-15 18:22
你那个com哪来的、?
作者: 吴瑞祥    时间: 2012-11-15 18:41
李栋Jelly 发表于 2012-11-15 18:22
你那个com哪来的、?

打错了,就是那个CMD
作者: 陈辉    时间: 2012-11-15 18:42
将com.parameters.add(new sqlparameter("A",ab));改为com.parameters.add(new sqlparameter("@A",ab));
作者: 吴瑞祥    时间: 2012-11-15 18:49
陈辉 发表于 2012-11-15 18:42
将com.parameters.add(new sqlparameter("A",ab));改为com.parameters.add(new sqlparameter("@A",ab));

一样,提示异常,必须声明表变量@A
作者: 李栋Jelly    时间: 2012-11-15 18:56
这个,你直接写表名不就行了,  在限制条件里边用@替换字段名,应该就OK了。
作者: 陈辉    时间: 2012-11-15 18:59
select count(*) from @A
在这条SQL语句中@A换成一张表的表名看看
作者: 吴瑞祥    时间: 2012-11-15 19:55
陈辉 发表于 2012-11-15 18:59
select count(*) from @A
在这条SQL语句中@A换成一张表的表名看看

换成表名没有问题
作者: 陈辉    时间: 2012-11-15 20:15
那就是说没有问题了
作者: 吴瑞祥    时间: 2012-11-15 20:22
李栋Jelly 发表于 2012-11-15 18:56
这个,你直接写表名不就行了,  在限制条件里边用@替换字段名,应该就OK了。 ...

我以为这个是类似变量的用法,不管什么都可以用变量替换
作者: 张静_90    时间: 2012-11-15 20:42
表名是不能用参数来代替的




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