当我插入具有字典参数的表的值并且发生了某些异常时,npgsql不会清楚地返回SQL查询。例如:
伪代码:
Dictionary<string, object> params = new Dictionary <string, object>();
string sql: "insert into bla values (:item1)";
params.Add ("item1", 'bla bla');
ExecuteNonQuery (sql);
示例代码块:
using (NpgsqlCommand cmd = new NpgsqlCommand("insert into foo values (:TEST)", NDIS_DB.CheckConn(NDIS_DB.nDBConnection)))
{
cmd.Parameters.Add(new NpgsqlParameter<string>("TEST",
NpgsqlDbType.Varchar));
cmd.Parameters[0].Value = "null \0 null";
cmd.ExecuteNonQuery();
}
}
然后我得到这样的错误:
数据库异常:22021:编码“ UTF8”的字节序列无效:0x00。查询==>插入foo值($ 1)
使用npgsql 2.2.5之前,我收到了这样的错误:
数据库异常:22021:编码“ UTF8”的字节序列无效:0x00。查询==>插入foo值(“ null \ 0 null”)
如果出现插入语句错误(例如unicode问题),则会出现类似错误;
数据库异常:插入bla值($ 1);
当我使用npgsql 2.2.5时,出现类似错误:
数据库例外:将值插入bla值('bla bla');
为什么npgsql对我隐藏字典参数值? :)
您必须像这样向查询提供列和值。