首页 新闻 会员 周边

C#奇怪的参数化模糊查询结果

0
悬赏园豆:50 [待解决问题]

这个问题牛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();

homekx的主页 homekx | 初学一级 | 园豆:150
提问于:2011-01-18 17:15
< >
分享
所有回答(7)
0

单步调试一下,看看你的sqlpm的值,然后看看你的表中的结果是不是只有三条。

顾晓北 | 园豆:10844 (专家六级) | 2011-01-18 17:25
sqlpm的值 "%销售%" 查询出来的结果还是3条 如果程序里不用参数的形式 直接连接如: string cmdstr = "select * from t_tabledescription where FDescription like '%"+TextBox2.text+"%'"; 这样去查就是正确的。。但是为什么一用到参数就出问题了呢?
支持(0) 反对(0) homekx | 园豆:150 (初学一级) | 2011-01-19 09:30
很郁闷的问题,呵呵,但是貌似参数只是会在两边加上‘ ’而已,没什么不一样,要说不一样就是你在参数里面的TextBox2.text,你tostring了一下。还真没遇到过这么诡异的问题。
支持(0) 反对(0) 顾晓北 | 园豆:10844 (专家六级) | 2011-01-19 09:37
0

拦截一下你的sql

後浪 | 园豆:830 (小虾三级) | 2011-01-19 10:31
0

改成这个:

SqlParameter sqlpm = new SqlParameter("@tabledescription", SqlDbType.NVarChar, 255);

manji | 园豆:633 (小虾三级) | 2011-01-19 15:15
0

SqlDbType.NVarChar  这里的类型也是有讲究的

茂茂 | 园豆:2892 (老鸟四级) | 2011-01-20 12:15
0

据说,nvarchar,char类型,like的时候,是不一样的。

forhells | 园豆:724 (小虾三级) | 2011-01-31 13:35
0

string cmdstr = "select * from t_tabledescription where FDescription like ’%‘+@tabledescription+’%‘"; 试试看

绝对菜鸟 | 园豆:27 (初学一级) | 2013-02-05 22:07
0

类型为NChar的参数

sql运行时执行: like '%xx%(空格填满)'

空格填满你所规定数量: like '%销售%(空格255个)'

异世富甲 | 园豆:202 (菜鸟二级) | 2017-05-09 18:09
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册