【发布时间】:2017-08-18 17:26:42
【问题描述】:
我有一个文本框(txtOrderNum),您可以在其中输入“订单”编号并根据另一个文本框(txtDate)中生成的日期更新“用户字段”,我想验证输入的“订单”编号是否匹配数据库中的“订单”编号,然后仅在其为 NULL 时更新“UserField1”,如果不匹配则不执行任何操作。
我的目标是,我不想覆盖 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
'My call Event via Enter Key inside Textbox (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
【问题讨论】:
-
将此添加到您的子句中:“AND [UserField1] IS NULL” 但是您的代码存在更多问题。
-
我知道,呵呵,我必须参数化查询,但我想了解它的要点。
-
啊!这很容易受到 sql 注入攻击。
-
@Joel 感谢您的反馈,我对查询构建没有真正的经验,我会尝试发布我正在使用的代码。