插入语句VB中的SQL错误

时间:2015-01-01 20:30:04

标签: sql vb.net visual-studio-2010 sql-insert

我试图插入我的ORDERS表中的特定列,使用文本框输入并使用另一个文本框输入查找特定列。

Private Sub addCardBtn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles addCardBtn.Click
        custConn.Open()

        'New sql Insert statement'
        Dim sqlStatement As String = "insert into ORDERS (CARD_NUMBER) ('" + cardNoTxt.Text + "') WHERE ORDER_ID" & orderIDTxt.Text
        commd = New OleDbCommand(sqlStatement, custConn)

        commd.ExecuteNonQuery()

        'If record is added successfully show message box'
        MessageBox.Show("Card Number Saved", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information)

        custConn.Close()

    End Sub

1 个答案:

答案 0 :(得分:3)

也许,您想要UPDATE查询?

Dim sqlStatement As String = "UPDATE ORDERS SET CARD_NUMBER = :CARDNO
                                   WHERE ORDER_ID = :ORDERID";

始终使用绑定变量。避免SQL * iInjection。

简要解释什么是SQL*Injection

OR 1=1添加到任何逻辑表达式将始终给出TRUE结果(WHERE name = 'Mahesh' or 1=1将获取表中的所有行...)。因此,当您构建SQL语句时,就像这样,您暴露了一个被篡改的漏洞,以便进行此类操作。

commd = New OleDbCommand(sqlStatement, custConn)
commd.Parameters.Add("CARDNO", OracleType.VarChar).Value = cardNoTxt.Text
commd.Parameters.Add("ORDERID", OracleType.VarChar).Value = orderIDTxt.Text

commd.ExecuteNonQuery()

通过这种方式绑定vales,您的查询是安全的,而不是在运行时可修改。只是绑定变量的值会发生变化。它还改进了DBMS中的查询缓存。并且还提高了性能。