首页 > 解决方案 > 当我在 Visual Basic 中更新其他字段时,如何保持 SQL tble 字段不更新?

问题描述

我有一个类允许我更新 sql 表字段。我要更新的字段之一是文件名。以下函数根据某些条件返回文件名。我遇到的问题是else条款。

Public Function checkFileNamesForUpdate(ByVal file As FileUpload, ByVal firstName As String, ByVal lastName As String, ByVal text As String, ByVal hyper As HyperLink) As String
    If (file.HasFile) Then
        Return firstName.ToLower + "_" + lastName.ToLower + "_" + text
    ElseIf (Not file.HasFile AndAlso hyper.NavigateUrl <> "") Then
        Return firstName.ToLower + "_" + lastName.ToLower + "_" + text
    Else
        Return Nothing
    End If
End Function

Return Nothing不会更新FileName. 我希望它NULL有价值。所以我用过Return DBNull.Value.ToString()。但这不会添加 null 而是空白字段。

有什么我缺少的方法吗?

标签: .netvb.net

解决方案


您可以在函数的 Else 部分中返回 String.Empty 的 ""。在调用代码中检查 String.IsNullOrEmpty 并设置参数的值,如图所示。

Private Sub OPCode()
    Dim fileUp As New FileUpload
    Dim h As New Hyperlink
    Dim ReturnedString As String = checkFileNamesForUpdate(fileUp, "John", "Smith", "Some text", h)
    Using cn As New SqlConnection("Your connection string"),
            cmd As New SqlCommand("Update SomeTable Set FileName = @FileName;")
        cmd.Parameters.Add("@FileName", SqlDbType.VarChar, 100)
        If String.IsNullOrEmpty(ReturnedString) Then
            cmd.Parameters("@FileName").Value = DBNull.Value
        Else
            cmd.Parameters("@FileName").Value = ReturnedString
        End If
        cn.Open()
        cmd.ExecuteNonQuery()
    End Using
End Sub

推荐阅读