有没有办法获得NpgsqlCommand的完整命令文本?

时间:2015-08-13 20:20:57

标签: postgresql npgsql

使用这样的代码:

string strCommand = "SELECT * FROM \"MyDataBase\".\"vwUsers\" "
strCommand += "WHERE name LIKE '%' || :name || '%' ";
strCommand += "ORDER BY name ASC LIMIT :page_limit OFFSET :row_offset";

NpgsqlCommand cCommand = new NpgsqlCommand(strCommand);

cCommand.Parameters.Add(new NpgsqlParameter("name", NpgsqlDbType.Text));
cCommand.Parameters[0].Value = strName;
cCommand.Parameters.Add(new NpgsqlParameter("page_limit", NpgsqlDbType.Integer));
cCommand.Parameters[1].Value = nPageAmount;
cCommand.Parameters.Add(new NpgsqlParameter("row_offset", NpgsqlDbType.Integer));
cCommand.Parameters[2].Value = nRowOffset;

有没有办法获取命令字符串的全文,并将所有参数插入其中?

2 个答案:

答案 0 :(得分:2)

不。原因是因为Npgsql 3.0参数不是简单地在字符串中替换; Npgsql实际上使用参数占位符发送SQL,并以单独的消息和二进制编码方式传输参数。换句话说,SQL查询可以作为带有参数的文本在任何地方都没有意义。

(注意:在Npgsql 2.2中,客户端参数绑定是针对未准备好的消息完成的,所以这在理论上是可行的。)

答案 1 :(得分:0)

尝试此cCommand.CommandText

参考Npgsql.NpgsqlCommand

enter image description here