Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将参数传递给sql“in”语句?_C#_Postgresql_Ado.net_Npgsql - Fatal编程技术网

C# 如何将参数传递给sql“in”语句?

C# 如何将参数传递给sql“in”语句?,c#,postgresql,ado.net,npgsql,C#,Postgresql,Ado.net,Npgsql,我要创建此查询: 从编号为“123”、“234”、“456”的产品中选择*; 但我找不到任何使用Npgsql和Npgsql参数实现这一点的例子。我试着这样做: 字符串[]数字=新字符串[]{123,234}; NPGSQLComands cmd=新的NPGSQLComands从产品中选择*,其中number in:numbers; npgsqlp参数=新的NpgsqlParameternumbers,numbers; command.Parameters.Addp; 但它不起作用 将其作为数组传

我要创建此查询:

从编号为“123”、“234”、“456”的产品中选择*; 但我找不到任何使用Npgsql和Npgsql参数实现这一点的例子。我试着这样做:

字符串[]数字=新字符串[]{123,234}; NPGSQLComands cmd=新的NPGSQLComands从产品中选择*,其中number in:numbers; npgsqlp参数=新的NpgsqlParameternumbers,numbers; command.Parameters.Addp; 但它不起作用

将其作为数组传递:

string[] numbers = new string[] { "123", "234" };

NpgsqlCommands cmd = new NpgsqlCommands("select * from products where number = ANY(:numbers)");
NpgsqlParameter p = new NpgsqlParameter("numbers", NpgsqlDbType.Array | NpgsqlDbType.Text);
p.value = numbers;
command.Parameters.Add(p);

您需要动态创建命令字符串-循环,第一个参数为:num0,第二个参数为:num1等。添加完所有参数后,删除最后一个字符,并将其替换为。

除了@Quassnoi answer之外,我将添加此参数,以显示我们在实际代码中是如何完成的

警告!此工作代码来自真实的项目,可能会损坏您美丽的方法

字符串commstr=从id=1的产品中选择产品名称、价格、产品url、图像urlANY@arr;; NpgsqlCommand cm=新的npgsqlcommandcomstr,cn; NpgsqlParameter arpar=新的NpgsqlParameter; arpar.ParameterName=arr; arpar.NpgsqlDbType=NpgsqlDbType.Array | NpgsqlDbType.Bigint; arpar.Value=PerformQuerySphinxquery,limit; cm.Parameters.Addarpar;
在“选择”中使用“从测试中删除id”unnest@ids

这将生成一个错误:数组变量应该是参数中的数字value@UwConcept:老实说,我已经很久没有使用NPgSQL了,甚至没有安装VS来检查:@Adrian:语法是否正确,或者您必须更正它?我无法检查。如果传递int[],请使用NpgsqlDbType | NpgsqlDbType.Numeric。而且我认为它的$number不是:number?除此之外,语法对我很有用。如果你能像我建议的那样使用数组,我会同意的。