用户将字段留空时写入SQL数据库时出错

时间:2012-10-15 23:47:46

标签: sql vb.net visual-studio-2010

我正在创建一个Windows表单,只要我们添加新员工,用户就会填写该表单。如果我完全填写表单,我可以写入数据库,但如果一个字段留空,我会收到错误。在SQL表中,所有行都设置为允许空值,并且我可以通过SQL Server Management Studio插入空值而没有任何问题。

为了简洁起见,我已经删除了十几个字段,但如果我用我正在使用的代码替换此代码,则会出现同样的错误。

Dim DBConnection As New SqlClient.SqlConnection
Dim cmd As New SqlClient.SqlCommand
Try
WOWConnection.ConnectionString = "Server=MyServerName;Database=Employee Database;Trusted_Connection=TRUE;"
WOWConnection.Open()
cmd.Connection = WOWConnection
cmd.CommandText = "INSERT INTO [dbo].[Employees]([FirstName],[LastName]) VALUES (@FirstName,@LastName)"
cmd.Parameters.AddWithValue("@FirstName", Me.EMP_FirstName.Text)
cmd.Parameters.AddWithValue("@LastName", Me.EMP_LastName.Text)
cmd.ExecuteNonQuery()
MsgBox("Sucess!")
Catch ex As Exception
MsgBox("error")
Finally
DBConnection.Close()
End Try

如何处理在窗体上留空的字段?

1 个答案:

答案 0 :(得分:1)

在将值传递给SQL之前测试插入的值。 请注意,SQL中的NULL值和Empty不同。

  

cmd.CommandText =“INSERT INTO [dbo] .Employees VALUES     (@名字,姓氏@)“

     

如果不是string.IsNullOrEmpty(Me.EMP_FirstName.Text)那么

      cmd.Parameters.AddWithValue("@FirstName", Me.EMP_FirstName.Text)
     

否则

      cmd.Parameters.AddWithValue("@FirstName", DBNull.Value)
     

ENDIF

     

cmd.ExecuteNonQuery()