使用 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”类型。
一切仍然适用于新的无装箱参数,但新语法似乎有意义,我们想使用它……但是如何解决这种数据类型断开连接的问题?
上面的例子是一个字符串。我认为这也会影响数字和日期。
牛魔王的故事
相关分类