读书人

SqlParameter 怎么进行in查询

发布时间: 2012-03-05 11:54:01 作者: rapoo

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就有得下载。

读书人网 >C#

热点推荐