oledb 异常未处理

Posted

技术标签:

【中文标题】oledb 异常未处理【英文标题】:oledb exception was unhandled 【发布时间】:2013-10-30 08:03:21 【问题描述】:

我得到 ,我找不到它发生的原因,谁能帮我记下它

i 粗体和斜体错误代码

异常显示如下查询表达式'Product Name=''Chair''中的语法错误(缺少运算符)。

谢谢

导入 System.Data.OleDb

公开课形式1

    '声明可验证的

    将 itemName 调暗为字符串
    Dim itemprice, average, rows, index, totalPrice
    将 foundItem 调暗为布尔值
    Dim conctionString As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=E:\Education\BIT\Assainment\L1S2\VB\Assesment 2\Stock.accdb"
    暗淡阅读器作为 OleDbDataReader
    Dim olDataConnection 作为新的 OleDbConnection(connectionString)
    Dim olCommand 作为 OleDbCommand


    Private Sub Form1_Load(ByVal sender As System.Object, e As EventArgs) 处理 MyBase.Load
        '将数据加载到组合框

        总价格 = 0
        行 = 0

        '开始连接
        olDataConnection.Open()
        olCommand = New OleDbCommand("SELECT * FROM Stock", olDataConnection)
        阅读器 = olCommand.ExecuteReader()
        而(阅读器。读取())
            comDataStock.Items.Add(DirectCast(reader("Product Name"), String) & "-Rs." & DirectCast(reader("Price"), Integer) & " /= ")
            totalPrice = totalPrice + DirectCast(reader("Price"), Integer)
            行 = 行 + 1
        结束时

        尝试
            平均值 = totalPrice / 行
            lblAverResult.Text = "卢比。" & average.ToString() & " /="
        抓住前任作为例外
            MessageBox.Show("Somethingg Wrong", "Error", MessageBoxButtons.OK, MessageBoxIcon.Information)
        结束尝试
        olDataConnection.Close()

    结束子

    Private Sub btnDelete_Click(sender As Object, e As EventArgs) 处理 btnDelete.Click
        olDataConnection.Open()
        olCommand = New OleDbCommand("DELETE FROM Stock WHERE Product Name=''" & comDataStock.SelectedItem.ToString().Split("-").GetValue(0).ToString() & "'", olDataConnection)
        reader = olCommand.ExecuteReader()
        olDataConnection.Close()
        comDataStock.Items.Clear()
        总价格 = 0
        行 = 0

         olDataConnection.Open()
        olCommand = (New OleDbCommand("SELECT FROM Stock ", olDataConnection))
        阅读器 = olCommand.ExecuteReader()

        而(阅读器。读取())
            comDataStock.Items.Add(DirectCast(reader("Price"), String) & "-Rs." & DirectCast(reader("Price"), Integer) & " /= ")
            totalPrice = totalPrice + DirectCast(reader("Price"), Integer)
            行 = 行 + 1

        结束时

        尝试
            平均值 = totalPrice / 行
            lblAverResult.Text = "Rs." & average.ToString() & " /="
        抓住前任作为例外
            MessageBox.Show(ex.ToString())
        结束尝试
        olDataConnection.Close()

    结束子
结束类

【问题讨论】:

在该行设置一个中断,看看是否所有这些修改都适用于合法文本 【参考方案1】:

如果您的字段名称中包含空格,例如Product Name,则必须将该名称括在方括号中。

olCommand = New OleDbCommand("DELETE FROM Stock WHERE [Product Name]='" & comDataStock.SelectedItem.ToString().Split("-").GetValue(0).ToString() & "'", olDataConnection)

【讨论】:

有趣的是,我的眼睛直接跳过了那个,直接看到了右边无关紧要的单引号(但我看到你也抓住了那个)。 对我来说,我会错过多余的引用,只是奇怪的语法突出显示引起了我的注意。通过语法高亮保存。 :-) @HansUp 我按照你的说法进行了更改,但仍然出现错误:( olCommand = New OleDbCommand("DELETE FROM Stock WHERE [Product Name]=''" & comDataStock.SelectedItem.ToString(). Split("-").GetValue(0).ToString() & "'", olDataConnection) reader = olCommand.ExecuteReader() 查询表达式 '[Product Name]=''Lamp '' 中的语法错误(缺少运算符)。数据库有问题吗? 嘿,感谢您的帮助,这是我的愚蠢错误之一 :)

以上是关于oledb 异常未处理的主要内容,如果未能解决你的问题,请参考以下文章

System.Data.dll 中出现“System.Data.OleDb.OleDbException”类型的未处理异常附加信息:无法识别的数据库格式

C# - INSERT INTO 语句中的语法错误(System.Data.dll 中发生“System.Data.OleDb.OleDbException”类型的未处理异常)

OLEDB - C++ - ATL 的 OLEDB 提供程序示例使 Excel 崩溃(来自 msado15.dll 的未捕获异常)

未处理的异常附加信息:外部表不是预期的格式

异常详细信息:System.InvalidOperationException:“Microsoft.ACE.OLEDB.12.0”提供程序未在本地计算机上注册 [重复]

ADO.NET 连接错误“System.Data.OleDb.OleDbException”