在用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
}
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
}
这个红色的是啥?这应该写个数据库路径啊,ado连接不用创建数据源,这直接写绝对路径或相对路径都可以
_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();
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";