c++ 连接access数据库

jakery6a_02 2011-06-03 01:22:21
在用c++采用ado的方法连接access数据库,连不上,之前已经配置了ODBC数据源,调试显示的错误信息为:
R6010-abort() has been called

代码如下:
#include <iostream>
#include <string>
using namespace std;
//导入ADO动态链接库,必须的
#import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename("EOF","adoEOF")

void main()
{
_ConnectionPtr m_pConnection; //创建智能指针,必须的
CoInitialize(NULL); //初始化COM,必须的
m_pConnection.CreateInstance(__uuidof(Connection)); //或 m_pConnection.CreateInstance("ADODB.Connection");
m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=data.accdb"," "," ",adModeUnknown);

m_pConnection->Close();
m_pConnection->Release();

CoUninitialize(); //释放COM

}
...全文
415 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
jakery6a_02 2011-06-03
  • 打赏
  • 举报
回复
搞定了,第一是provider变了,还有data source的完整路径,谢谢各位
hztj2005 2011-06-03
  • 打赏
  • 举报
回复
贴孙鑫的代码:


void CAdoDlg::OnBtnQuery()
{
// TODO: Add your control notification handler code here
CoInitialize(NULL);
_ConnectionPtr pConn(__uuidof(Connection));
_RecordsetPtr pRst(__uuidof(Recordset));
_CommandPtr pCmd(__uuidof(Command));

//pConn->ConnectionString="Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=pubs";//SQL SERVER

pConn->ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\IBM\Desktop\语言编程\test.mdb";//access


pConn->Open("","","",adConnectUnspecified);

pRst=pConn->Execute("select * from 产品",NULL,adCmdText);
//pRst->Open("select * from authors",_variant_t((IDispatch*)pConn),
// adOpenDynamic,adLockOptimistic,adCmdText);
/* pCmd->put_ActiveConnection(_variant_t((IDispatch*)pConn));
pCmd->CommandText="select * from authors";
pRst=pCmd->Execute(NULL,NULL,adCmdText);
*/ while(!pRst->rsEOF)
{
((CListBox*)GetDlgItem(IDC_LIST1))->AddString(
(_bstr_t)pRst->GetCollect("类别"));
pRst->MoveNext();
}
CString test=(LPCSTR)pConn->ConnectionString;
pRst->Close();
pConn->Close();
pCmd.Release();
pRst.Release();
pConn.Release();
CoUninitialize();
}




点击vc-工具-连接数据库:
数据源:
access数据库则选Microsoft Access 数据库文件 (OLE DB)
浏览:
选择你数据库。
点“测试连接”;

打开“高级”:

把最下的:

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\IBM\Desktop\语言编程\test.mdb

复制到下面引号中来:

strSQL = "Provider = Microsoft.Jet.OLEDB.4.0;Data Source = SHIBIEDB.mdb";

uniqueid 2011-06-03
  • 打赏
  • 举报
回复
翻了我以前的一段代码,你自己参考参考,我也不太会了~


_ConnectionPtr pConnection;
_RecordsetPtr pRecordset;
......

CoInitialize(NULL);
pConnection.CreateInstance("ADODB.Connection");
pConnection->ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\\Data\\test.mdb";
// pConnection->ConnectionTimeout=10;
// pConnection->Mode=adModeUnknown;//adModeUnknown=0
pConnection->Open("","", "", adConnectUnspecified);
pRecordset.CreateInstance("ADODB.RecordSet");
pRecordset->Open("wordtable",_variant_t((IDispatch*)pConnection,true),adOpenKeyset,adLockOptimistic,adCmdTable);
......

pRecordset->Close();
pConnection->Close();
pRecordset=NULL;
pConnection=NULL;
CoUninitialize();
jakery6a_02 2011-06-03
  • 打赏
  • 举报
回复
这个通过ado连接,和电脑其他地方的配置有关系吗
jakery6a_02 2011-06-03
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wildwise 的回复:]

m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=data.accdb"," "," ",adModeUnknown);
这个红色的是啥?这应该写个数据库路径啊,ado连接不用创建数据源,这直接写绝对路径或相对路径都可以
[/Quote]
我改写过绝对路径,Data Source=d:\\work\\data.accdb,还是不行,出来同样的错误
jakery6a_02 2011-06-03
  • 打赏
  • 举报
回复
CoInitialize(NULL);介个应该放在第一句吧

还是不行
wildwise 2011-06-03
  • 打赏
  • 举报
回复
m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=data.accdb"," "," ",adModeUnknown);
这个红色的是啥?这应该写个数据库路径啊,ado连接不用创建数据源,这直接写绝对路径或相对路径都可以
LBJMD 2011-06-03
  • 打赏
  • 举报
回复
CoInitialize(NULL);介个应该放在第一句吧

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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