【问题标题】:Validate SQL data and check for Null验证 SQL 数据并检查 Null
【发布时间】: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 感谢您的反馈,我对查询构建没有真正的经验,我会尝试发布我正在使用的代码。

标签: sql vb.net


【解决方案1】:

如 N0Alias 所述,添加“AND [UserField1] IS NULL”。

请注意构建查询的方式。像您的示例一样构建一个可以允许 SQL 注入。

您应该使用“SqlCommand.Parameters”属性将值添加到您的查询中。

【讨论】:

  • 谢谢 N0ALIAS 和我饿了,我已经设法只更新包含空值的记录,正如我所提到的,我想确保根据输入更新正确的“订单”号在订单号的文本框中。
猜你喜欢
  • 1970-01-01
  • 2013-07-08
  • 1970-01-01
  • 2021-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-28
  • 2021-09-26
相关资源
最近更新 更多