我不想在数据库中使用空字符串。当一个字段为null时,我希望它为null。 我想替换
If strStreet = "" Then
cmd.Parameters("@Street").Value = DBNull.Value
Else
cmd.Parameters("@Street").Value = strStreet
End If
使用VB If Operator如下
cmd.Parameters("@Street").Value = If(strStreet = "", DBNull.Value, strStreet)
我从第一个=符号右边的所有内容中得到以下消息。 “无法推断出常见的类型,Option Strict On不允许假定'对象'。” 好的,所以我做了一点演员
cmd.Parameters("@Street").Value = If(strStreet = "", CObj(DBNull.Value), strStreet)
红色的波浪形状消失了,在CObj下出现了一个绿色的波浪形,说多余的Cast。 我是不是该 A.关闭Option Strict B.忽略绿色波浪形 C.回到我的If ... Else ...结束如果 或者是其他东西?? 顺便说一句,当我为某些控件的Text属性准备字符串时,它在另一个方向上工作得很好。
strStreet = If(reader.GetValue(2) IsNot DBNull.Value, reader.GetString(2), "")
我已经阅读了几个问题和答案,这些问题正在解决我的问题,但我无法理解。 感谢您的关注。
答案 0 :(得分:0)
Null
上的{p> vb.net
为Nothing
..因此,您可以使用以下代码:
这在MYSQL数据库上运行良好:
cmd.Parameters.Add("@Street", MySqlDbType.String).Value = If(strStreet = "" OrElse strStreet = Nothing, Nothing, strStreet)
您还可以使用:
cmd.Parameters.Add("@Street", MySqlDbType.String).Value = If(String.IsNullOrEmpty(strStreet), CObj(System.DBNull.Value), strStreet)
注意:强>
在database
中,您必须检查该字段是否包含Null
。如果没有,它可能会失败。
将使用
运行Option Script On
答案 1 :(得分:0)
不确定触发冗余强制转换警告到底是什么,但是使用以下扩展方法时,如果有许多参数,则不应该收到警告并且代码也会少。
mvn test
然后您可以像这样设置参数值:
Imports System.Runtime.CompilerServices
Module Extensions
<Extension>
Public Function GetDBNullIfEmpty(s As String) As Object
If String.IsNullOrEmpty(s) Then
Return DBNull.Value
Else
Return s
End If
End Function
End Module