【问题标题】:having this error An unhandled exception of type 'System.Data.OleDb.OleDbException' occurred in System.Data.dll出现此错误 System.Data.dll 中发生“System.Data.OleDb.OleDbException”类型的未处理异常
【发布时间】:2014-04-08 13:01:57
【问题描述】:

我正在做我最后一年的项目,我正在做一个基于 VB.net 和 Access 数据库的库存控制系统。我在调试系统时不断出现此错误。

System.Data.dll 中出现“System.Data.OleDb.OleDbException”类型的未处理异常 附加信息:INSERT INTO 语句中的语法错误。

以下是我的代码中存在错误的部分。表单中的这段代码允许我将数据添加到数据库中。

 cmd.CommandText = "INSERT INTO Product(Item ID, Item Name, Item Type, Quantity, Min Shelf Stock, Purchase Price, Note) " & _
                        " VALUES (" & Me.txtItemID.Text & ",'" & Me.txtItemName.Text & "','" & _
                        Me.cboItemType.Text & "','" & Me.txtQuantity.Text & "','" & _
                        Me.txtMinShelfStock.Text & "','" & Me.txtPurchasePrice.Text & "','" & _
                        Me.txtNote.Text & "')"
        cmd.ExecuteNonQuery()

【问题讨论】:

  • 使用参数避免SQL注入。您需要将字段名称括在括号中并在其中包含空格:[Item ID]。
  • 您需要的方括号是方括号 [Item ID]、[Item Name] 等...正如 Lars 指出的那样,使用 Params 或者您对 SQL 注入持开放态度......
  • 请您用解决方案重新编写代码。我已经尝试过,但仍然出现错误。

标签: vb.net ms-access


【解决方案1】:

cmd.ExecuteNonQuery()上放一个断点,复制cmd.CommandText,直接在Access中执行。这会告诉你你的查询出了什么问题

修复查询后,开始使用命令参数。下面的链接解释了如何做参数

http://msdn.microsoft.com/en-us/library/system.data.oledb.oledbcommand.parameters(v=vs.110).aspx

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多