我有一个表单和存储过程插入表单中的数据.它工作正常,除了如果一个字段未填写,它不会在sql中插入一个NULL插入“”.
我尝试了几种不同的方式,但是似乎没有插入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它总是“”.
解决方法
你需要使用
DBNull.Value
- If String.IsNullOrEmpty(pd_first_name.Text.ToString().Trim) = true Then
- frmFirstName = DBNull.Value
- Else
- frmFirstName = pd_first_name.Text
- End If