数据库sqlserver。
sql 如下
sql 如下
select * from tool where type in (@type)
绑定参数如下
SqlConnection con = new SqlConnection(SqlHelper.GetConnectionString()); SqlParameter parameter = new SqlParameter("@type", "“A","B","C""); return SqlHelper.ExecuteDataset(con, CommandType.Text, sqlStr, parameter);
执行时,查询不到数据,参数为A/B/C 时可以查询到,写到一块组成字符串就不可以了。
解决方案
30
肯定是不行的,理由很简单 正规sql是 select * from a where b in (“1″,”2″,”3”)
这里1,2,3不是string类型的。
而你拼接的sql,其实会出现这样的select * from a where b in (“””1″,”2″,”3″””),sql会认为整个”1″,”2″,”3″是一个字符串。而不是单个的‘1’,”2″,”3″
所以是查不到数据的。
方法1,在sql里写一个函数来split你传入的”1,2,3″返回一个datatable。这个网上很多的,你本人查一下就知道了。
方法2,就是不用SqlParameter。直接sql拼接,原因是SqlParameter会根据你的字符串类型加上2个单引号‘’
这里1,2,3不是string类型的。
而你拼接的sql,其实会出现这样的select * from a where b in (“””1″,”2″,”3″””),sql会认为整个”1″,”2″,”3″是一个字符串。而不是单个的‘1’,”2″,”3″
所以是查不到数据的。
方法1,在sql里写一个函数来split你传入的”1,2,3″返回一个datatable。这个网上很多的,你本人查一下就知道了。
方法2,就是不用SqlParameter。直接sql拼接,原因是SqlParameter会根据你的字符串类型加上2个单引号‘’