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

Is there a way to get the full command text of an NpgsqlCommand?

使用这样的代码:

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;

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

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

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

试试这个 cCommand.CommandText

引用Npgsql.NpgsqlCommand