用ADO串連SQL Server資料庫

來源:互聯網
上載者:User

這篇文章不是介紹ADO串連資料庫的原理的,而是寫一下串連的步驟和簡便方法。

一、擷取連接字串。

串連資料庫時需要用到  _ConnectionPtr  對象的open方法,參數如下:

HRESULT Connection15::Open(_bstr_t  ConnectionString,  _bstr_t   UserID,  _bstr_t   Password,  _bstr_t   Options)

在寫這個ConnectionString連接字串時,有的人感覺很困難,下面是一種簡單的方法來獲得這個連接字串。

1.1 建立一個.udl的檔案,開啟,在提供的程式選項中選擇Microsoft OLE DB Provider for SQL Server 然後下一步。如:


1.2 在串連中填寫必要的資訊後,點擊測試連接,如果成功會出現如所示的提示框。


其中的伺服器名稱就是你SQL Server伺服器的名稱,如果不知道,可以在SQL Server中的伺服器屬性中看到,如:

二、下面貼出控制台程式,說明串連過程。編譯環境:Visual Studio 2010 旗艦版注意點:1、如果發現執行後結果中有顯示亂碼現象,請將工程屬性中的字元集項設定為:使用多位元組字元集或未設定。2、注意程式中的連接字串是適合我電腦資料庫的,你要是測試的需修改為你自己(可以按照上面的方法來獲得連接字串)
//匯入一個ADO動態連結程式庫msado15.dll#import "C:\Program Files\Common Files\System\ADO\\msado15.dll"#include <stdio.h>inline void TESTHR(HRESULT x) {if FAILED(x) _com_issue_error(x);};void ConnectionStringX(_ConnectionPtr pConnection);//串連資料庫_bstr_t GetState(int intState);//得到串連狀態void PrintProviderError(_ConnectionPtr pConnection); //輸出錯誤void PrintComError(_com_error &e);//輸出錯誤void ExitConnect(_ConnectionPtr pConnection);//關閉串連void main(){// 初始化OLE/COM庫環境     if(FAILED(::CoInitialize(NULL))){        return;}//建立連線物件     _ConnectionPtr pConnection = NULL;    ConnectionStringX(pConnection);ExitConnect(pConnection);// 釋放環境    ::CoUninitialize();}void ConnectionStringX(_ConnectionPtr pConnection){    HRESULT  hr = S_OK;    try    {        //ADO方式串連資料庫        TESTHR(pConnection.CreateInstance( __uuidof(Connection)));        pConnection->ConnectionString =  "Provider='SQLOLEDB';Data Source='SD-20120421UVIT\\SQLEXPRESS';""Initial Catalog='master';Integrated Security='SSPI';";        pConnection->ConnectionTimeout = 10;        pConnection->Open("","","",adConnectUnspecified);        printf("Connection1 state: %s\n",(LPCSTR)GetState(pConnection->State));     }    catch(_com_error &e)    {    //列印錯誤        PrintProviderError(pConnection);PrintComError(e);    }}//得到串連狀態_bstr_t GetState(int intState) {    _bstr_t strState;     switch(intState)     {        case adStateClosed:            strState = "adStateClosed";            break;        case adStateOpen:            strState = "adStateOpen";            break;        default:        ;    }    return strState;}//列印串連過程中的錯誤訊息void PrintProviderError(_ConnectionPtr pConnection){    // 列印連線物件的發生的錯誤    ErrorPtr  pErr = NULL;    if( (pConnection->Errors->Count) > 0)    {        long nCount = pConnection->Errors->Count;        for(long i = 0; i < nCount; i++)        {            pErr = pConnection->Errors->GetItem(i);            printf("Error number: %x\t%s\n", pErr->Number,(LPCSTR)pErr->Description);        }    }}//列印COM錯誤void PrintComError(_com_error &e){    _bstr_t bstrSource(e.Source());    _bstr_t bstrDescription(e.Description());    printf("Error\n");    printf("\tCode = %08lx\n", e.Error());    printf("\tCode meaning = %s\n", e.ErrorMessage());    printf("\tSource = %s\n", (LPCSTR) bstrSource);    printf("\tDescription = %s\n", (LPCSTR)bstrDescription);}//關閉串連void ExitConnect(_ConnectionPtr pConnection){    if (pConnection)        if (pConnection->State == adStateOpen)            pConnection->Close();}

結果如:


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.