c# 中SqlCommand使用参数的问题.

snfdf 2016-07-29 10:37:20
请问能否使用参数来指定查询数据库中的某一列呢?
比如以下代码可以正常运行.

string autoHeader = dataGridView1.Columns[dataGridView1.CurrentCell.ColumnIndex].HeaderText;
SqlCommand comm = new SqlCommand("select distinct " + autoHeader + " from 领用表", conn);


以下代码就不对了

string autoHeader = dataGridView1.Columns[dataGridView1.CurrentCell.ColumnIndex].HeaderText;
SqlCommand comm = new SqlCommand("select distinct @Header from 领用表", conn);
SqlParameter sp = new SqlParameter("@Header", autoHeader);
comm.Parameters.Add(sp);

执行后其运行语句相当于
select distinct '@Header' from 领用表
为什么会这样呢?
要怎么改呢?
谢谢.
...全文
298 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
秋的红果实 2016-07-29
  • 打赏
  • 举报
回复
你的目的是用C#的变量,将数据传进去,最终形成sql可以执行的“sql语句”,所以要用C#变量构造
snfdf 2016-07-29
  • 打赏
  • 举报
回复
看来是只能拼接了.谢谢.
xliho 2016-07-29
  • 打赏
  • 举报
回复
不能,只能用第一种拼接sql的方法
  • 打赏
  • 举报
回复
“为什么会这样呢?”,为什么不会这样呢?你怎么不把“Select”关键字也给变成变量参数呢? 自己毫无根据地胡乱编写代码,而 sql 又没有vs环境编译检查机制(除非你用 linq provider),自然遇到各种乱子。
qq_34126594 2016-07-29
  • 打赏
  • 举报
回复
直接拼接就好啊
  • 打赏
  • 举报
回复
不行,不能将参数用于列、表名查询,数据库无法编译sql的 你只能拼接sql
aelfintiger 2016-07-29
  • 打赏
  • 举报
回复
每天回帖即可获得10分可用分!小技巧:教您如何更快获得可用分 你还可以输入10000个字符 提交回复(Ctrl+Enter)

111,129

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧