首页新闻找找看学习计划

SQL参数化的奇怪问题

0
悬赏园豆:5 [已关闭问题] 关闭于 2013-05-15 11:12

各位园友大家好,有个问题请教下:

举例:执行带参数SQL语句时如下:

1 string sql = "select * from OrgDept where id=@id";
2 SqlParameter[] paras = new SqlParameter[] { 
3 new SqlParameter("@id","1")
4 };
5 DataTable dt = new DataTable();
6 SQLHelper sqlHelper = new SQLHelper();
7 dt = sqlHelper.ExecuteQuery(sql,paras,CommandType.Text);

现在我需要根据情况选择不同的表,改成下面:

1      string sql = "select * from @OrgDept";
2         SqlParameter[] paras = new SqlParameter[] { 
3         new SqlParameter("@OrgDept","OrgDept")
4         };

执行时会报错:必须声明表变量 "@OrgDept"

问题:

参数不可以替换表名吗?

编程小纸条的主页 编程小纸条 | 初学一级 | 园豆:186
提问于:2013-05-14 15:17
< >
分享
所有回答(5)
0

  我晕,根据不同的情况给sql不同的值不行了。为何把表也当成参数。

五行缺木 | 园豆:386 (菜鸟二级) | 2013-05-14 15:22
0
       string sql = String.Format("select * from {0}","OrgDept");

 

没这样写过。不过换个方法解决可以:

会长 | 园豆:6159 (大侠五级) | 2013-05-14 16:27
1

表名是不行的哦

如果要把表名当参数的话 就不能直接执行sql语句了

declare @str nvarchar(max)
set @str='select * from '+@OrgDept
exec (@str) 这样写

丫的 | 园豆:1575 (小虾三级) | 2013-05-14 16:36
0

直接拼起来么,想复杂了吧

王二麻子 | 园豆:43 (初学一级) | 2013-05-14 17:15
0

你直接拼接不就行了,还搞这么麻烦的事情

不负春光,努力生长 | 园豆:1382 (小虾三级) | 2013-05-14 21:42
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册