C# C SqlDataAdapter-选择命令问题

C# C SqlDataAdapter-选择命令问题,c#,sqldataadapter,selectcommand,C#,Sqldataadapter,Selectcommand,我的select命令有问题。这种情况是,当我在变量中放入许多值时,我什么也得不到,但如果我在变量中只放入一个值,它就工作了 我只想运行以下脚本: SELECT * FROM gsm00 a INNER JOIN gsd00 b ON a.idnum=b.idnum WHERE b.idnum IN ('0001','0002') 以下是我的示例代码: //字符串val=00010002-这不起作用 query = "SELECT * FROM gsm00 a INNER JOIN gsd0

我的select命令有问题。这种情况是,当我在变量中放入许多值时,我什么也得不到,但如果我在变量中只放入一个值,它就工作了

我只想运行以下脚本:

SELECT * 
FROM gsm00 a 
INNER JOIN gsd00 b ON a.idnum=b.idnum WHERE b.idnum IN ('0001','0002')
以下是我的示例代码:

//字符串val=00010002-这不起作用

query = "SELECT * FROM gsm00 a INNER JOIN gsd00 b ON a.idnum=b.idnum WHERE b.idnum IN (@searchKey)";

MySqlDataAdapter dataAdapter = new MySqlDataAdapter(query, dbconfig.conn);
dataAdapter.SelectCommand.Parameters.AddWithValue("@searchKey", val);
dataAdapter.Fill(dataTable);
dataAdapter.Dispose();
尝试:

query=SELECT*FROM gsm00 a内部连接gsd00 b ON a.idnum=b.idnum,其中b.idnum位于{@searchKey}; ... var a=新字符串[]{0001,0002}; dataAdapter.SelectCommand。AddArrayParameters@searchKeyA.
在第一种情况下,@searchKey值为0001,这意味着您的语句如下

SELECT * FROM gsm00 a INNER JOIN gsd00 b ON a.idnum=b.idnum WHERE b.idnum IN ('0001')
这是因为它是1个参数,内部参数处理是在它周围加单引号

秒的情况如下所示:

SELECT * FROM gsm00 a INNER JOIN gsd00 b ON a.idnum=b.idnum WHERE b.idnum IN ('0001,0002')
但它必须看起来像

SELECT * FROM gsm00 a INNER JOIN gsd00 b ON a.idnum=b.idnum WHERE b.idnum IN ('0001','0002')
如果它的1个参数或多个参数可以是IN子句值的一部分,则无法从语句中隐式检查

这是一个与解决方案类似的问题,也许您也可以看看:


似乎单引号是问题所在…嗨,我试过这个val='0001','0002',但仍然不起作用。是的,单引号将被转义
SELECT * FROM gsm00 a INNER JOIN gsd00 b ON a.idnum=b.idnum WHERE b.idnum IN ('0001','0002')