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”提供程序未在本地计算机上注册 [重复]