码迷,mamicode.com
首页 > Windows程序 > 详细

C# 平时碰见的问题【4】

时间:2014-11-20 14:58:51      阅读:246      评论:0      收藏:0      [点我收藏+]

标签:style   ar   color   sp   strong   数据   on   问题   bs   

1. 模糊查询 like的参数化写法

string keyword="value"; // 要模糊匹配的值

错误示范:    

      sql:    string strSql="select * from [Table]  where [Field] like %@Field%";

      参数: System.Data.SqlClient.SqlParameter[] parms = new[] { 

              new System.Data.SqlClient.SqlParameter("@Field",System.Data.SqlDbType.VarChar,400)
              };
          parms[0].Value = keyWord ;

输出:    ado.net 给我们输出的参数 SQL语句 还是原原本本的 select * from [Table]  where [Field] like %@Field%  SQL语句错误

解决办法(1):

      sql :   string strSql="select * from [Table]  where [Field] like ‘%‘+@Field+‘%‘ "

      这样ado.net 就能将参数正确的输入了

解决办法(2):

      sql:    string strSql="select * from [Table]  where [Field] like @Field";      

      参数: System.Data.SqlClient.SqlParameter[] parms = new[] { 

              new System.Data.SqlClient.SqlParameter("@Field",System.Data.SqlDbType.VarChar,400)
              };
          parms[0].Value = "%"+keyWord +"%";

分析:

      我们期望最后传输到数据库的 like语句应该是: select * from [Table] like [Field] like ‘%value%‘ ;  

      直接%@Field%,污染了ado.net的参数标示@符号导致无法正确替换参数;

      方法一在sql语句中拼接字符串的方式来得到如 ‘%value%‘的值;  注:sql语句中 字符串用单引号来作为字符串的起始符, 而sql server中以 + 号 拼接字符串.所以‘%value%‘等同于 ‘%‘+value‘%‘

      方法二则直接在赋值语句中加入模糊匹配符;

      

C# 平时碰见的问题【4】

标签:style   ar   color   sp   strong   数据   on   问题   bs   

原文地址:http://www.cnblogs.com/mushishi/p/4110417.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!