我想从数据库中检查数据库中是否存在产品代码,如果存在,它应该更新数据库但是它在更新语句中显示错误 帮助,下面是我的代码 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()
答案 0 :(得分:0)
请使用命令中的参数保护其免受恶意数据的侵害。请参阅示例here。
最有可能的是,你目前的问题也会消失。
现在它无法帮助您,因为根据您的变量用户输入,您可能会收到任意数量的错误。
只是想象某人会将x'; DROP DATABASE; --
放入您的一个文本框中。
作为快速解决方法,请删除要添加到quantity
的用户输入的单引号,因为它可能是数字字段,如果设置为引号则会失败。但请不要止步不前。修复你的代码。这意味着在查询中使用参数。