我有一个表单和存储过程插入表单中的数据.它工作正常,除非如果一个字段没有填写它不插入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)