我有一个文本框(txtOrderNum),您输入一个'命令'编号并更新用户字段'基于在另一个文本框(txtDate)中生成的日期,我想验证“订单”和“订单”。输入的号码与“订单”匹配。数据库中的数字,然后更新' UserField1'只有它的NULL,如果它不匹配,那么什么也不做。
我的目标是,我不想覆盖Userfield1中已有的数据,我想确保更新正确的订单'存在的数字。
****我已根据以下建议更新了我的代码,我只需要验证是否订购'数字存在并匹配在文本框中输入的订单号,然后运行更新查询。 (还需要参数化查询,我有一些想法,但可以使用一些帮助)****
Public Sub executequery(ByVal query As String)
Try
Dim cmd As New SqlCommand(query, conn)
conn.Open()
If (conn.State = ConnectionState.Open) Then
cmd.ExecuteNonQuery()
conn.Close()
Else
MessageBox.Show("Check Connection")
conn.Close()
End If
Catch ex As Exception
MsgBox(ex.ToString)
Return
Finally
conn.Close()
End Try
End Sub
'我通过文本框中的输入键调用事件(txtOrdernum)
Dim conn As New SqlConnection("My data source")
Try
Dim updatequery As String = ("UPDATE [DATA].[dbo].[Order] SET [Userfield1] = '" & txtDate.Text.Trim() & "' WHERE [order] ='" & txtOrdernum.Text.Trim() & "' AND [Userfield1] IS NULL")
If e.KeyChar = Chr(13) Then 'Chr(13)
If txtOrdernum.Text.Length >= 8 Then
'MessageBox.Show(updatequery)
executequery(updatequery)
Else
MessageBox.Show("Invalid Order Number'")
End If
Catch ex As Exception
MsgBox(ex.ToString)
Return
End Try
答案 0 :(得分:0)
正如N0Alias所述,添加" AND [UserField1] IS NULL"。
请小心构建查询的方式。构建一个像你的例子可以允许SQL注入。
你应该使用' SqlCommand.Parameters'要在查询中添加值的属性。