Vb.net上的update语句中的语法错误

时间:2014-09-09 14:15:45

标签: .net

我想从数据库中检查数据库中是否存在产品代码,如果存在,它应该更新数据库但是它在更新语句中显示错误 帮助,下面是我的代码  con = New OleDbConnection(“Provider = Microsoft.Jet.Oledb.4.0; Data Source =”& Application.StartupPath&“\ pharmacy.mdb”)             con.Open()             Dim ct1 As String =“select * from stock where code ='”& TxtCode.Text& “'”

        cmd = New OleDbCommand(ct1)
        cmd.Connection = con
        rdr = cmd.ExecuteReader()

        If rdr.Read Then

            con = New OleDbConnection("Provider=Microsoft.Jet.Oledb.4.0; Data Source=" & Application.StartupPath & "\pharmacy.mdb")
            con.Open()

            Dim cb As String = "UPDATE stock SET company = '" & CmbCompany.Text & "', Productname = '" & TxtPrdtName.Text & "',  [quantity]= quantity + '" & TxtQuantity.Text & "', unitPrice = '" & TxtunitPrice.Text & "', ddate = '" & TxtDate.Text & "', batchNo = '" & TxtBatchNo.Text & "', Type = '" & CmbType.Text & "', expDate '" & dtpExpirationDate.Text & "' where code = '" & TxtCode.Text & "'"

            cmd = New OleDbCommand(cb)

            cmd.Connection = con


            cmd.ExecuteReader()
            MessageBox.Show("Successfully updated", "Product Details", MessageBoxButtons.OK, MessageBoxIcon.Information)

            rdr.Close()
            con.Close()

1 个答案:

答案 0 :(得分:0)

请使用命令中的参数保护其免受恶意数据的侵害。请参阅示例here

最有可能的是,你目前的问题也会消失。

现在它无法帮助您,因为根据您的变量用户输入,您可能会收到任意数量的错误。

只是想象某人会将x'; DROP DATABASE; --放入您的一个文本框中。

作为快速解决方法,请删除要添加到quantity的用户输入的单引号,因为它可能是数字字段,如果设置为引号则会失败。但不要止步不前。修复你的代码。这意味着在查询中使用参数。