vc++ ADO连接acces数据库

oowangoo 2011-04-15 11:43:38
#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表(且有学号这么一列)。。。
求解。。。
...全文
188 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
xmu_才盛 2011-04-16
  • 打赏
  • 举报
回复
CString strSql3("select NUM from Sheet1"); // 把学号改成NUM
m_recordset = m_pConnection->Execute((LPCTSTR)strSQL,NULL,0);

xmu_才盛 2011-04-16
  • 打赏
  • 举报
回复
select 学号 from Sheet1

sql语句不支持中文。。
pathuang68 2011-04-16
  • 打赏
  • 举报
回复
oowangoo 2011-04-16
  • 打赏
  • 举报
回复
好吧,m_connection->Open这个也有点问题,但是仍然不知道该怎么改。。。求解。。。
oowangoo 2011-04-16
  • 打赏
  • 举报
回复
问题成功搞定了。
http://blog.csdn.net/zyq5945/archive/2010/05/13/5586423.aspx
通过这个ADO助手搞定,可是他里面的连接字符串和我写的一摸一样,为什么我的就连不上?这是个什么情况能解释解释么?
oowangoo 2011-04-16
  • 打赏
  • 举报
回复
额,现在不是_RecordsetPtr 指针打开报错,是_ConnectionPtr 指针进行open操作报错,open参数列表中的sourse我是从vb连接上拷过来的,应该没有错。不知为什么进行open参数依然失败。。。
oowangoo 2011-04-16
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 newstudent_never 的回复:]

CString strSql3("select NUM from Sheet1"); // 把学号改成NUM
m_recordset = m_pConnection->Execute((LPCTSTR)strSQL,NULL,0);
[/Quote]
额,我开始用*依然是错的- -。我去试试英文看看。

65,187

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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