设为首页收藏本站订阅更新

无忧脚本

 找回密码
 加入无忧

QQ登录

只需一步,快速开始

搜索
查看: 5610|回复: 2

[求助] SqlDataAdapter为什么不能使用in查询呢.

[复制链接]
发表于 2009-12-13 16:05:12 | 显示全部楼层 |阅读模式
string sqlStatement = "select * from users where userid IN (@userid)";

        DataTable table = new DataTable();
        SqlDataAdapter adapter = new SqlDataAdapter(sqlStatement, connectionString);

        我如果设置一个能检索出来.(如下)
        adapter.SelectCommand.Parameters.Add(new SqlParameter("@userid", "55"));
        
        设置多人提示我没有数据.
        adapter.SelectCommand.Parameters.Add(new SqlParameter("@userid", "55,66"));
        下面也不行
        adapter.SelectCommand.Parameters.Add(new SqlParameter("@userid", "'55','66'"));


    不知道是什么原因,是不是不能用in 呀!
发表于 2010-8-9 11:01:10 | 显示全部楼层
字段名,表名,数据库名之类作为变量时,必须用动态SQL
        string connectionString = ConfigurationManager.ConnectionStrings["SQLConnString1"].ConnectionString;
        string sqlStatement = "exec(' select * from roleinfo where roleid IN ('+@id+') ')";
        DataTable table = new DataTable();
        SqlConnection connection = new SqlConnection(connectionString);
        SqlDataAdapter adapter = new SqlDataAdapter();
        SqlParameter param = new SqlParameter();
        param.ParameterName = "@id";
        param.Value = "1,2";
        param.DbType = DbType.String;
        SqlCommand command = new SqlCommand(sqlStatement, connection);
        command.CommandType = CommandType.Text;
        command.Parameters.Add(param);
        adapter.SelectCommand = command;
        DataSet ds = new DataSet();
        adapter.Fill(ds);
发表于 2011-11-15 10:12:11 | 显示全部楼层
貌似楼上说的好像也会有点问题哦,你这样的话只能用作查询'1,2’这个字符串,如果要想查询1或者2需要将string sqlStatement = "exec(' select * from roleinfo where roleid IN ('+@id+') ')";
中的@id改成''''+REPLACE(@id,',',''',''')+''''
您需要登录后才可以回帖 登录 | 加入无忧

本版积分规则

小黑屋|手机版|Archiver|无忧脚本 ( 苏ICP备05080427号 )|值班电话:027-62300445   鄂公网安备 42011102000433号

GMT+8, 2017-11-18 07:00 , Processed in 0.085890 second(s), 8 queries , Gzip On, Memcache On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表