首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

SqlParameter 怎么进行in查询

2012-03-05 
SqlParameter 如何进行in查询?一般来讲select * from tablename where fieldname @paramname然后给SqlCo

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

热点排行