我是VB.net的新手。我在将VB.net文本框中的空值传递给sql查询字符串时遇到问题。这是我目前的代码:
Dim sqlstatement as string
If generic_jobTxt.Text == '' Then
generic_jobTxt = DBNull.Value
End If
sqlstatement = "Insert into Job_db (generic_job) values('"+generic_jobTxt+"')"
如何将空值传递给sql字符串,这样当我运行sql时,我会在generic_job列中获得null值。谢谢!
答案 0 :(得分:2)
首先,永远不要连接字符串来构建你的sql查询,而是使用参数化查询。否则你会打开sql注入和其他问题。 在这种情况下,你也不需要摆弄撇号。但是你应该使用正确的类型。
假设您使用的是SQL-Server,列类型为varchar
:
Dim sqlstatement = "Insert into Job_db (generic_job) values(@generic_job)"
Using con As New SqlConnection("connection-string")
Using insertCommand = New SqlCommand(sqlstatement, con)
Dim sqlParam = New SqlParameter("@generic_job", SqlDbType.VarChar)
Dim jobTxt As String = generic_jobTxt.Text.Trim()
sqlParam.Value = If(String.IsNullOrEmpty(jobTxt), Nothing, jobTxt)
insertCommand.Parameters.Add(sqlParam)
con.Open()
Dim inserted As Int32 = insertCommand.ExecuteNonQuery()
End Using
End Using