【发布时间】:2012-01-11 20:08:30
【问题描述】:
我想在数据库中插入记录,但是在插入之前,它必须先检查数据库中插入的值是否已经存在。现在我的问题是,即使该值仍然不存在,我也无法插入到数据库中。
这是我的代码:
Dim check As New SqlCommand
Dim sqlcheck As String = "SELECT SerialNumber FROM EquipmentDetail WHERE SerialNumber = '" & TextBox1.Text & "'"
connection.Open()
check.Connection = connection
check.CommandText = sqlcheck
Dim read As SqlDataReader = check.ExecuteReader()
If read.HasRows Then
While read.Read()
If read("SerialNumber").ToString() = TextBox1.Text Then
MessageBox.Show(read("SerialNumber").ToString() & " was already added")
Else
cmd.Connection = connection
cmd.CommandText = "INSERT INTO EquipmentDetail (SerialNumber, BoxNumber, FATTNumber, FaultTicketNumber, Description, ProductCode)" &
"VALUES('" & TextBox1.Text & "', '" & TextBox2.Text & "', '" & TextBox3.Text & "', '" & TextBox4.Text & "', '" & TextBox6.Text & "', '" & ComboBox1.Text & "')"
cmd.ExecuteNonQuery()
MessageBox.Show("Equipment successfully added.", "Equipment", MessageBoxButtons.OK)
TextBox1.Text = ""
TextBox2.Text = ""
TextBox3.Text = ""
TextBox4.Text = ""
TextBox6.Text = ""
TextBox1.Focus()
connection.Close()
End If
End While
End If
read.Close()
【问题讨论】:
-
当您尝试执行 INSERT 语句时,您返回了什么错误?可能错误与数据库中已经存在的序列号无关。
-
read.HasRows 为假时怎么办?您最好使用 "SELECT Count(*) FROM FROM EquipmentDetail WHERE SerialNumber = '" & TextBox1.Text & "'" *** 但使用 TextBox1.Text 的参数以避免注入攻击。如果您希望我提供代码示例,请告诉我。
标签: sql vb.net visual-studio-2010