我不想在数据库中出现空字符串。当一个字段为空时,我希望它也为空。 我正在尝试更换
If strStreet = "" Then
cmd.Parameters("@Street").Value = DBNull.Value
Else
cmd.Parameters("@Street").Value = strStreet
End If
使用 VB If 运算符如下
cmd.Parameters("@Street").Value = If(strStreet = "", DBNull.Value, strStreet)
我从第一个 = 符号右侧所有内容下方的红色波浪线中收到以下消息。 “无法推断通用类型,并且 Option Strict On 不允许假定‘对象’。” 好的,所以我做了一点 Actor
cmd.Parameters("@Street").Value = If(strStreet = "", CObj(DBNull.Value), strStreet)
红色波浪线消失,绿色波浪线出现在 CObj 下方,表示冗余 Actor 。 我是不是该 A. 关闭 Option Strict B. 忽略绿色波浪线 C. 回到我的 If...Else...End If 或者是其他东西?? 顺便说一句,当我为某些控件的 Text 属性准备字符串时,它在另一个方向上效果很好。
strStreet = If(reader.GetValue(2) IsNot DBNull.Value, reader.GetString(2), "")
我在这里阅读了几个围绕我的问题的问题和答案,但我不太明白。 感谢您的关注。
最佳答案
不确定到底是什么触发了冗余转换警告,但使用以下扩展方法,您不应该收到警告,并且如果有很多参数,代码也更少。
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
然后你可以像这样设置你的参数值:
cmd.Parameters("@Street").Value = strStreet.GetDBNullIfEmpty
关于vb.net - 选项严格和空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46413980/