标签:table1 IErrorInfo 数据库 GetDescription 查询 Access failed id 保留字
使用ADO.NET访问Access2007的数据库,执行SQL语句:
select xxid, username, department, Ipadr, mailbox, telephone mobilephone, company, position, Job, job content, uid, px from info where department='武功' order by px
出现如下错误:
System.Data.OleDb.OleDbExcetion (0x80004005):IErrorInfo.GetDescription failed with E_FAIL(0x80004005)
网络搜索到信息:https://www.it1352.com/1643113.html
====================================================
我正在对Access数据库使用OleDbConnection,OldDbCommand和OleDbReader.
我在代码中调用的数据库中有一个命名查询.
从访问权限中运行查询时,该查询可以正常工作.
多个资源指示该错误可能是由于在查询中使用保留字并将其用方括号引起的.我没有使用任何保留字,而是将所有列名都用括号括起来以排除它.
试图确定问题出在哪里,我已将查询简化为一个简单的
SELECT id FROM table1 WHERE id = 5
Ole连接不会引发异常.
当我介绍查询的下一部分时:
SELECT table1.id FROM table1 INNER JOIN storedQuery ON table1.id = storedQuery.id WHERE table1.id = 5"
然后我得到了例外.
异常详细信息如下:
解决方案
- 消息:IErrorInfo.GetDescription失败,错误代码为E_FAIL(0x80004005).
- 错误代码:-2147467259
- NativeError:-533136361
- SQLState:3000
当我说查询不包含任何保留字时,我显然被弄错了.
我正在使用的查询是从Access数据库中的另一个查询中选择的.另一个查询有一个导致问题的保留关键字.
顺便说一句:
Access数据库引擎以不同的模式运行,具体取决于是从Access,数据访问对象,Access数据库引擎的Microsoft OLE Provider还是Microsoft Access ODBC驱动程序中调用它.它可以在ANSI模式或非ANSI(传统)模式下运行.
由于使用这两种模式会导致两组保留字稍有不同,因此使用保留字的查询可能在一种模式下工作而在另一种模式下失败
====================================================
对sql语句中的每个标识符进行搜索,发现position属于保留字,对该字段改名后,运行正常。
标签:table1,IErrorInfo,数据库,GetDescription,查询,Access,failed,id,保留字 来源: https://www.cnblogs.com/bjguanmu/p/15107580.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。