因为是笔记,所以不一定很有序,贴出来的意思一方面是可以给大家一个参考,一边也有希望大家一起来完善的意思,其中错误和不足之处当然希望大家可以及时地通知我,在贴上来的时候,我有一个想法,因为我在使用的过程中,总是会遇上一些莫明其妙的错误,所以我想大家有可能也会遇上,于是,我给出了一个错误总结,当然这里就需要大家一起来完善了,如果大家有什么心得和见解,希望在评论中留言,我会及时地接受大家的意见并把他们加进来(当然是在得到您的允许的情况下)
1、导入库文件
使用ADO前必须在工程的stdafx.h文件最后用直接引入符号#import引入ADO库文件,以使编译器能正确编译。代码如下:
#import "C:Program Filescommon filessystemadomsado15.dll" no_namespace rename("EOF","EndOfFile") rename("BOF","FirstOfFile")
ADO类的定义是作为一种资源存储在ADO DLL(msado15.dll)中,在其内部称为类型库。类型库描述了自治接口,以及C++使用的COM vtable接口。当使用#import指令时,在运行时Visual C++需要从ADO DLL中读取这个类型库,并以此创建一组C++头文件。这些头文件具有.tli 和.tlh扩展名,读者可以在项目的目录下找到这两个文件。在C++程序代码中调用的ADO类要在这些文件中定义。
程序的第三行指示ADO对象不使用名称空间。在有些应用程序中,由于应用程序中的对象与ADO中的对象之间可能会出现命名冲突,所以有必要使用名称空间。如果要使用名称空间,则可把第三行程序修改为: rename_namespace("AdoNS")。第四行代码将ADO中的EOF(文件结束)更名为adoEOF,以避免与定义了自己的EOF的其他库冲突。
2、初始化COM环境
(1)::CoInitialize(NULL); //初始化OLE/COM库环境
:: CoUninitialize();//既然初始化了环境,当然就有必要释放他了
(2)也可以调用MFC全局函数
AfxOleInit();
3、三大对象的定义和创建实例
(1) _ConnectionPtr pConnection("ADODB.Connection");
_RecordsetPtr pRecordset("ADODB.Recordset");
_CommandPtr pCommand("ADODN.Command");
(2) _ConnectionPtr pConnection;
_RecordsetPtr pRecordset;
_CommandPtr pCommand;
pConnection.CreateInstance(__uuidof(Connection));
pRecordset.CreateInstance(__uuidof(Recordset));
pCommand.CreateInstance(__uuidof(Command));
(3) _ConnectionPtr pConnection;
_RecordsetPtr pRecordset;
_CommandPtr pCommand;
pConnection.CreateInstance("ADODB.Connection");
pRecordset.CreateInstance("ADODB.Recordset");
pCommand.CreateInstance("ADODB.Command");
4、打开一个连接
pConnection->Open(ConnectionString,"","",adModeUnknown);///连接数据库
上面的连接字符串ConnectionString根据不同的数据源,分别对应不同的写法
1)访问Access 2000
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=databaseName;User ID=userName;Password=userPassWord"
2)访问ODBC数据
" Provider=MADASQL;DSN=dsnName;UID=userName;PWD=userPassword;"
3)访问Oracle数据库
“Provider=MSDAORA;Data Sourse=serverName;User ID=userName;Password=userPassword;"
3)访问MS SQL数据库
"Provider=SQLOLEDB,Data Source=serverName;Initial Catalog=databaseName;User ID=userName;Password=userPassword;"
4、执行SQL命令
SQL命令比较多,但是不去考虑细节,这里只说出通用的方法
CString strSQL;//定义SQL命令串,用来保存SQL语句
strSQL.Format("SQL statement");
然后在每个要用到SQL命令串的方法中,使用strSQL.AllocSysString()的方法进行类型转换
5、com的专用数据类型
variant ,bstr ,SafeArray
variant变量的范围包括很多,使用_variant_t 进行管理
bstr是一种字符串变量,使用_bstr_t进行管理
6、关闭连接
if(m_pConnection->State)//不能多次关闭,否则会出现错误
m_pConnection->Close();
7、结构化异常处理
ADO封装了COM接口,所以需要进行错误处理
如下例:
HRESULT hr;
try
{
hr = m_pConnection.CreateInstance("ADODB.Connection");///创建Connection对象
if(SUCCEEDED(hr))
beijingkaifapiao.dwcxa.com;
beijingdaikaifapiao.dwcxa.com;
shanghaikaifapiao.dwcxa.com;
shanghaidaikaifapiao.dwcxa.com;
guangzhoukaifapiao.dwcxa.com;
shenzhenfapiao.dwcxa.com;
shenzhenkaifapiao.dwcxa.com;
jinanfapiao.dwcxa.com;
jinankaifapiao.dwcxa.com;
jinandaikaifapiao.dwcxa.com;
qingdaofapiao.dwcxa.com;
qingdaokaifapiao.dwcxa.com;
qingdaodaikaifapiao.dwcxa.com;
nanjingfapiao.dwcxa.com;
nanjingdaikaifapiao.dwcxa.com;
wuxifapiao.dwcxa.com;
wuxikaifapiao.dwcxa.com;
wuxidaikaifapiao.dwcxa.com;
suzhoufapiao.dwcxa.com;
suzhoukaifapiao.dwcxa.com;
suzhoudaikaifapiao.dwcxa.com;
zhengzhoufapiao.dwcxa.com;
zhengzhoukaifapiao.dwcxa.com;
zhengzhoudaikaifapiao.dwcxa.com;
shijiazhuangfapiao.dwcxa.com;
shijiazhuangkaifapiao.dwcxa.com;
shijiazhuangdaikaifapiao.dwcxa.com;
hangzhoufapiao.dwcxa.com;
hangzhoudaikaifapiao.dwcxa.com;
ningbofapiao.dwcxa.com;
ningbokaifapiao.dwcxa.com;
ningbodaikaifapiao.dwcxa.com;
xianfapiao.dwcxa.com;
xiankaifapiao.dwcxa.com;
xiandaikaifapiao.dwcxa.com;
changshafapiao.dwcxa.com;
changshakaifapiao.dwcxa.com;
changshadaikaifapiao.dwcxa.com;
zhongqingkaifapiao.dwcxa.com;
zhongqingdaikaifapiao.dwcxa.com;
fuzhoufapiao.dwcxa.com;
fuzhoukaifapiao.dwcxa.com;
fuzhoudaikaifapiao.dwcxa.com;
xiamenfapiao.dwcxa.com;
xiamenkaifapiao.dwcxa.com;
xiamendaikaifapiao.dwcxa.com;
tianjinfapiao.dwcxa.com;
tianjinkaifapiao.dwcxa.com;
tianjindaikaifapiao.dwcxa.com;
kunmingfapiao.dwcxa.com;
kunmingkaifapiao.dwcxa.com;
kunmingdaikaifapiao.dwcxa.com;
chengdufapiao.dwcxa.com;
chengdukaifapiao.dwcxa.com;
chengdudaikaifapiao.dwcxa.com;
hefeifapiao.dwcxa.com;
hefeikaifapiao.dwcxa.com;
hefeidaikaifapiao.dwcxa.com;
wuhanfapiao.dwcxa.com;
wuhankaifapiao.dwcxa.com;
wuhandaikaifapiao.dwcxa.com;
dalianfapiao.dwcxa.com;
daliandaikaifapiao.dwcxa.com;
shenyangfapiao.dwcxa.com;
shenyangkaifapiao.dwcxa.com;
shenyangdaikaifapiao.dwcxa.com;
haerbinfapiao.dwcxa.com;
haerbinkaifapiao.dwcxa.com;
haerbindaikaifapiao.dwcxa.com;
changchunfapiao.dwcxa.com;
changchundaikaifapiao.dwcxa.com;
taiyuanfapiao.dwcxa.com;
taiyuankaifapiao.dwcxa.com;
taiyuandaikaifapiao.dwcxa.com;
lanzhoufapiao.dwcxa.com;
lanzhoukaifapiao.dwcxa.com;
lanzhoudaikaifapiao.dwcxa.com;
jilinfapiao.dwcxa.com;
jilinkaifapiao.dwcxa.com;
jilindaikaifapiao.dwcxa.com;
nanchangfapiao.dwcxa.com;
nanchangkaifapiao.dwcxa.com;
nanchangdaikaifapiao.dwcxa.com;
guiyangfapiao.dwcxa.com;
guiyangkaifapiao.dwcxa.com;
guiyangdaikaifapiao.dwcxa.com;
nanningfapiao.dwcxa.com;
nanningkaifapiao.dwcxa.com;
nanningdaikaifapiao.dwcxa.com;
haikoufapiao.dwcxa.com;
haikoukaifapiao.dwcxa.com;
haikoudaikaifapiao.dwcxa.com;
jinhuadaikaifapiao.dwcxa.com;
wenzhoudaikaifapiao.dwcxa.com;
yangzhoudaikaifapiao.dwcxa.com;
wulumuqidaikaifapiao.dwcxa.com;
qinhuangdaodaikaifapiao.dwcxa.com;
cangzhoudaikaifapiao.dwcxa.com;
xiningdaikaifapiao.dwcxa.com;
huhehaotekaifapiao.dwcxa.com;
cangzhoudaikaifapiao.dwcxa.com;
cangzhoufapiao.dwcxa.com;
cangzhoukaifapiao.dwcxa.com;
zhangzhoudaikaifapiao.dwcxa.com;
zhangzhoufapiao.dwcxa.com;
zhangzhoukaifapiao.dwcxa.com;
zhenjiangdaikaifapiao.dwcxa.com;
zhenjiangfapiao.dwcxa.com;
zhenjiangkaifapiao.dwcxa.com;
zhongshandaikaifapiao.dwcxa.com;
zhongshanfapiao.dwcxa.com;
zhongshankaifapiao.dwcxa.com;
zhuhaidaikaifapiao.dwcxa.com;
zhuhaifapiao.dwcxa.com;
zhuhaikaifapiao.dwcxa.com;
huhehaotefapiao.dwcxa.com;
huhehaotekaifapiao.dwcxa.com;
foshandaikaifapiao.dwcxa.com;
foshanfapiao.dwcxa.com;
foshankaifapiao.dwcxa.com;
huizhoudaikaifapiao.dwcxa.com;
huizhoufapiao.dwcxa.com;
huizhoukaifapiao.dwcxa.com;
jinhuadaikaifapiao.dwcxa.com;
jinhuafapiao.dwcxa.com;
jinhuakaifapiao.dwcxa.com;
taizhoudaikaifapiao.dwcxa.com;
taizhoufapiao.dwcxa.com;
taizhoukaifapiao.dwcxa.com;
luoyangdaikaifapiao.dwcxa.com;
luoyangfapiao.dwcxa.com;
luoyangkaifapiao.dwcxa.com;
qinhuangdaodaikaifapiao.dwcxa.com;
qinhuangdaofapiao.dwcxa.com;
qinhuangdaokaifapiao.dwcxa.com;
quanzhoudaikaifapiao.dwcxa.com;
quanzhoufapiao.dwcxa.com;
quanzhoukaifapiao.dwcxa.com;
tangshandaikaifapiao.dwcxa.com;
tangshanfapiao.dwcxa.com;
tangshankaifapiao.dwcxa.com;
wenzhoudaikaifapiao.dwcxa.com;
wenzhoufapiao.dwcxa.com;
wenzhoukaifapiao.dwcxa.com;
xuzhoudaikaifapiao.dwcxa.com;
xuzhoufapiao.dwcxa.com;
xuzhoukaifapiao.dwcxa.com;
shantoudaikaifapiao.dwcxa.com;
shantoufapiao.dwcxa.com;
shantoukaifapiao.dwcxa.com;
yantaidaikaifapiao.dwcxa.com;
yantaifapiao.dwcxa.com;
yantaikaifapiao.dwcxa.com;
yanchengdaikaifapiao.dwcxa.com;
yanchengfapiao.dwcxa.com;
yanchengkaifapiao.dwcxa.com;
yangzhoudaikaifapiao.dwcxa.com;
yangzhoufapiao.dwcxa.com;
yangzhoukaifapiao.dwcxa.com;
wulumuqidaikaifapiao.dwcxa.com;
wulumuqifapiao.dwcxa.com;
wulumuqikaifapiao.dwcxa.com;
chengdedaikaifapiao.dwcxa.com;
chengdefapiao.dwcxa.com;
chengdekaifapiao.dwcxa.com;
dandongdaikaifapiao.dwcxa.com;
dandongfapiao.dwcxa.com;
dandongkaifapiao.dwcxa.com;
dongݸfapiao.dwcxa.com;
dongݸkaifapiao.dwcxa.com;
dongyingdaikaifapiao.dwcxa.com;
dongyingfapiao.dwcxa.com;
dongyingkaifapiao.dwcxa.com;
ganzhoudaikaifapiao.dwcxa.com;
ganzhoufapiao.dwcxa.com;
ganzhoukaifapiao.dwcxa.com;
huludaodaikaifapiao.dwcxa.com;
huludaofapiao.dwcxa.com;
huludaokaifapiao.dwcxa.com;
jixidaikaifapiao.dwcxa.com;
jixifapiao.dwcxa.com;
jixikaifapiao.dwcxa.com;
lishuidaikaifapiao.dwcxa.com;
lishuifapiao.dwcxa.com;
lishuikaifapiao.dwcxa.com;
liuzhoudaikaifapiao.dwcxa.com;
liuzhoufapiao.dwcxa.com;
liuzhoukaifapiao.dwcxa.com;
loudidaikaifapiao.dwcxa.com;
loudifapiao.dwcxa.com;
loudikaifapiao.dwcxa.com;
mianyangdaikaifapiao.dwcxa.com;
mianyangfapiao.dwcxa.com;
mianyangkaifapiao.dwcxa.com;
nantongdaikaifapiao.dwcxa.com;
nantongfapiao.dwcxa.com;
nantongkaifapiao.dwcxa.com;
panzhihuadaikaifapiao.dwcxa.com;
panzhihuafapiao.dwcxa.com;
panzhihuakaifapiao.dwcxa.com;
pingdingshandaikaifapiao.dwcxa.com;
pingdingshanfapiao.dwcxa.com;
pingdingshankaifapiao.dwcxa.com;
rizhaodaikaifapiao.dwcxa.com;
rizhaofapiao.dwcxa.com;
rizhaokaifapiao.dwcxa.com;
tianshuidaikaifapiao.dwcxa.com;
tianshuifapiao.dwcxa.com;
tianshuikaifapiao.dwcxa.com;
weihaidaikaifapiao.dwcxa.com;
weihaifapiao.dwcxa.com;
weihaikaifapiao.dwcxa.com;
xiningdaikaifapiao.dwcxa.com;
xiningfapiao.dwcxa.com;
xiningkaifapiao.dwcxa.com;
xianyangdaikaifapiao.dwcxa.com;
xianyangfapiao.dwcxa.com;
xianyangkaifapiao.dwcxa.com;
yinchuandaikaifapiao.dwcxa.com;
yinchuanfapiao.dwcxa.com;
yinchuankaifapiao.dwcxa.com;
yingkoudaikaifapiao.dwcxa.com;
yingkoufapiao.dwcxa.com;
yingkoukaifapiao.dwcxa.com;
zibodaikaifapiao.dwcxa.com;
zibofapiao.dwcxa.com;
zibokaifapiao.dwcxa.com;
zigongdaikaifapiao.dwcxa.com;
zigongfapiao.dwcxa.com;
zigongkaifapiao.dwcxa.com;
beijingzhusufapiao.dwcxa.com;
beijingcanyinfapiao.dwcxa.com;
jinancanyinfapiao.dwcxa.com;
jinanzhusufapiao.dwcxa.com;
hefeizhusufapiao.dwcxa.com;
hefeicanyinfapiao.dwcxa.com;
suzhouzhusufapiao.dwcxa.com;
suzhoucanyinfapiao.dwcxa.com;
ningbocanyinfapiao.dwcxa.com;
ningbozhusufapiao.dwcxa.com;
wuxicanyinfapiao.dwcxa.com;
wuxizhusufapiao.dwcxa.com;
nanjingcanyinfapiao.dwcxa.com;
nanjingzhusufapiao.dwcxa.com;
changshazhusufapiao.dwcxa.com;
changshacanyinfapiao.dwcxa.com;
qingdaocanyinfapiao.dwcxa.com;
qingdaozhusufapiao.dwcxa.com;
zhongqingzhusufapiao.dwcxa.com;
zhongqingcanyinfapiao.dwcxa.com;
chengduzhusufapiao.dwcxa.com;
chengducanyinfapiao.dwcxa.com;
shanghaizhusufapiao.dwcxa.com;
shanghaidaikaicanyinfapiao.dwcxa.com;
haerbincanyinfapiao.dwcxa.com;
haerbinzhusufapiao.dwcxa.com;
changchunzhusufapiao.dwcxa.com;
changchuncanyinfapiao.dwcxa.com;
shenyangzhusufapiao.dwcxa.com;
shenyangcanyinfapiao.dwcxa.com;
zhengzhouzhusufapiao.dwcxa.com;
zhengzhoucanyinfapiao.dwcxa.com;
nanjingzhusufapiao.dwcxa.com;
nanjingcanyinfapiao.dwcxa.com;
hangzhouzhusufapiao.dwcxa.com;
hangzhoucanyinfapiao.dwcxa.com;
kunmingzhusufapiao.dwcxa.com;
kunmingcanyinfapiao.dwcxa.com;
dalianzhusufapiao.dwcxa.com;
daliancanyinfapiao.dwcxa.com;
wuhanzhusufapiao.dwcxa.com;
wuhancanyinfapiao.dwcxa.com;
fuzhoucanyinfapiao.dwcxa.com;
fuzhouzhusufapiao.dwcxa.com;
guangzhoucanyinfapiao.dwcxa.com;
guangzhouzhusufapiao.dwcxa.com;
shijiazhuangcanyinfapiao.dwcxa.com;
shijiazhuangzhusufapiao.dwcxa.com;
xiancanyinfapiao.dwcxa.com;
xianzhusufapiao.dwcxa.com;
shenzhencanyinfapiao.dwcxa.com;
shenzhenzhusufapiao.dwcxa.com;
taiyuanzhusufapiao.dwcxa.com;
taiyuancanyinfapiao.dwcxa.com;
nanchangzhusufapiao.dwcxa.com;
nanchangcanyinfapiao.dwcxa.com;
guiyangzhusufapiao.dwcxa.com;
guiyangcanyinfapiao.dwcxa.com;
guangzhoudingefapiao.dwcxa.com;
shenzhendingefapiao.dwcxa.com;
zhongqingdingefapiao.dwcxa.com;
nanjingdingefapiao.dwcxa.com;
qingdaodingefapiao.dwcxa.com;
shanghaidingefapiao.dwcxa.com;
jinandingefapiao.dwcxa.com;
shenyangdingefapiao.dwcxa.com;
haerbindingefapiao.dwcxa.com;
chengdudingefapiao.dwcxa.com;
nanningdingefapiao.dwcxa.com;
suzhoudingefapiao.dwcxa.com;
changchundingefapiao.dwcxa.com;
beijingdingefapiao.dwcxa.com;
hangzhoudingefapiao.dwcxa.com;
ningbodingefapiao.dwcxa.com;
xiandingefapiao.dwcxa.com;
shijiazhuangdingefapiao.dwcxa.com;
zhengzhoudingefapiao.dwcxa.com;
wuhandingefapiao.dwcxa.com;
tianjindingefapiao.dwcxa.com;
taiyuandingefapiao.dwcxa.com;
haikoudingefapiao.dwcxa.com;
nanjingdingefapiao.dwcxa.com;
wuxidingefapiao.dwcxa.com;
nanchangdingefapiao.dwcxa.com;
kunmingdingefapiao.dwcxa.com;
guiyangdingefapiao.dwcxa.com;
lanzhoudingefapiao.dwcxa.com;
xiningdingefapiao.dwcxa.com;
hefeidingefapiao.dwcxa.com;
fuzhoudingefapiao.dwcxa.com;
xiamendingefapiao.dwcxa.com;
shanghaishangpinfapiao.dwcxa.com;
shanghaihuiwufapiao.dwcxa.com;
shanghaiyunshufapiao.dwcxa.com;
shanghaijianzhufapiao.dwcxa.com;
shanghaiguanggaofapiao.dwcxa.com;
beijingjianzhufapiao.dwcxa.com;
beijingshangpinfapiao.dwcxa.com;
guangzhoujianzhufapiao.dwcxa.com;
guangzhoushangpinfapiao.dwcxa.com;
beijingzengzhishuifapiao.dwcxa.com;
beijingkaizengzhishuifapiao.dwcxa.com;
shanghaizengzhishuifapiao.dwcxa.com;
shanghaikaizengzhishuifapiao.dwcxa.com;
shanghaidaikaizengzhishuifapiao.dwcxa.com;
guangzhouzengzhishuifapiao.dwcxa.com;
guangzhoukaizengzhishuifapiao.dwcxa.com;
guangzhoudaikaizengzhishuifapiao.dwcxa.com;
shenzhenzengzhishuifapiao.dwcxa.com;
shenzhenkaizengzhishuifapiao.dwcxa.com;
shenzhendaikaizengzhishuifapiao.dwcxa.com;
wuhanzengzhishuifapiao.dwcxa.com;
wuhankaizengzhishuifapiao.dwcxa.com;
wuhandaikaizengzhishuifapiao.dwcxa.com;
jinankaizengzhishuifapiao.dwcxa.com;
jinandaikaizengzhishuifapiao.dwcxa.com;
qingdaozengzhishuifapiao.dwcxa.com;
qingdaokaizengzhishuifapiao.dwcxa.com;
qingdaodaikaizengzhishuifapiao.dwcxa.com;
nanjingzengzhishuifapiao.dwcxa.com;
nanjingkaizengzhishuifapiao.dwcxa.com;
nanjingdaikaizengzhishuifapiao.dwcxa.com;
wuxizengzhishuifapiao.dwcxa.com;
wuxikaizengzhishuifapiao.dwcxa.com;
wuxidaikaizengzhishuifapiao.dwcxa.com;
suzhouzengzhishuifapiao.dwcxa.com;
suzhoukaizengzhishuifapiao.dwcxa.com;
suzhoudaikaizengzhishuifapiao.dwcxa.com;
shenyangzengzhishuifapiao.dwcxa.com;
shenyangkaizengzhishuifapiao.dwcxa.com;
shenyangdaikaizengzhishuifapiao.dwcxa.com;
{
hr = m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.mdb","","",adModeUnknown);///连接数据库
///上面一句中连接字串中的Provider是针对ACCESS2000环境的,对于ACCESS97,需要改 为:Provider=Microsoft.Jet.OLEDB.3.51; }
}
catch(_com_error e)///捕捉异常
{
CString errormessage;
errormessage.Format("连接数据库失败!
错误信息:%s",e.ErrorMessage());
AfxMessageBox(errormessage);///显示错误信息
}