Npgsql 4.0没有明确返回字典参数

问题描述 投票:0回答:1

当我插入具有字典参数的表的值并且发生了某些异常时,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对我隐藏字典参数值? :)

c# postgresql npgsql
1个回答
0
投票

您必须像这样向查询提供列和值。

© www.soinside.com 2019 - 2024. All rights reserved.