为了账号安全,请及时绑定邮箱和手机立即绑定

Npgsql 4.0 参数和空值

Npgsql 4.0 参数和空值

C#
慕运维8079593 2021-10-24 20:35:47
使用 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();

}


查看完整回答
反对 回复 2021-10-24
  • 2 回答
  • 0 关注
  • 250 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信