如何将空值插入数据库

时间:2011-11-17 09:55:33

标签: vb.net

我的情景,

我正在使用asp.net vb应用程序  我有一组值要插入到Database.But它们的一些字段是可选的填充

我需要检查textbox empty.if empty我不应该输入数据库的值。如何处理这个

5 个答案:

答案 0 :(得分:3)

使用Parameter的{​​{1}}集合。 (我假设你有一个MsSql数据库)。

Command

答案 1 :(得分:1)

如果使用存储过程添加到数据库,则只需将null传递给该参数即可。它必须是一个可以为null的变量类型,就像字符串一样。

答案 2 :(得分:1)

你可以像这样检查

If String.IsNullOrEmpty(TextBox1.Text.ToString().Trim) Then 
    Databasevaluetoinsert = DBNull.Value
Else
    Databasevaluetoinsert = TextBox1.Text           
End If 

答案 3 :(得分:0)

我通常使用ConvertEmptyStringToNull作为可选值。

http://www.google.com/search?q=convertemptystringtonull+asp.net

前几个链接提供了一些示例,MSDN显示了它在VB中的完成情况

答案 4 :(得分:0)

以下是我在代码中处理此问题的示例。这很长,因为我想检查数据库中可以为空的每个字段。

Dim query As String = String.Empty query& =“INSERT INTO CHANGELOG(ChangeLogId,LogType,ReleaseType,ReferenceType,ChangeType,Area,Description,Notes,Date,MajorVersion,MinorVersion,RevisionVersion,BuildVersion)” query& =“VALUES”& “(NEWID(),”&“@ LogType,@ ReleaseType,@ ReferenceType,@ ChangeType,@ Area,@ Description,@ Notes,@ Date,@ MajorVersion,@ MinVersion,@ RevisionVersion,@ BuildVersion);” 使用conn As New SqlConnection(“server = JSEN-PC \ SQLEXPRESS; Database = myDB; Persist Security Info = False; Integrated Security = True;”)     使用comm As New SqlCommand()         与comm             .Connection = conn             .CommandType = CommandType.Text             .CommandText = query

        If LogTypeComboBox.SelectedIndex = -1 Then 'Log Type: Accept Convert dbNull 
            .Parameters.AddWithValue("@LogType", SqlDbType.NVarChar).Value = DBNull.Value
        Else
            .Parameters.AddWithValue("@LogType", LogTypeComboBox.SelectedItem)
        End If
        If ReleaseComboBox.SelectedIndex = -1 Then 'Release Type: Accept Convert dbNull 
            .Parameters.AddWithValue("@ReleaseType", SqlDbType.NVarChar).Value = DBNull.Value
        Else
            .Parameters.AddWithValue("@ReleaseType", ReleaseComboBox.SelectedItem)
        End If
        If ReferenceComboBox.SelectedIndex = -1 Then 'Reference Type: Accept Convert dbNull 
            .Parameters.AddWithValue("@ReferenceType", SqlDbType.NVarChar).Value = DBNull.Value
        Else
            .Parameters.AddWithValue("@ReferenceType", ReferenceComboBox.SelectedItem)
        End If
        If ChangeComboBox.SelectedIndex = -1 Then 'Change Type: Accept Convert dbNull 
            .Parameters.AddWithValue("@ChangeType", SqlDbType.NVarChar).Value = DBNull.Value
        Else
            .Parameters.AddWithValue("@ChangeType", ChangeComboBox.SelectedItem)
        End If
        If FunctionalAreaComboBox.SelectedIndex = -1 Then 'Functional Area: Accept Convert dbNull 
            .Parameters.AddWithValue("@Area", SqlDbType.NVarChar).Value = DBNull.Value
        Else
            .Parameters.AddWithValue("@Area", FunctionalAreaComboBox.SelectedItem)
        End If
        If DescriptionTextBox.Text.Length = 0 Then 'Description: Accept Convert dbNull 
            .Parameters.AddWithValue("@Description", SqlDbType.Text).Value = DBNull.Value
        Else
            .Parameters.AddWithValue("@Description", DescriptionTextBox.Text)
        End If
        If NotesTextBox.Text.Length = 0 Then 'Notes: Accept Convert dbNull 
            .Parameters.AddWithValue("@Notes", SqlDbType.Text).Value = DBNull.Value
        Else
            .Parameters.AddWithValue("@Notes", NotesTextBox.Text)
        End If
        .Parameters.AddWithValue("@Date", DateDateTimePicker.Value.Date.ToString("yyyy-MM-dd")) 'Date: No Null conversion
        If MajorVersionTextBox.Text.Length = 0 Then 'MajorVersion: Accept Convert dbNull 
            .Parameters.AddWithValue("@MajorVersion", SqlDbType.Text).Value = DBNull.Value
        Else
            .Parameters.AddWithValue("@MajorVersion", MajorVersionTextBox.Text)
        End If
        If MinorVersionTextBox.Text.Length = 0 Then 'MinorVersion: Accept Convert dbNull 
            .Parameters.AddWithValue("@MinorVersion", SqlDbType.Text).Value = DBNull.Value
        Else
            .Parameters.AddWithValue("@MinorVersion", MinorVersionTextBox.Text)
        End If
        If RevisionVersionTextBox.Text.Length = 0 Then 'RevisionVersion: Accept Convert dbNull 
            .Parameters.AddWithValue("@RevisionVersion", SqlDbType.Text).Value = DBNull.Value
        Else
            .Parameters.AddWithValue("@RevisionVersion", RevisionVersionTextBox.Text)
        End If
        If BuildVersionTextBox.Text.Length = 0 Then 'BuildVersion: Accept Convert dbNull 
            .Parameters.AddWithValue("@BuildVersion", SqlDbType.Text).Value = DBNull.Value
        Else
            .Parameters.AddWithValue("@BuildVersion", BuildVersionTextBox.Text)
        End If
    End With
    Try
        conn.Open()
        comm.ExecuteNonQuery()
    Catch ex As SqlException
        MessageBox.Show(ex.Message.ToString(), "Error Message")
    End Try
End Using

结束使用