国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
在Visual C++中如何利用UDL文件來建立ADO連接

Visual C++中如何利用UDL文件來建立ADO連接

  使用通用數(shù)據(jù)連接文件(*.UDL,以下簡稱文件)來創(chuàng)建ADO連接,可以和ODBC一樣可視化地定義要連接的數(shù)據(jù)源,從而實(shí)現(xiàn)數(shù)據(jù)訪問的透明性。

  1.使用UDL文件來創(chuàng)建ADO連接

  創(chuàng)建ADO的連接,首先要設(shè)置ADO連接對象的ConnectionString屬性,該屬性提供所要連接的數(shù)據(jù)庫類型、數(shù)據(jù)所處服務(wù)器、要訪問的數(shù)據(jù)庫和數(shù)據(jù)庫訪問的安全認(rèn)證信息。比較專業(yè)的方法是在ConnectionString中直接提供以上信息,下面是訪問不同類型數(shù)據(jù)源設(shè)置ConnectionString的標(biāo)準(zhǔn):

訪問ODBC數(shù)據(jù)

"Provider=MSDASQL;DSN=dsnName;UID=userName;PWD=userPassword;"

訪問ORACLE數(shù)據(jù)庫

"Provider=MSDAORA;Data Source=serverName;User ID=userName; Password=userPassword;"

訪問MS SQL數(shù)據(jù)庫

"Provider=SQLOLEDB;Data Source=serverName;Initial Catalog=databaseName; User ID=userName;Password=userPassword;"

訪問ACCESS 數(shù)據(jù)庫

"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=databaseName;User ID=userName;Password=userPassword;" 

  上述的連接屬性設(shè)置標(biāo)準(zhǔn)隨著數(shù)據(jù)源的類型不同而變化,軟件用戶常常不習(xí)慣這種設(shè)置方式,都希望有可視化的數(shù)據(jù)源設(shè)置方法。為此Microsoft提供了通用數(shù)據(jù)連接文件(.UDL)來建立和測試ADO連接屬性。ADO連接對象可以很方便地使用UDL文件來連接數(shù)據(jù)源,下面例子使用my_data1.udl來創(chuàng)建ADO連接。

_ConnectionPtr m_pDBConn;

m_pDBConn.CreateInstance(__uuidof(Connection));

m_pDBConn->ConnectionString ="File Name=c:\mydir\my_data1.udl";

m_pDBConn->Open("","","",NULL); 

 

  這樣一來無論數(shù)據(jù)源如何變化,在軟件中都可以用統(tǒng)一的方法編程。當(dāng)數(shù)據(jù)源改變時,只要雙擊相應(yīng)的udl文件即可可視化地設(shè)置數(shù)據(jù)源,無需更改軟件。

  因?yàn)?/span>ADOCOM接口,為了軟件的可靠性,打開ADO連接時,可以加入異常處理代碼。

try{

m_pDBConn->Open("","","",NULL);

}catch(_com_error &e){

//處理異常的代碼

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

m_pDBConn=NULL;

} 

  因?yàn)?/span>_ConnectionPtr m_pDBConn是智能指針,應(yīng)在處理異常代碼時將智能指針設(shè)為NULL后將自動將引用計(jì)數(shù)降為0

  如果不出現(xiàn)異常,只要在使用完m_pDBConn,只要引用Close方法即可。

 

  2.創(chuàng)建你所需的UDL文件

  在你所想創(chuàng)建UDL文件的目錄中單擊右鍵,選擇從菜單 新建|Microsoft 數(shù)據(jù)連接,然后將新創(chuàng)建的UDL文件更改為你所希望的文件名(.UDL擴(kuò)展名不能改變)。

  注:如果操作系統(tǒng)是Window 2000,先創(chuàng)建一個文本文件,再將該文本文件的擴(kuò)展名改為 "udl"。

  然后雙擊所創(chuàng)建的UDL文件,即可視化地完成數(shù)據(jù)源的設(shè)定。


完整示例如下:


#include <iostream>
//#import "C:\program files\common files\system\ado\msado15.dll"  no_namespace rename("EOF","adoEOF")
#import "msado25.tlb" rename("EOF", "adoEOF")

using namespace std;
using namespace ADODB;

#pragma warning(disable: 4146)  // unary minus operator applied to unsigned type

int main()
{   
    _ConnectionPtr m_pconnection=NULL;
    CoInitialize(NULL);
    m_pconnection.CreateInstance(__uuidof(Connection));
    if (NULL == m_pconnection)
    {
        cout<<"The pointer is null!"<<endl;
        return -1;
    }
   
    try
    {
        m_pconnection->ConnectionString = "File Name=1.udl";
        m_pconnection->Open("","","",NULL);
        cout<<"Connect database success!"<<endl;
        _RecordsetPtr m_pRecordSet;
        m_pRecordSet.CreateInstance(__uuidof(Recordset));
        m_pRecordSet->Open("select * from RefEquipmentType_BSS",
            (IDispatch *)m_pconnection,
            adOpenStatic,
            adLockReadOnly,
            adCmdText
            );
        while (!m_pRecordSet->adoEOF)
        {
            _variant_t tempData0=m_pRecordSet->GetCollect((_variant_t)(long)0);
            _variant_t tempData1=m_pRecordSet->GetCollect((_variant_t)(long)1);
            cout<<tempData0.iVal<<" : "<<tempData1.bstrVal<<endl;
            m_pRecordSet->MoveNext();
        }
    }
    catch (_com_error e)
    {
        cout<<e.ErrorMessage()<<endl;
    }
    return 0;
}

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
VC++ ADO開發(fā)實(shí)踐之二
UG二次開發(fā)中外部數(shù)據(jù)訪問方法研究UG二次開發(fā)源代碼Siemens NX二次開發(fā)
自己如何正確獲取MYSQL的ADO連接字符串
VC++ ADO連接ACCESS詳解
ADO ACCESS 懶人的開發(fā)簡單指南
Delphi使用ADO直接訪問Excel數(shù)據(jù)文件
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服