在WINDOWS平台
![](/icons/46499dou.gif)
通过ADO连接数据库
![](/icons/46499dou.gif)
应该是最标准
![](/icons/46499de.gif)
![](/icons/46499dou2.gif)
但是由于使是通过COM技术实现
![](/icons/46499de.gif)
![](/icons/46499dou.gif)
问题就变得复杂了许多
![](/icons/46499dou2.gif)
同时
![](/icons/46499dou.gif)
也
![](/icons/46499yinwei.gif)
许多开源
![](/icons/46499de.gif)
编译器不支持或者不是很好地支持COM技术
![](/icons/46499dou.gif)
给我们学习、开发带来了
![](/icons/46499yi.gif)
些困难
在 这里
![](/icons/46499dou.gif)
我们讨论使用Borland C
![](/icons/46499jiajia.gif)
Free Compiler 5.5 通过ADO来访问ACCESS文件
![](/icons/46499dou2.gif)
原本
![](/icons/46499dou.gif)
BCC55对COM
![](/icons/46499de.gif)
支持也不是很好
![](/icons/46499dou.gif)
许多COM
![](/icons/46499de.gif)
支持文件都没有
![](/icons/46499dou.gif)
所以
![](/icons/46499dou.gif)
需要另外从SF上下载BCC
![](/icons/46499de.gif)
SDK
![](/icons/46499dou.gif)
当前版本是0.0.7.1
![](/icons/46499dou.gif)
请自行下载
此外
![](/icons/46499dou.gif)
我们不打算通过 import \"...\\msado15.dll\"
![](/icons/46499de.gif)
办法来使用ADO
![](/icons/46499dou.gif)
而是用过使用 ado
![](/icons/46499int.gif)
.h
![](/icons/46499de.gif)
办法来使用ADO
#
![](/icons/46499include.gif)
Initguid.h
#
![](/icons/46499include.gif)
adoid.h // ADO GUID’s
#
![](/icons/46499include.gif)
ado
![](/icons/46499int.gif)
.h // ADO CLASS
再引用对COM
![](/icons/46499de.gif)
支持
![](/icons/46499dou2.gif)
不过
![](/icons/46499dou.gif)
感觉上
![](/icons/46499dou.gif)
假如不用COM中
![](/icons/46499de.gif)
BSTR转换成char*
![](/icons/46499de.gif)
![](/icons/46499hanshu.gif)
![](/icons/46499dou.gif)
和ADOConnection中
![](/icons/46499de.gif)
![](/icons/46499cuowu.gif)
处理
![](/icons/46499dou.gif)
可以不引 用下面
![](/icons/46499de.gif)
COM
![](/icons/46499de.gif)
(未进行严格测试)
![](/icons/46499dou2.gif)
反正影响不大
![](/icons/46499dou.gif)
![](/icons/46499yinwei.gif)
WINDOWS总有COM
![](/icons/46499de.gif)
支持
![](/icons/46499de.gif)
![](/icons/46499dou.gif)
起码目前
![](/icons/46499de.gif)
WINDOWS是
![](/icons/46499dou.gif)
也就用了
#
![](/icons/46499include.gif)
comutil.h
#pragma comment( lib, \"comsupp.lib\" ) //in bccsdk package
好了
![](/icons/46499dou.gif)
定义ADO相关
![](/icons/46499de.gif)
变量:
ADOField* pFld;
ADOFields* pFlds;
ADORecord
![](/icons/46499set.gif)
* pRs;
ADOConnection* pConn;
然后
![](/icons/46499dou.gif)
![](/icons/46499chushi.gif)
化COM、创建 ADOConnection、ADORecord
![](/icons/46499set.gif)
例子:
::CoInitialize (NULL);
CoCreateInstance(CLSID_CADOConnection, NULL,
CLSCTX_INPROC_SERVER, IID_IADOConnection15, (LPVOID*)&pConn);
CoCreateInstance(CLSID_CADORecord
![](/icons/46499set.gif)
, NULL,
CLSCTX_INPROC_SERVER, IID_IADORecord
![](/icons/46499set.gif)
, (LPVOID*)&pRs);
打开ADO连接:
pConn-〉Open( (_bstr_t)L\"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Contract_me_data.mdb\",
L\"\",
L\"\",
adConnectUnspec
![](/icons/46499if.gif)
ied);
打开数据集:(sql是variant类型、hr是HRESULT类型
![](/icons/46499dou.gif)
请自行定义)
hr = pRs-〉Open(sql, (_variant_t)pConn, adOpenStatic, adLockOptimistic, adCmdText);
![](/icons/46499if.gif)
(SUCCEEDED(hr) ){
//處理數據
}
使用时
![](/icons/46499dou.gif)
要判断是否EOF和BOF
获取数据时
![](/icons/46499dou.gif)
有
![](/icons/46499yi.gif)
种思路方法是先得到Fields
![](/icons/46499dou.gif)
再获得指定
![](/icons/46499de.gif)
Field
![](/icons/46499dou.gif)
再根据Fieldr
![](/icons/46499de.gif)
get_Value(&value)思路方法得到数据;另
![](/icons/46499yi.gif)
种思路方法是
![](/icons/46499dou.gif)
直接通过ADORecord
![](/icons/46499set.gif)
![](/icons/46499de.gif)
get_Collect(index, &value)来得到数据
![](/icons/46499dou2.gif)
如果不想得到字段
![](/icons/46499de.gif)
相关属性
![](/icons/46499dou.gif)
用后
![](/icons/46499yi.gif)
种思路方法是很直接
![](/icons/46499de.gif)
![](/icons/46499dou2.gif)
[Page]
要注意
![](/icons/46499de.gif)
是数据是variant类型
![](/icons/46499dou.gif)
可以用_com_util::ConvertBSTR
![](/icons/46499ToString.gif)
![](/icons/46499kh.gif)
转换成
![](/icons/46499zifu.gif)
串
处理结束
![](/icons/46499dou.gif)
关闭连接、释放COM环境:(其中
![](/icons/46499dou.gif)
state是long类型
![](/icons/46499dou.gif)
请自行定义)
![](/icons/46499if.gif)
(!FAILED(pRs-〉get_State(&state)))
![](/icons/46499if.gif)
(state!=adStateClosed){
pRs-〉Close
![](/icons/46499kh.gif)
;
pRs-〉Release
![](/icons/46499kh.gif)
;
pRs=NULL;
}
![](/icons/46499if.gif)
(!FAILED(pConn-〉get_State(&state)))
![](/icons/46499if.gif)
(state!=adStateClosed){
pConn-〉Close
![](/icons/46499kh.gif)
;
pConn-〉Release
![](/icons/46499kh.gif)
;
pConn=NULL;
}
::CoUninitialize
![](/icons/46499kh.gif)
;
这是
![](/icons/46499yi.gif)
个基本
![](/icons/46499de.gif)
思路和思路方法
![](/icons/46499dou.gif)
对于连接其它类型
![](/icons/46499de.gif)
数据库
![](/icons/46499dou.gif)
都是相似
![](/icons/46499de.gif)
![](/icons/46499dou.gif)
只是改变连接
![](/icons/46499zifu.gif)
串就可以了
![](/icons/46499dou2.gif)
当然
![](/icons/46499dou.gif)
SQL
![](/icons/46499de.gif)
差别
![](/icons/46499dou.gif)
就另当别论了
可以看出
![](/icons/46499dou.gif)
C
![](/icons/46499jiajia.gif)
使用ADO
![](/icons/46499dou.gif)
和VB、DELPHI等等语言是很相似
![](/icons/46499de.gif)
![](/icons/46499dou2.gif)
![](/icons/46499yinwei.gif)
ADO是“标准”
![](/icons/46499de.gif)
![](/icons/46499dou.gif)
是吧
延伸阅读
最新评论