OLE 和 Access 的语法有区别吗

Posted

技术标签:

【中文标题】OLE 和 Access 的语法有区别吗【英文标题】:Is there a difference in syntax between OLE and Access 【发布时间】:2013-03-19 15:32:06 【问题描述】:

今天早上我遇到了一个在任何地方都找不到答案的问题,所以现在我只是问那些可能比我更了解这个主题的人;)。所以这就是问题所在,当我在 MS Access 中执行某个查询时,我得到了我期望收到的行,那里没有问题。但是,当我在 OleDbCommand 对象中运行完全相同的命令(复制粘贴)时,它不会返回任何内容。我的数据表是空的。我将复制查询,以便您可能会发现我可能不知道的语法差异:

odbCommand = New OleDbCommand( _
    "SELECT IDTemps, NomEmploye, HreAllouees, HreReelles, TauxHoraire, " & _
    " Description, NoProjet_Short, NoJob, Type FROM TableA " & _
    " WHERE NoProjet_Short = '13015' " & _
    " AND Type = 'DessinE' ", odbConnection)

    dbAdapter = New OleDbDataAdapter(odbCommand)
    odbConnection.Open()
    dbAdapter.Fill(dtTable)

注意:这是代码的核心,没有贴错误管理(因为我没有错误,我的DataTable只是空的,不应该)。

谢谢 西蒙

【问题讨论】:

你确定NoProjet_Short是一个文本数据字段吗? @Steve 是的,NoProjet_Short 字段是数据库中的文本字段。 你能检查一下连接吗?您是否可能正在使用不同的访问文件? (注意项目工作文件夹中的数据库文件和bin\debug目录下的数据库) @Steve 连接字符串指向正确的数据库。我之前在此命令上执行了另一个查询,但我不得不更改它,现在它不起作用(我发布的那个)。这就是为什么,对我来说,它指出了 Ole 处理查询和 Access 的方式之间的差异。就像 Access 和 SQL Server 的语法差异一样。 可能,但不适用于此查询。这是一个基本的选择,没有任何花哨的结构,只能由 Access 解释。它应该按原样工作。另一种选择是在 where 条件下(没有需要值的记录),但我认为您已经检查过这个 【参考方案1】:

好吧,经过一整天的测试,大量不同的数据、表配置、查询中的许多变化,我终于找到了问题的答案。史蒂夫通过向我展示通往圣杯的路径:该死的连接字符串;)在实际数据库测试中帮助了我很多。

我的连接字符串实际上很好,但我有很多,而且我在我的 VB.NET 应用程序中指向的数据库不是我使用 MS Access 修改的那个。

最后一句话:始终仔细检查 ConnectionString(以及史蒂夫):)

【讨论】:

以上是关于OLE 和 Access 的语法有区别吗的主要内容,如果未能解决你的问题,请参考以下文章

Acces数据库注入|偏移注入

vb.net2010从ACCESS的OLE字段读出图片显示到PictureBox控件上

从 .Net 访问 Microsoft Access 2003 和 2007 BLOB 字段

在我的应用程序中显示 Microsoft Access“OLE 对象”

COM 和 OLE 有啥区别?

java运行闪退,报错如下,是因为ole32.dll的问题吗?