加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – VB.Net IIf函数添加SqlParameter

发布时间:2020-12-16 06:25:05 所属栏目:asp.Net 来源:网络整理
导读:我正在重写这个长INSERT语句和参数,看起来像这样: cmd.Parameters.AddWithValue("@Website",General.fnSQLNullValues(tWebsite.Text)) 其中General.fnSQLNullValues是这样的: Public Shared Function fnSQLNullValues(ByVal sValue As Object,Optional ByV
我正在重写这个长INSERT语句和参数,看起来像这样:

cmd.Parameters.AddWithValue("@Website",General.fnSQLNullValues(tWebsite.Text))

其中General.fnSQLNullValues是这样的:

Public Shared Function fnSQLNullValues(ByVal sValue As Object,Optional ByVal Len As Integer = 999999) As Object
            If sValue Is Nothing Then Return DBNull.Value
            fnSQLNullValues = IIf(sValue.ToString.Length = 0,DBNull.Value,Left(sValue.ToString(),Len))
        End Function

我根本不喜欢这个,似乎很多代码都是这样做的,

cmd.Parameters.AddWithValue("@Website",If(tWebsite.Text,DBNull.Value))

根据我的理解,如果tWebsite.Text为null或未被接受,则DBNull.Value中的一行代码将替换tWebsite.Text作为值,在我看来,它与General中的其他函数做同样的事情.这是正确的,是一种比另一种更好的方式吗?

此外,我从第二种方式得到警告:“不能推断常见类型;对象假设”,但在我看来,第一种方式是使用通用对象,所以我不知道我是否应该忽略这个警告

解决方法

在代码中使用数据库参数时,字符串有点棘手.如果您有一个空字符串,它将传递一个空字符串值以便插入.但是,如果设置将字符串设置为Nothing值,则会将NULL值插入数据库.否则它将设置一个空字符串.

理想情况下,您的数据层顶部会有某种业务层,它会检查您的tWebsite.Text值,并将Nothing或Text值传递给设置参数的函数.这与您上面的第一个代码示例略有不同.这样,您的数据层只需执行以下命令:

cmd.Parameters.AddWithValue("@Website",valueWebsite))

……没有必要麻烦.

对于其他数据类型(例如整数,小数等),请查看Nullable Types并使用它们.它们使事情变得非常容易.默认情况下,它们初始化为Nothing,因此如果您没有为它赋值(从输入框中),则值保持为Nothing,并且将在数据库中执行正确的NULL插入.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读