如果表单字段为空,如何将NULL插入数据库

JBo*_*oom 16 vb.net asp.net

我有一个表单和存储过程插入表单中的数据.它工作正常,除非如果一个字段没有填写它不插入NULL它插入的SQL "".

我尝试了几种不同的方法,但似乎没有插入NULL,下面的插入仍然插入"",任何人都可以指出我正确的方向?

以下是代码所需的部分,如果您需要更多信息,请告诉我.

Dim rdr As SqlDataReader
            Dim cmdInsert As SqlCommand = New SqlCommand()
            cmdInsert.CommandText = "spPersonalDetailsInsert"
            cmdInsert.CommandType = CommandType.StoredProcedure
            cmdInsert.Connection = connSQL


            Dim firstname, lastname, address, address1, town, county, postcode As SqlParameter
            'convert to null if ""
            Dim frmFirstName As String
            If pd_first_name.Text = "" Then
                frmFirstName = Convert.DBNull
            Else
                frmFirstName = pd_first_name.Text
            End If

            firstname = New SqlParameter()
            firstname.ParameterName = "@firstname"
            firstname.SqlDbType = SqlDbType.NVarChar
            firstname.Size = 50
            firstname.Direction = ParameterDirection.Input
            firstname.Value = frmFirstName
Run Code Online (Sandbox Code Playgroud)

编辑

我测试了以下代码:

If pd_first_name.Text = "" Then
            frmFirstName = DBNull.Value
        Else
            frmFirstName = pd_first_name.Text
        End If
Run Code Online (Sandbox Code Playgroud)

但它仍然没有插入NULL所以我测试了这个:

            If pd_first_name.Text = "" Then
                Response.Write("NULL")
                address1.Value = DBNull.Value
            Else
                Response.Write("NOT NULL")
                address1.Value = pd_address1.Text
            End If
Run Code Online (Sandbox Code Playgroud)

因此,如果我在address1字段中输入任何内容,它应该写入NULL屏幕,但它总是写入NOT NULL.空表格字段等于什么?在经典的ASP中它总是如此"".

cod*_*ger 21

您需要使用DBNull.Value

            If String.IsNullOrEmpty(pd_first_name.Text.ToString().Trim) = true Then
                frmFirstName = DBNull.Value
            Else
                frmFirstName = pd_first_name.Text
            End If
Run Code Online (Sandbox Code Playgroud)