代码如下
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][email protected]";
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";不是已经申明了吗,为什么还是报错??
------解决思路----------------------
你的 adp 跟 cmd.Parameters 没有半点关系啊。你的 cmd 就是一个摆设,除了它的 Text 属性当个字符串变量来滥用,其它东西都没用。
------解决思路----------------------
按照你的代码的逻辑,你删除 cmd 就行了,只要有个 sql 变量就行了,要 cmd.Text 干什么呢?
会删除代码,才能看懂你自己的程序。许多人之所以不会写代码,不是因为代码少,而是就是因为代码写的太多了而不会删除。
------解决思路----------------------
新手就先直接拼接SQL语句吧,别玩参数化什么高大上的写法了
估计你写的东西根本没法实际应用,所以也根本不需要考虑什么SQL注入之类的问题
------解决思路----------------------
这就跟农民造飞机一样
先飞起来再说吧
别还停留在理论研究,就老想着什么飞机安全性问题了