使用参数的NPGSQL语句

本文关键字:NPGSQL 语句 参数 | 更新日期: 2023-09-27 18:10:56

我使用驱动程序npgsql:

传递sql查询中的参数
SqlCommand = new NpgsqlCommand();
....
SqlCommand.CommandText = "SELECT id,name FROM table1 WHERE field1=:param2 ORDER BY name;";
SqlCommand.Parameters.AddWithValue("param2", 1);

此查询正确执行并发出必要的数据,但是一旦我在"select"部分向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语句

不幸的是,Npgsql不支持您正在尝试做的事情。NpgsqlParameter值应该只用作where子句中的参数值。为了按照您的意愿动态地添加字段名,您必须通过使用字符串连接来手动创建查询。

重写你的CommandText并添加这个:

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

解决你的问题