繁体   English   中英

使用参数的npgsql语句

[英]statement for npgsql using parameter

我使用驱动程序npgsql在sql查询中传递参数:

SqlCommand = new NpgsqlCommand();
....
SqlCommand.CommandText = "SELECT id,name FROM table1 WHERE field1=:param2 ORDER BY name;";
SqlCommand.Parameters.AddWithValue("param2", 1);

此查询正确执行并发出了必要的数据,但是只要我在“选择”部分中将参数添加到sql中,

SqlCommand.CommandText = "SELECT id,name :param1 FROM table1 WHERE field1=:param2 ORDER BY name;";
SqlCommand.Parameters.AddWithValue("param1", ",field1");
SqlCommand.Parameters.AddWithValue("param2", 1);

这给了我些废话。 理论上,对服务器的此请求应被视为

SELECT id,name,field1 FROM table1 WHERE field1=1 ORDER BY name;

但是这没有发生。 这就提出了一个问题:是否有一种方法可以使用类似的参数来动态插入字段列表?

不幸的是,Npgsql不支持您尝试执行的操作。 NpgsqlParameter值应该仅用作where子句中的参数值。 为了按预期方式动态添加字段名称,您将必须使用字符串串联手动创建查询。

希望对您有所帮助。

重写您的CommandText并添加以下内容:

foreach (NpgsqlParameter item in _Command.Parameters)
{
    comm.Parameters.AddWithValue(item.ParameterName, item.Value);
}

并解决您的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM