.NET 和 MySql 参数,AddWithValue NULL 变量,如何避免检查空值

标签 .net mysql vb.net null

假设我有一个 MySql 存储过程,它插入一条包含一些可为空的 CHAR 字段的记录。

在 VB.NET 中,如果我不检查 Nothing(或其他语言中的 Null),我会从 db 驱动程序中得到一个异常,所以我写:

command.CommandType = CommandType.StoredProcedure;
command.Parameters.AddWithValue("_name", if(name Is Nothing, "", name)).Direction = ParameterDirection.Input;

这是我不喜欢的第一件事;我想传递 Nothing 并且驱动程序知道它必须将 NULL 放入 Db 中。但是,在存储过程中,我必须检查该字段是否为空:

INSERT INTO mytable
(
    name,
-- other 200 char fields
)
VALUES
(
    NULLIF(_name, ''),
-- other 200 char fields
)

丑吗?我必须检查两次是否为虚无/空虚。 有没有更好、更直接的方法?

更糟糕的是,对于非引用类型(即整数),检查是否为空是没有意义的,因为原始类型不可能是空的(是的,我可以将整数设置为无意义的值,比如 -1一个肯定的 id,但是......)。

最佳答案

如果要插入 NULL,请使用 next:

command.Parameters.AddWithValue("_name", name ?? DBNull.Value);

意思是一样的

if(name != null)
    command.Parameters.AddWithValue("_name", name);
else
    command.Parameters.AddWithValue("_name", DBNull.Value);

MSDN 上查看有关空合并运算符的更多信息

如果你想插入空字符 '' 你下一步:

command.Parameters.AddWithValue("_name", name ?? '');

关于.NET 和 MySql 参数,AddWithValue NULL 变量,如何避免检查空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3718755/

相关文章:

mysql - VB.NET | MySQL : A fatal error encountered during command executation

c# - 如何确保 Windows 窗体应用程序的数据库安全?

c# - 加密引擎

php - 如何使用 php 和 mysql 更改很多项目

mysql - 你能帮忙调整查询吗

vb.net - 将标准输出从进程(msxsl.exe)重定向到VB.NET中的字符串

asp.net - 即使ReflectionPermission关闭,你还能使用反射吗?

java - 需要 XSD 日期格式

mysql - 如何将 DATE 列默认为今天的日期

c - 单个变量的第二个字节的值