SqlServer参数化查询之wherein和like实现详解.docx
上传人:sy****28 上传时间:2024-09-14 格式:DOCX 页数:6 大小:37KB 金币:16 举报 版权申诉
预览加载中,请您耐心等待几秒...

SqlServer参数化查询之wherein和like实现详解.docx

SqlServer参数化查询之wherein和like实现详解.docx

预览

在线预览结束,喜欢就下载吧,查找使用更方便

16 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

HYPERLINK"http://www.cnblogs.com/lzrabbit/archive/2012/04/22/2465313.html"SqlServer参数化查询之wherein和like实现详解文章导读HYPERLINK"http://www.cnblogs.com/lzrabbit/archive/2012/04/22/2465313.html"\l"wherein"\o"拼SQL实现wherein查询"拼SQL实现wherein查询HYPERLINK"http://www.cnblogs.com/lzrabbit/archive/2012/04/22/2465313.html"\l"wherein1"\o"使用CHARINDEX或like实现wherein参数化"使用CHARINDEX或like实现wherein参数化HYPERLINK"http://www.cnblogs.com/lzrabbit/archive/2012/04/22/2465313.html"\l"wherein1"\o"使用exec动态执行SQl实现wherein参数化"使用exec动态执行SQl实现wherein参数化HYPERLINK"http://www.cnblogs.com/lzrabbit/archive/2012/04/22/2465313.html"\l"wherein3"\o"为每一个参数生成一个参数实现wherein参数化"为每一个参数生成一个参数实现wherein参数化HYPERLINK"http://www.cnblogs.com/lzrabbit/archive/2012/04/22/2465313.html"\l"wherein4"\o"使用临时表实现wherein参数化"使用临时表实现wherein参数化HYPERLINK"http://www.cnblogs.com/lzrabbit/archive/2012/04/22/2465313.html"\l"like"\o"like参数化查询"like参数化查询HYPERLINK"http://www.cnblogs.com/lzrabbit/archive/2012/04/29/2475427.html"xml和DataTable传参身为一名小小的程序猿,在日常开发中不可以避免的要和wherein和like打交道,在大多数情况下我们传的参数不多简单做下单引号、敏感字符转义之后就直接拼进了SQL,执行查询,搞定。若有一天你不可避免的需要提高SQL的查询性能,需要一次性wherein几百、上千、甚至上万条数据时,参数化查询将是必然进行的选择。然而如何实现wherein和like的参数化查询,是个让不少人头疼的问题。wherein的参数化查询实现首先说一下我们常用的办法,直接拼SQL实现,一般情况下都能满足需要stringuserIds="1,2,3,4";using(SqlConnectionconn=newSqlConnection(connectionString)){conn.Open();SqlCommandcomm=newSqlCommand();comm.Connection=conn;comm.CommandText=string.Format("select*fromUsers(nolock)whereUserIDin({0})",userIds);comm.ExecuteNonQuery();}需要参数化查询时进行的尝试,很显然如下这样执行SQL会报错错误using(SqlConnectionconn=newSqlConnection(connectionString)){conn.Open();SqlCommandcomm=newSqlCommand();comm.Connection=conn;comm.CommandText="select*fromUsers(nolock)whereUserIDin(@UserID)";comm.Parameters.Add(newSqlParameter("@UserID",SqlDbType.VarChar,-1){Value="1,2,3,4"});comm.ExecuteNonQuery();}很显然这样会报错误:在将varchar值'1,2,3,4'转换成数据类型int时失败,因为参数类型为字符串,wherein时会把@UserID当做一个字符串来处理,相当于实际执行了如下语句select*fromUsers(nolock)whereUserIDin('1,2,3,4')