我累了檢查DBNull的,所以我寫了一個函數。根據您使用的數據庫的類型,這取決於實際情況,但爲了提高效率,您可能需要使用StringBuilder類而不是字符串連接。
如果使用參數化查詢看到這個link一個非常基本的介紹瞭如何使用參數化查詢與訪問,您將能夠直接插入特殊的DBNull值:
Dim myConnection As New OleDbConnection(DBConnection)
Dim Cmd As OleDbCommand = New OleDbCommand()
Cmd.CommandText = "INSERT INTO dbTable (ItemNumber, QuoteNumber, ItemDescription, Details, Price) VALUES (@ITN, @QN, @ITD, @DET, @PR)"
Cmd.Parameters.Add(New OleDbParameter("@ITN", OleDbType.VarChar)).Value = CheckDBNull(ITN)
Cmd.Parameters.Add(New OleDbParameter("@QN", OleDbType.VarChar)).Value = CheckDBNull(QN)
Cmd.Parameters.Add(New OleDbParameter("@ITD", OleDbType.VarChar)).Value = CheckDBNull(ITD)
Cmd.Parameters.Add(New OleDbParameter("@DET", OleDbType.VarChar)).Value = CheckDBNull(DET)
Cmd.Parameters.Add(New OleDbParameter("@PR", OleDbType.VarChar)).Value = CheckDBNull(PR)
DBConnection.Open()
Cmd.ExecuteNonQuery()
這也有利於避免令人討厭的SQL注入。就像我提到的,取決於數據庫使用的是你可能需要使用SqlParameter
& SqlDbType
與OleDbParameter
& OleDbType
但CheckDBNull功能可以是簡單的,如下:
Private Function CheckDBNull(ByVal s As String) As Object
If Not s Is Nothing And s.Length > 0 Then
Return s
Else
Return System.DBNull.Value
End If
End Function
我希望這有助於。請注意,這些參數中的一些僅用作示例(myConnection,Cmd,dbTable),因爲您沒有提供數據庫信息: