0

我想要做的是查找在分配给 Valor 的 textbox4 上输入的文本,如果找到则显示,下面的代码正在工作,但我想使用参数化查询(安全原因),我不知道如何修改我的现有的代码来完成它。(例如,123-A)

我将查找“123-A”,但在当前代码中出现“无效列 A”错误,我将查找“123-A”的 SQL 列是“ID_LALTest”

Try
            ' *--------search by Unique ID-------*
            Dim CON As New SqlConnection
            Dim DA As New SqlDataAdapter
            Dim DS As New DataSet
            Dim SQL As String
            Dim Valor As String
            Valor = TextBox4_SearchData_LALTest.Text

            CON.ConnectionString = "not displayed"
            CON.Open()

            SQL = "SELECT ID_LALTest, LALTest_SeqRef_CH, LALTest_SeqRef_Year FROM LALTest WHERE ID_LALTest=@Valor"
            DA = New SqlDataAdapter(SQL, CON)
            DA.SelectCommand.Parameters.AddWithValue("@Valor", Valor)
            DA.SelectCommand.ExecuteNonQuery()
            DA.Fill(DS, 0)


            If DS.Tables(0).Rows.Count > 0 Then
                ' *--------Found, Display Data Grid-------*
                Label2_SearchData_LALTest.Visible = False
                GridView2_SearchData_LALTest.Visible = True
                GridView3_SearchData_LALTest.Visible = True
                GridView1_SearchData_LALTest.Visible = False

            Else
                Label2_SearchData_LALTest.Text = "Record Not Found"
                Label2_SearchData_LALTest.Visible = True
                GridView2_SearchData_LALTest.Visible = False
                GridView3_SearchData_LALTest.Visible = False
                GridView1_SearchData_LALTest.Visible = False

            End If
            con.dispose()
        Catch ex As Exception
            MsgBox(Err.Description)
        End Try
4

1 回答 1

0

是的,你对 sql-injection 很开放。取决于不同的数据库(您只有 SQL,但它是 SQL-Server、MySQL、Access/SQL 数据库等)。

无论如何,它离你所拥有的并不太远。不专攻VB,我会给你一些伪代码......

更改您的查询,并为您要从输入中应用的“变量”放入一个“占位符”... 例如:

"select (your fields) from (yourtable) where ID_LALTest = @parmValor"

然后,将参数添加到为数据适配器创建的 sql 命令中......类似于......

DA.SelectCommand.Parameters.Add( "@parmValor", theInputFromYourVariable );

现在,如果您有多个要应用的条件,只需继续添加“@someParm”值并以与查询中存在的相同顺序添加参数......我过去从其他人那里听说过,这只是与查询不匹配的参数的序数序列可能/确实会导致问题……例如数据类型期望。

于 2013-03-06T21:09:59.350 回答