vc 實現反射式資料庫模版(4 實現資料庫模版)

2021-07-27 10:16:10 字數 1638 閱讀 9747

接上篇vc++實現反射式資料庫模版(3.序列化、反序列化與訊息對映)

前三節參照mfc實現了資料模型的序列化工作。這一節就利用ado完成資料庫模版,這裡實現增加和查詢功能,有興趣可以自己參照完成刪除和更新。

由於查詢結果可能是乙個集合,這裡我們把資料模型設計成煉表,只需在基類增加tdobject* m_pnextobject;指向下個資料模型的指標。

參照軟體設計原則,我們把業務物件和業務邏輯分開。建立tdlogic做為我們的資料操作模版。

#pragma once

#include"tdobject.h"

//連線字串

id這裡做為自增主鍵(注意標識規範選擇是)。

使用時我們只需要將資料物件傳遞進去就可以了,十分方便。

//初始化com

coinitialize(null);

//測試

tdpersonp;

p.set_name("小明");

p.set_age(10);

tdcarc;

c.set_name("賓士");

c.set_price("500000.5");

/*p.show();

c.show();*/

tdlogiclogic;

//增加資訊

logic.insert(&p);

logic.insert(&c);

//查詢資訊

printselect(&p);

printselect(&c);

couninitialize();

printselect是為了方便封裝的乙個測試函式,用於顯示查詢結果,直接看原始碼就可以了,這裡不做解釋。

執行結果:

結果不出意外,我們用乙個通用的函式實現了對不同資料模型的增加和查詢。

使用時我們的只需要建立自己的資料模型類繼承

tdobject,

新增初始化巨集,實現巨集和初始化成員變數及成員變數對映。

後續優化:這四節簡單實現了功能,後續擴充套件優化空間仍然很大,比如可以通過智慧型指標替換接收的鍊錶,這樣既能防止記憶體洩漏更加方便操作;tdlogic用單例模式來實現等。這些都需要根據具體功能和習慣自己去研究了。

到這裡資料庫模版章節已經完了,後續我們會在該基礎上繼續實現與http伺服器的soap互動,從c/s過渡到b/s。

文中測試使用資料庫在原始碼首頁,方便新增測試。

使用反射實現多資料庫的支援

現今資料庫行業中可供選擇的資料庫有很多,oracle,sql,access等等,而且不同的資料庫又有不同的標準,即使同樣由微軟推出的sql和access也有一些語句是sql支援而access不支援的,就更不要說其它的特性了。那麼,如果我們的使用者是未知的,並不知道將來使用這個系統的使用者使用的是什麼...

VC實現ODBC資料庫操作例項解析

開啟資料庫 cdatabase database database.openex t dsn zhuxue cdatabase noodbcdialog zhuxue為資料來源名稱 關聯記錄集 crecordset recset database 查詢記錄 cstring ssql1 ssql1 s...

分布式鎖 資料庫實現

select 檢索出的資料,for update 加上了一把鎖,其他的人是不能修改這個資料的,也不能在給這個資料加鎖。其他執行緒可以檢索出來,但是我在用 for update 再給這些資料加鎖是加不上的,因為這個鎖呢,已經被前乙個執行緒給鎖住了。其他人是不能給它加鎖的,在加鎖的期間,其他人也不能修改...