ADO資料庫程式設計 總結2

2021-06-02 16:31:19 字數 1542 閱讀 4973

在使用ado技術運算元據庫時,訪問變數的資料型別都是com型別,這就要求經常在com型別和普通資料型別之間進行型別轉換。

ado中特有的資料型別包括以下三種:

1)variant

該型別是結構化的資料型別,它包含值成員和資料型別成員。

variant可以包含許多其他的資料型別:如variant、bstr、boolean、idispatch或者iunknow指標、貨幣、日期等。

com中由_variant_t 類來封裝和管理variant資料型別。

在使用ado物件模型運算元據庫時,如果物件的某個方法或者屬性運算元接受某個值,那麼通常表明該值在_variant_t 中傳遞。

注:在利用ado物件進行c++資料型別的相關資料庫操作(如將cstring型別的值新增到資料庫)時,需要進行強制型別轉換

例如:對於   cstring m_strname;

m_precordset->putcollect ( "姓名" , _variant_t ( m_strname ) );

2)bstr

該型別 ( basic string )也是結構化的資料型別,它包含字串和字串的長度。

com提供分配、處理和釋放bstr的方法,由_bstr_t類來封裝和管理bstr資料型別

在使用ado物件模型運算元據庫時,如果物件的某個方法或者屬性運算元接受乙個字串值,那麼通常表明該值的形式為_bstr_t,而非一般的cstring。

3)safearray

同樣是一種結構化的資料型別,包含其它資料型別的陣列。

在使用ado物件模型運算元據庫時,如果物件的某個方法或者屬性運算元接受或者返回乙個陣列,則陣列型別只能是safearray,而非通常意義上的c/c++陣列。

通常,從資料庫中取出的字段值大都在_variant_t中傳遞,下面給出從com型別variant向cstring型別轉換的通用函式。

該函式將為資料庫的訪問和操作提供極大便利。

cstring clefttreeview::varianttocstring(const _variant_t &var)

break;

case vt_blob:

case vt_blob_object:

case 0x2011:

strvalue = "[blob]";

break;

case vt_bool:   //布林型  

strvalue = var.boolval ? "true" : "false";

break;

case vt_date: //日期型

break;

case vt_null://null值

case vt_empty:   //空

strvalue = "";

break;

case vt_unknown:   //未知型別

default:

strvalue = "un_know";

break;

}return strvalue;}

from:

ADO資料庫程式設計總結 一

ado 技術簡介 ado是為ms 的強大的資料訪問介面 ole db 設計的,上乙個便於使用的應用程式層。ole db 為任何資料來源都提供了高效能的訪問,包括 關係型資料庫 非關係型資料庫 電子郵件 檔案系統 文字和圖形以及自定義業務物件等。ado 2.0 實際上是基於 msado15.dll 這...

ADO資料庫程式設計

一下 全部測試通過 連線資料庫 如下 hresult hr coinitialize null cstring strsql variant t user name try catch com error e 查詢資料庫 cstring sql select from data variant t ...

MFC Access資料庫(ADO資料庫程式設計)

最近專案需要使用到資料庫,專案本身使用的是mfc。於是選擇了簡單的access資料,本文將介紹本人如何在mfc使用的access資料庫。順帶提一句,本文使用的系統為win8.1,64位,編譯環境為vs2010和office2010,如出現連線問題,可以看看access的位數與系統位數是否一致。本文是...