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