新手学习C++与Access数据库连接。遇问题求助

后浪如何浪 2016-03-11 01:44:25
编写的控制台应用程序,运行后总是出各种问题,有时候可以写入数据,有时候又会失败,关闭记录集指针也总是出问题。求大牛帮忙调试下程序,并指导下,我对数据库也不是很了解。
#include <icrsint.h>
#include<iostream>
#include "stdafx.h"
#include "string.h"
using namespace std;
class CADO
{public:
_ConnectionPtr m_pConnection;
_RecordsetPtr m_pRecordset;
public :
void Connect(void);
void ExitConnect(void);
_RecordsetPtr&GetRecordset(_bstr_t SQL);
};
/* 建立数据库连接*/
void CADO::Connect(void)
{
try{::CoInitialize(NULL);//初始化com环境
m_pConnection.CreateInstance(__uuidof(Connection));//创建连接对象
m_pConnection->Open("Provider=Microsoft Office 12.0 Access Database Engine OLE DB Provider;Data Source=F:\\VC_work\\Northwind.mdb","","",adModeUnknown);
}
catch(_com_error e)
{
cout<<"连接数据库失败!错误信息:"<<e.ErrorMessage()<<endl;
return;
}
cout<<"连接成功!"<<endl;
}
void CADO:: ExitConnect(void)
{
if(!m_pRecordset->adoEOF)
{//m_pRecordset.Release();
m_pRecordset->Close();
m_pConnection->Close();

}
::CoUninitialize();//释放环境

}
/*得到记录集*/
_RecordsetPtr& CADO ::GetRecordset(_bstr_t SQL)
{_variant_t ra;
try{if (m_pConnection==NULL)
Connect();
m_pRecordset.CreateInstance(__uuidof(Recordset));
// 取得表中的记录
m_pRecordset->Open(SQL,/*_variant_t((IDispatch*)m_pConnection,true)*/m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
}
// 捕捉异常
catch(_com_error e)
{
// 显示错误信息
printf("错误信息:%s",e.Description());
cout<<"错误信息:"<<e.ErrorMessage()<<endl;

}
return m_pRecordset;

}
class stu:public CADO
{
private:
long ID;
string Name;
long Age;
public:
stu(){ID=0;Name="**";Age=0;}
stu(int id,string name,int age){ID=id;Name=name;Age=age;}
void writedata(_bstr_t SQLl);
};
void stu::writedata(_bstr_t SQLl)
{
Connect();
GetRecordset(SQLl);
while(!m_pRecordset->adoEOF)
m_pRecordset->MoveNext();
m_pRecordset->AddNew();///添加新记录
m_pRecordset->PutCollect("ID",_variant_t((long)(ID)));
m_pRecordset->PutCollect("Name",_variant_t("na"));
m_pRecordset->PutCollect("Age",_variant_t((long)(Age)));

}
void main()
{
stu s1(1,"dd",3);
s1.writedata("SELECT * FROM 表1");
s1.ExitConnect();
...全文
265 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
后浪如何浪 2016-03-14
  • 打赏
  • 举报
回复
引用 11 楼 renwotao2009 的回复:
[quote=引用 10楼我是你的主体 的回复:][quote=引用 9 楼 renwotao2009 的回复:] [quote=引用 7 楼 u011983560 的回复:] [quote=引用 5 楼 renwotao2009 的回复:] 具体啥问题,异常?
主要是程序运行到关闭记录集指针的时候,会异常关闭。并且数据写入成功过,但不总是成功。我副程序了,绝对无毒,可以帮我调试看看不?谢谢了 [/quote] 在 ExitConnect函数中添加try catch来看看关闭时异常问题[/quote] 显示未知错误,感觉检查回来的不对呢,能不能帮我调一下,我感觉是记录集指针不对[/quote]这里的程序完整吗[/quote]
引用 11 楼 renwotao2009 的回复:
[quote=引用 10楼我是你的主体 的回复:][quote=引用 9 楼 renwotao2009 的回复:] [quote=引用 7 楼 u011983560 的回复:] [quote=引用 5 楼 renwotao2009 的回复:] 具体啥问题,异常?
主要是程序运行到关闭记录集指针的时候,会异常关闭。并且数据写入成功过,但不总是成功。我副程序了,绝对无毒,可以帮我调试看看不?谢谢了 [/quote] 在 ExitConnect函数中添加try catch来看看关闭时异常问题[/quote] 显示未知错误,感觉检查回来的不对呢,能不能帮我调一下,我感觉是记录集指针不对[/quote]这里的程序完整吗[/quote] 程序是完整的,我还没实现什么功能,现在只希望能先可以正确的写入多条记录,谢谢啦
后浪如何浪 2016-03-14
  • 打赏
  • 举报
回复
引用 8 楼 qq_33486292 的回复:
[quote=引用 6 楼 chengxuy11的回复:][quote=引用 4 楼 qq_33486292 的回复:] 你悬赏一下,可能有人。
第一次用,还不会悬赏呢,这玩意悬赏给啥东西[/quote] 就是你选提问方式发帖子时左下角有个提示,你可以输入数字,悬赏几C币的,关于C币你可以完任务或充值获取。[/quote] 哦了,了解了
renwotao2009 2016-03-13
  • 打赏
  • 举报
回复
引用 7 楼 u011983560 的回复:
[quote=引用 5 楼 renwotao2009 的回复:] 具体啥问题,异常?
主要是程序运行到关闭记录集指针的时候,会异常关闭。并且数据写入成功过,但不总是成功。我副程序了,绝对无毒,可以帮我调试看看不?谢谢了 [/quote] 在 ExitConnect函数中添加try catch来看看关闭时异常问题
renwotao2009 2016-03-13
  • 打赏
  • 举报
回复
引用 10楼我是你的主体 的回复:
[quote=引用 9 楼 renwotao2009 的回复:] [quote=引用 7 楼 u011983560 的回复:] [quote=引用 5 楼 renwotao2009 的回复:] 具体啥问题,异常?
主要是程序运行到关闭记录集指针的时候,会异常关闭。并且数据写入成功过,但不总是成功。我副程序了,绝对无毒,可以帮我调试看看不?谢谢了 [/quote] 在 ExitConnect函数中添加try catch来看看关闭时异常问题[/quote] 显示未知错误,感觉检查回来的不对呢,能不能帮我调一下,我感觉是记录集指针不对[/quote]这里的程序完整吗
abc罗大侠 2016-03-13
  • 打赏
  • 举报
回复
引用 6 楼 chengxuy11的回复:
[quote=引用 4 楼 qq_33486292 的回复:] 你悬赏一下,可能有人。
第一次用,还不会悬赏呢,这玩意悬赏给啥东西[/quote] 就是你选提问方式发帖子时左下角有个提示,你可以输入数字,悬赏几C币的,关于C币你可以完任务或充值获取。
后浪如何浪 2016-03-13
  • 打赏
  • 举报
回复
引用 5 楼 renwotao2009 的回复:
具体啥问题,异常?
主要是程序运行到关闭记录集指针的时候,会异常关闭。并且数据写入成功过,但不总是成功。我副程序了,绝对无毒,可以帮我调试看看不?谢谢了
后浪如何浪 2016-03-13
  • 打赏
  • 举报
回复
引用 4 楼 qq_33486292 的回复:
你悬赏一下,可能有人。
第一次用,还不会悬赏呢,这玩意悬赏给啥东西
后浪如何浪 2016-03-13
  • 打赏
  • 举报
回复
引用 9 楼 renwotao2009 的回复:
[quote=引用 7 楼 u011983560 的回复:] [quote=引用 5 楼 renwotao2009 的回复:] 具体啥问题,异常?
主要是程序运行到关闭记录集指针的时候,会异常关闭。并且数据写入成功过,但不总是成功。我副程序了,绝对无毒,可以帮我调试看看不?谢谢了 [/quote] 在 ExitConnect函数中添加try catch来看看关闭时异常问题[/quote] 显示未知错误,感觉检查回来的不对呢,能不能帮我调一下,我感觉是记录集指针不对
后浪如何浪 2016-03-12
  • 打赏
  • 举报
回复
求助啊,各位大神
后浪如何浪 2016-03-12
  • 打赏
  • 举报
回复
大神都在哪??????????
renwotao2009 2016-03-12
  • 打赏
  • 举报
回复
具体啥问题,异常?
abc罗大侠 2016-03-12
  • 打赏
  • 举报
回复
你悬赏一下,可能有人。
后浪如何浪 2016-03-11
  • 打赏
  • 举报
回复
顶贴,求回复

64,282

社区成员

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

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