ado连接数据库:WINDOWS平台使用ADO连接数据库



在WINDOWS平台通过ADO连接数据库应该是最标准但是由于使是通过COM技术实现问题就变得复杂了许多 同时许多开源编译器不支持或者不是很好地支持COM技术给我们学习、开发带来了些困难

在 这里我们讨论使用Borland C Free Compiler 5.5 通过ADO来访问ACCESS文件原本BCC55对COM支持也不是很好许多COM支持文件都没有所以需要另外从SF上下载BCC SDK当前版本是0.0.7.1请自行下载

此外我们不打算通过 import  \"...\\msado15.dll\" 办法来使用ADO而是用过使用 ado.h 办法来使用ADO

# Initguid.h
# adoid.h    // ADO GUID’s
# ado.h   // ADO CLASS


再引用对COM支持不过感觉上假如不用COM中BSTR转换成char*和ADOConnection中处理可以不引 用下面COM(未进行严格测试)反正影响不大WINDOWS总有COM支持起码目前WINDOWS是也就用了

# comutil.h
#pragma comment( lib, \"comsupp.lib\"  )  //in bccsdk package


好了定义ADO相关变量:

    ADOField*  pFld;
    ADOFields* pFlds;
    ADORecord* pRs;
    ADOConnection* pConn;


然后化COM、创建 ADOConnection、ADORecord 例子:
    ::CoInitialize (NULL);
    CoCreateInstance(CLSID_CADOConnection, NULL,
            CLSCTX_INPROC_SERVER, IID_IADOConnection15, (LPVOID*)&pConn);
    CoCreateInstance(CLSID_CADORecord, NULL,
            CLSCTX_INPROC_SERVER, IID_IADORecord, (LPVOID*)&pRs);


打开ADO连接:
    pConn-〉Open( (_bstr_t)L\"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Contract_me_data.mdb\",
            L\"\",
            L\"\",
            adConnectUnspecied);



打开数据集:(sql是variant类型、hr是HRESULT类型请自行定义)

    hr = pRs-〉Open(sql, (_variant_t)pConn, adOpenStatic, adLockOptimistic, adCmdText);

    (SUCCEEDED(hr) ){
           //處理數據
    }


使用时要判断是否EOF和BOF
获取数据时种思路方法是先得到Fields再获得指定Field再根据Fieldr get_Value(&value)思路方法得到数据;另种思路方法是直接通过ADORecordget_Collect(index, &value)来得到数据如果不想得到字段相关属性用后种思路方法是很直接 [Page]
要注意是数据是variant类型可以用_com_util::ConvertBSTR转换成

处理结束关闭连接、释放COM环境:(其中state是long类型请自行定义)
    (!FAILED(pRs-〉get_State(&state)))
        (state!=adStateClosed){
            pRs-〉Close;
            pRs-〉Release;
            pRs=NULL;
        }

    (!FAILED(pConn-〉get_State(&state)))
        (state!=adStateClosed){
            pConn-〉Close;
            pConn-〉Release;
            pConn=NULL;
        }
    ::CoUninitialize ;


这是个基本思路和思路方法对于连接其它类型数据库都是相似只是改变连接串就可以了当然SQL差别就另当别论了

可以看出C使用ADO和VB、DELPHI等等语言是很相似ADO是“标准”是吧
Tags:  ado.net连接数据库 vcado连接数据库 vbado连接数据库 ado连接数据库

延伸阅读

最新评论

发表评论