C++下,ADO连接access,未指定的错误?

xuefeiqiannian 2013-07-21 10:06:08

一个简单的C++连接数据库程序,调试好几天,快崩溃了。
catch到的异常是“未指定的错误”,参见图片。网上找了好久,不得其解。
另外用C#编的代码能连上数据库,并读出表名。
各位大神有任何疑问、指点,欢迎回复。感激不尽……



完整主程序如下:------------------------------------------
// 32位win7+32位office2010下 
//vs2010 visual C++用ADO连接acces数据库代码!(win32控制台应用程序)
//如果您要调试下,请把附件的access文档放在D盘下

#include "stdafx.h"
#include <afxdb.h> // AfxMessageBox命令需要
#import "C:\Program Files\Common Files\System\ado\msado15.dll"\
no_namespace rename("EOF","adoEOF")

int _tmain(int argc, _TCHAR* argv[])
{
::CoInitialize(NULL); //初始化COM对象 另一种初始化AfxOleInit()会报错?
_ConnectionPtr m_pConnection; //定义_ConnectionPtr类型指针

//**********连接Connection对象
try
{
m_pConnection.CreateInstance("ADODB.Connection");///创建Connection对象
m_pConnection->Open("Microsoft.ACE.OLEDB.12.0;\
Data Source=D:\test.accdb","","",adModeUnknown);///连接数据库。也可以试试下面的
}
catch(_com_error e)///捕捉异常
{
CString errormessage;
errormessage.Format(_T("连接数据库失败! 错误信息:%s"),e.ErrorMessage());
AfxMessageBox(errormessage);///显示错误信息
}

//**********关闭Connection对象
if(m_pConnection->State)
{
m_pConnection->Close();
}

CoUninitialize(); // 卸载COM库
return 0;
}

...全文
480 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuefeiqiannian 2013-07-27
  • 打赏
  • 举报
回复
找了个案例学习。新建了一个windows窗口应用程序,啥也没干,就拖了下面几个控件,正常运行!

后来我在form.h的开头加了两句话:
#include <afxdb.h>// AfxMessageBox命令需要
#import "C:\Program Files\Common Files\System\ado\msado15.dll"\
no_namespace rename("EOF","adoEOF")

结果生成时提示:error C2504: “CControlBar”: 未定义基类” 请问如何解决?
xuefeiqiannian 2013-07-24
  • 打赏
  • 举报
回复
再求助,现在要VS2010 C++ 编一个简单的对数据库操作界面,
可以添加和删除数据,
有建议参考那个帖子或代码吗?
界面如下图差不多就行、谢谢了。
xuefeiqiannian 2013-07-22
  • 打赏
  • 举报
回复
第19行代码
m_pConnection->Open("Microsoft.ACE.OLEDB.12.0;\ 
应该改成
m_pConnection->Open("Provider=Microsoft.ACE.OLEDB.12.0;\
坑爹的微软,这么简单的错误就不能提示下语法错误!貌似vs是对C++没有VB和V#优化的好,毕竟不是亲生的
wwwwb 2013-07-22
  • 打赏
  • 举报
回复
驱动程序安装没有? http://www.microsoft.com/downloads/details.aspx?familyid=7554F536-8C28-4598-9B72-EF94E038C891&displaylang=zh-cn (25.4MB) 下载驱动程序
xuefeiqiannian 2013-07-22
  • 打赏
  • 举报
回复
xuefeiqiannian 2013-07-22
  • 打赏
  • 举报
回复

改了catch语句,详细错误为上图。
catch(_com_error e)///捕捉异常
{
CString errormessage;
//errormessage.Format(_T("连接数据库失败! 错误信息:%s"),e.ErrorMessage());
errormessage.Format(e.Description(), e.ErrorMessage());
AfxMessageBox(errormessage);///显示错误信息
}
wwwwb 2013-07-22
  • 打赏
  • 举报
回复
是连接有问题还是运行SQL语句有问题?

7,713

社区成员

发帖
与我相关
我的任务
社区描述
Microsoft Office Access是由微软发布的关系数据库管理系统。它结合了 MicrosoftJet Database Engine 和 图形用户界面两项特点。
社区管理员
  • Access
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧