vc++ ADO连接acces数据库
#include <iostream>
#include <string>
#include <ctime>
#include <icrsint.h>
using namespace std;
#import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename("EOF","adoEOF")
int main()
{
cout<<"1"<<endl;
::CoInitialize(NULL); // 初始化OLE/COM库环境 ,为访问ADO接口做准备
_ConnectionPtr m_connection;
_RecordsetPtr m_recordset;
_CommandPtr m_command;
string m_strSource;
bool m_fConnected;
HRESULT hr;
try{
hr = m_connection.CreateInstance(_uuidof(Connection));
if(SUCCEEDED(hr))
hr = m_connection->Open("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\\Program Files\\excel数据库\\Database1.accdb", " "," " , 16);
if(SUCCEEDED(hr))
m_fConnected = TRUE;
else
m_fConnected = FALSE;
}
catch (_com_error &e)
{
cout<<e.ErrorMessage()<<endl;
m_fConnected = FALSE;
}
if(!m_fConnected)
{
cerr<<"ADO数据源初始化失败!"<<endl;
return 0;
}
IADORecordBinding *picRs = NULL;
try
{
if (FAILED(m_recordset.CreateInstance("ADODB.Recordset")))
{
cerr<<"Create Instance failed!";
return 0;
}
m_recordset->Open("select 学号 from Sheet1",
m_connection.GetInterfacePtr(),
adOpenDynamic,adLockOptimistic,adCmdTable);
//运行时一直报错
}
catch (_com_error&e )
{
m_recordset.Release();
cerr<<&e;
}
while(!(m_recordset->adoEOF))
{
_bstr_t table_type = m_recordset->Fields->
GetItem("学号")->Value;//获取表的类型
cout<<" "<<(char*) table_type<<endl;
m_recordset->MoveNext();
}
if ( m_recordset->State)
m_recordset->Close();
m_connection=NULL;
return 0;
}
编译能通过但是运行时出现debug error后发现是这句
m_recordset->Open("select 学号 from Sheet1",
m_connection.GetInterfacePtr(),
adOpenDynamic,adLockOptimistic,adCmdTable);出错,确定有Sheet1表(且有学号这么一列)。。。
求解。。。