SqlParameter 如何进行in查询?
一般来讲
select * from tablename where fieldname = @paramname
然后给SqlCommand增加一个SqlParameter说明你要查询的值
对于IN 查询怎么办呢?
我写了如下语句
command.CommandText = "select * from tablename where fieldname in (@paramname)"
SqlParameter param = new SqlParameter();
param.ParameterName = "@paramname";
param.Value = new object[]{1,2,3,4,5};
command.Parameters.Add(param);
执行过程中出现以下异常:不存在从对象类型 System.Object[] 到已知的托管提供程序本机类型的映射。
请问,我如何用SqlParameter来执行一个In 查询?
------解决方案--------------------觉得用in没必要用SqlParameter...
直接生成字符串嵌进去不是更好吗???
------解决方案--------------------CharIndex
Select * From tablenname where CharIndex(',' + Cast(field_value As Varchar) + ',', ',' + @param + ',') > 0
------解决方案--------------------command.CommandText = "select * from tablename where CharIndex( ',' + Cast(fieldname As Varchar) + ',', ',' + @param + ',') > 0";
SqlParameter param = new SqlParameter();
param.ParameterName = "@paramname";
param.Value = "1,2,3,4,5";
command.Parameters.Add(param);
------解决方案--------------------SqlParameter就是申明sql变量然后附值,你在sql proc里面怎么写就在.net里面怎么写
------解决方案--------------------从实例中摘一段代码出来。
SqlTemplate rolesTemplate = SqlTemplate.CreateTemplateExpression( "{...}", Array.ConvertAll<string, object>( roles, delegate( string input ) { return input; } ) );
string [] rights = SqlDataProvider.DbUtility.ExecuteSingleColumn<string>( @"SELECT Rights FROM Roles WHERE role IN ( {0} )", rolesTemplate );
DbUtility的源代码在我的Blog就有得下载。