错误提示: 必须声明标量变量 "@pwd

夜雨夜话 2015-05-29 12:02:48
代码如下

string constr = @"Data Source=TESTSERVERIT;Initial Catalog=khgltest;Persist Security Info=True;User ID=sa;Password=abc.123";
using (SqlConnection con=new SqlConnection(constr))
{
con.Open();
string sql = @"select USERID from wh_user where [PASSWORD]=@pwd";
using (SqlCommand com=new SqlCommand(sql,con))
{

SqlParameter para = new SqlParameter("@pwd", SqlDbType.VarChar, 18);
//com.Parameters.AddWithValue("@pwd","abc.123");
para.Value = "abc.123";
SqlDataAdapter adp = new SqlDataAdapter(com.CommandText,con);
DataTable dt = new DataTable();
adp.Fill(dt);
foreach (DataRow dr in dt.Rows )
{
DataColumn dc = dt.Columns["USERID"];
string uid= (string)dr[dc];

}



这里SqlParameter para = new SqlParameter("@pwd", SqlDbType.VarChar, 18);
//com.Parameters.AddWithValue("@pwd","abc.123");
para.Value = "abc.123";不是已经申明了吗,为什么还是报错??
...全文
322 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
於黾 2015-05-29
  • 打赏
  • 举报
回复
引用 6 楼 sp1234 的回复:
按照你的代码的逻辑,你删除 cmd 就行了,只要有个 sql 变量就行了,要 cmd.Text 干什么呢? 会删除代码,才能看懂你自己的程序。许多人之所以不会写代码,不是因为代码少,而是就是因为代码写的太多了而不会删除。
不是代码写的太多了,是代码copy的太多了,但是根本看不懂,不知道应该删除什么
於黾 2015-05-29
  • 打赏
  • 举报
回复
SqlDataAdapter adp = new SqlDataAdapter(com.CommandText,con); 简直服了
  • 打赏
  • 举报
回复
按照你的代码的逻辑,你删除 cmd 就行了,只要有个 sql 变量就行了,要 cmd.Text 干什么呢? 会删除代码,才能看懂你自己的程序。许多人之所以不会写代码,不是因为代码少,而是就是因为代码写的太多了而不会删除。
  • 打赏
  • 举报
回复
你的 adp 跟 cmd.Parameters 没有半点关系啊。你的 cmd 就是一个摆设,除了它的 Text 属性当个字符串变量来滥用,其它东西都没用。
夜雨夜话 2015-05-29
  • 打赏
  • 举报
回复
引用 2 楼 u013053259 的回复:
cmd.Parameters.Add就可以了
改了,还是一样
夜雨夜话 2015-05-29
  • 打赏
  • 举报
回复
引用 1 楼 u013053259 的回复:
你的 SqlParameter没给SqlCommand
string constr = @"Data Source=TESTSERVERIT;Initial Catalog=khgltest;Persist Security Info=True;User ID=sa;Password=abc.123"; using (SqlConnection con=new SqlConnection(constr)) { con.Open(); string sql = @"select USERID from wh_user where [PASSWORD]=@pwd"; using (SqlCommand com=new SqlCommand(sql,con)) { com.Parameters.AddWithValue("@pwd","abc.123"); SqlDataAdapter adp = new SqlDataAdapter(com.CommandText,con); DataTable dt = new DataTable(); adp.Fill(dt); 改成这样还是一样的报错
静静-风 2015-05-29
  • 打赏
  • 举报
回复
cmd.Parameters.Add就可以了
静静-风 2015-05-29
  • 打赏
  • 举报
回复
你的 SqlParameter没给SqlCommand
夜雨夜话 2015-05-29
  • 打赏
  • 举报
回复
引用 11 楼 Z65443344 的回复:
[quote=引用 9 楼 hzwxslqq 的回复:] [quote=引用 6 楼 sp1234 的回复:] 按照你的代码的逻辑,你删除 cmd 就行了,只要有个 sql 变量就行了,要 cmd.Text 干什么呢? 会删除代码,才能看懂你自己的程序。许多人之所以不会写代码,不是因为代码少,而是就是因为代码写的太多了而不会删除。
谢谢,因为是刚学,所以对很多类的具体用法都不太会,我再改改,谢谢[/quote] 新手就先直接拼接SQL语句吧,别玩参数化什么高大上的写法了 估计你写的东西根本没法实际应用,所以也根本不需要考虑什么SQL注入之类的问题[/quote] 嗯嗯,谢谢指导,已经修正了,谢谢
於黾 2015-05-29
  • 打赏
  • 举报
回复
这就跟农民造飞机一样 先飞起来再说吧 别还停留在理论研究,就老想着什么飞机安全性问题了
於黾 2015-05-29
  • 打赏
  • 举报
回复
引用 9 楼 hzwxslqq 的回复:
[quote=引用 6 楼 sp1234 的回复:] 按照你的代码的逻辑,你删除 cmd 就行了,只要有个 sql 变量就行了,要 cmd.Text 干什么呢? 会删除代码,才能看懂你自己的程序。许多人之所以不会写代码,不是因为代码少,而是就是因为代码写的太多了而不会删除。
谢谢,因为是刚学,所以对很多类的具体用法都不太会,我再改改,谢谢[/quote] 新手就先直接拼接SQL语句吧,别玩参数化什么高大上的写法了 估计你写的东西根本没法实际应用,所以也根本不需要考虑什么SQL注入之类的问题
夜雨夜话 2015-05-29
  • 打赏
  • 举报
回复
引用 7 楼 Z65443344 的回复:
SqlDataAdapter adp = new SqlDataAdapter(com.CommandText,con); 简直服了
新手一个,见笑了
夜雨夜话 2015-05-29
  • 打赏
  • 举报
回复
引用 6 楼 sp1234 的回复:
按照你的代码的逻辑,你删除 cmd 就行了,只要有个 sql 变量就行了,要 cmd.Text 干什么呢? 会删除代码,才能看懂你自己的程序。许多人之所以不会写代码,不是因为代码少,而是就是因为代码写的太多了而不会删除。
谢谢,因为是刚学,所以对很多类的具体用法都不太会,我再改改,谢谢

110,538

社区成员

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

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

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