这个问题牛X了。。
在网页里查询一个表 得到3条记录,用同样的语句,同样的条件到查询分析器里得出来的结果是 几十条记录。。怎么回事? 如果我写错了应该一条记录都不会返回啊。结果给我返回三条。。。闷。。朋友们帮帮忙哈。。
在SQL查询分析器里 select * from t_tabledescription where FDescription like '%销售%'
代码
string connstr = "Data Source=192.168.0.123;Initial Catalog=AIS20101105093858;User ID=sa";
string cmdstr = "select * from t_tabledescription where FDescription like @tabledescription";
SqlConnection conn = new SqlConnection(connstr);
SqlCommand scmd = new SqlCommand(cmdstr, conn);
scmd.CommandType = CommandType.Text;
SqlParameter sqlpm = new SqlParameter("@tabledescription", SqlDbType.NChar, 255);
sqlpm.Value = "%" + TextBox2.Text.ToString() + "%";
scmd.Parameters.Add(sqlpm);
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(scmd);
da.Fill(ds, "table1");
GridView1.DataSource = ds;
GridView1.DataBind();
单步调试一下,看看你的sqlpm的值,然后看看你的表中的结果是不是只有三条。
拦截一下你的sql
改成这个:
SqlParameter sqlpm = new SqlParameter("@tabledescription", SqlDbType.NVarChar, 255);
SqlDbType.NVarChar 这里的类型也是有讲究的
据说,nvarchar,char类型,like的时候,是不一样的。
string cmdstr = "select * from t_tabledescription where FDescription like ’%‘+@tabledescription+’%‘"; 试试看
类型为NChar的参数
sql运行时执行: like '%xx%(空格填满)'
空格填满你所规定数量: like '%销售%(空格255个)'