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

假设我有一个MySql存储过程,它插入一些带有一些可空字符的字段的记录.

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

command.CommandType = CommandType.StoredProcedure;

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

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

INSERT INTO mytable

(

name,

-- other 200 char fields

)

VALUES

(

NULLIF(_name, ''),

-- other 200 char fields

)

丑呃?我必须两次检查虚无/空虚.

有更好,更直接的方式吗?

更糟糕的是,对于非引用类型(即:整数),检查虚无是没有意义的,因为基本类型不能是空的(是的,我可以将整数设置为无意义的值,对于正id,将-1设置为1) ,但……).

解决方法:

如果要插入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上查看有关null-coalescing运算符的更多信息

如果你想插入空的char”你接下来:

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

标签:mysql,net,null,vb-net

来源: https://codeday.me/bug/20190827/1739259.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值