c ADO程式設計 connection物件

2021-08-20 10:36:31 字數 3201 閱讀 2347

connection物件的屬性有如下幾個:

1.connectionstring屬性:是連線字串,通過傳遞包含一系列由分號分隔的「argument=value」語句的詳細連線字串,可指定用於建立連線資料來源的資訊。連線串格式根據資料來源的不同有所不同。

2.open方法:建立到資料來源的物理連線。

open函式詳細定義:

hresult open (_bstr_t connectionstring,  

_bstr_t userid,

_bstr_t password,

long options)

引數意義:

connectionstring :可選,型別為字串,包含連線資訊,如果設定了connectionstring屬性,該引數可以不設定

userid:可選,字串,包含建立連線時所使用使用者名稱,如果沒有使用者名稱,可以不設定

password:可選,字串,包含建立時所使用的密碼。如果沒有密碼,可以不設定

option:可選,決定該方法是在連線建立之後(非同步)還是連線建立之前(同步)返回,

其值定義如下

enum __declspec(uuid("00000541-0000-0010-8000-00aa006d2ea4"))

connectoptionenum

;

option,還有一種解釋:

enum __declspec(uuid("00000521-0000-0010-8000-00aa006d2ea4"))

connectmodeenum

;

3.connectiontimeout屬性:該屬性指示在終止嘗試和產生錯誤前建立連線期間所等待的時間。該屬性值為長整型數,單位s,預設值為15。如果設為0,則ado無限等待直到開啟。需要在open之前呼叫。

m_pconnection->connectiontimeout = 5;///設定超時時間為5秒

4.state屬性:指明當前connection物件的狀態,0表示關閉,1表示已經開啟,我們可以通過讀取這個屬性來作相應的處理,例如:

if(m_pconnection->state)

m_pconnection->close(); ///如果已經開啟了連線則關閉它

狀態值有如下定義

enum __declspec(uuid("00000532-0000-0010-8000-00aa006d2ea4"))

objectstateenum

;

5.execute方法:函式原型

_recordsetptr connection15::execute ( _bstr_t commandtext, variant * recordsaffected, long options )

其中commandtext是命令字串,通常是sql命令。引數recordsaffected是操作完成後所影響的行數, 引數options表示commandtext中內容的型別,options 其值定義如下

enum __declspec(uuid("0000052e-0000-0010-8000-00aa006d2ea4"))

commandtypeenum

;

返回值:

execute()函式執行完後返回乙個指向記錄集的指標

6.close方法:用來關閉到資料來源的連線,訪問資料庫完成後,關閉連線,釋放有關聯的系統資源。關閉物件並不代表將它從記憶體中刪掉,可以更改它的屬性設定然後再次開啟它。

資料庫建立連線例項:

#include

"stdafx.h"

#include

"database.h"

#import

"c:\program files\common files\system\ado\msado15.dll"

\no_namespace rename("eof", "adoeof") rename("bof", "adobof")

int main()

m_pconnection->commandtimeout =

5; m_pconnection->connectionstring =

"provider=sqloledb.1;password=123456;persist security info=true;user id=sa;initial catalog=sample_db;data source=127.0.0.1";

m_pconnection->open("","", "", adconnectunspecified);

assert(m_pconnection->getstate() == adstateopen);

if (m_pconnection->getstate() != adstateopen)

_variant_t var;

m_precordset = m_pconnection->execute("select * from accountsinfo", &

var, adcmdtext);

cout << (int)var

<< endl;

cout << m_precordset->getfields() << endl;

string szlogonid = (_bstr_t)m_precordset->getcollect("logonid");

string sznickname = (_bstr_t)m_precordset->fields->getitem("nickname")->value;

cout << szlogonid << endl;

cout << sznickname << endl;

}catch (_com_error& e)

::couninitialize();

return

0;}

注意:

1.recordset物件和command物件使用open方法的第二個引數要用到_connectionptr.getinte***ceptr()函式返回值

2.執行execute方法。m_pconnectionptr->execute(_bstr_t(sql),&recordsaffected,adcmdtext);其中recordsaffected為_variant_t物件。

C ADO 實用封裝類

實用ado封裝,連線sql server,oracle bool open const string connectstr 開啟成功則返回true,否則返回false。void query const string sqlstr 初始化sql字串,引數用?佔位符表示,可帶不定引數。void prep...

關於設定http響應頭connection的作用

有的 會在伺服器執行一段時間後down掉,有很多原因可能造成這種現象 比如tomcat堆和非堆記憶體設定不足,程式沒能釋放記憶體空間造成記憶體 溢位,或者某些程序一直執行沒能釋放,造成cup資源大量消耗。但除了程式本身的原因,還有可能是客服端訪問造成 當然這個客戶端也包含如蜘蛛軟體等搜尋引擎 如果伺...

C Ado 在編譯的時候,報錯。

其中錯誤提示如下 fatal error c1083 cannot open type library file c program files common files system ado msjro.dll no such file or directory 1 首先確定在標頭檔案ado2.h...