SqlDataAdapter为什么不能使用in查询呢.
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 呀! 字段名,表名,数据库名之类作为变量时,必须用动态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); 貌似楼上说的好像也会有点问题哦,你这样的话只能用作查询'1,2’这个字符串,如果要想查询1或者2需要将string sqlStatement = "exec(' select * from roleinfo where roleid IN ('+@id+') ')";
中的@id改成''''+REPLACE(@id,',',''',''')+''''
页:
[1]