使用 Npgsql 传递空值如下所示:using (NpgsqlCommand cmd = new NpgsqlCommand("insert into foo values (:TEST)", conn)){ cmd.Parameters.Add(new NpgsqlParameter("TEST", NpgsqlDbType.Varchar)); cmd.Parameters[0].Value = DBNull.Value; cmd.ExecuteNonQuery();}哪个工作正常。新的 Npgsql 4.0 文档建议使用强数据类型声明参数,如下所示:using (NpgsqlCommand cmd = new NpgsqlCommand("insert into foo values (:TEST)", conn)){ cmd.Parameters.Add(new NpgsqlParameter<string>("TEST", NpgsqlDbType.Varchar)); cmd.Parameters[0].Value = DBNull.Value; cmd.ExecuteNonQuery();}当传递 DBNull.Value 时,会抛出一般异常:无法将“System.DBNull”类型的对象转换为“System.String”类型。一切仍然适用于新的无装箱参数,但新语法似乎有意义,我们想使用它……但是如何解决这种数据类型断开连接的问题?上面的例子是一个字符串。我认为这也会影响数字和日期。
2 回答
牛魔王的故事
TA贡献1830条经验 获得超3个赞
我遇到了这个问题,现在我没有得到例外
这里我如何为 Postgres 函数声明参数:
string test;
using (NpgsqlCommand cmd = new NpgsqlCommand("insert into foo values (:TEST)", conn))
{
cmd.Parameters.AddWithValue("TEST", NpgsqlTypes.NpgsqlDbType.Varchar, (object)test?? DBNull.Value);
cmd.ExecuteNonQuery();
}
- 2 回答
- 0 关注
- 250 浏览
添加回答
举报
0/150
提交
取消