我正在创建一个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
如何处理在窗体上留空的字段?
答案 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()