【发布时间】:2011-01-18 09:59:08
【问题描述】:
我有一个表单和从表单插入数据的存储过程。它工作正常,只是如果一个字段没有填写,它不会将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
编辑
我测试了以下代码:
If pd_first_name.Text = "" Then
frmFirstName = DBNull.Value
Else
frmFirstName = pd_first_name.Text
End If
但它仍然没有插入 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
因此,如果我在address1 字段中没有输入任何内容,它应该将NULL 写入屏幕,但它始终会写入NOT NULL。一个空的表单域等于什么?在经典 ASP 中,它总是""。
【问题讨论】: