vb.net - 选项严格和空

标签 vb.net

我不想在数据库中出现空字符串。当一个字段为空时,我希望它也为空。 我正在尝试更换

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/

相关文章:

c# - 删除方括号和单引号正则表达式不起作用

vb.net - 面板控件到图像

C# 到 VB - TrimStart 行为

c# - 相当于c#中的Point和Size

vb.net - 限制vb.net中列表框中的选择

.net - 更改 ComboBox 下拉列表边框的颜色

c# - 在 VB NET 或 C# 中发布 PHP 数组

vb.net - 如何在 vb.net 的文本框中获取所有时间字符串

mysql - 如何使用数据库mysql和后台 worker vb.net将数据插入到客户端上的服务器?

c# - 如何将非日期值格式化为日期值