VC的另類資料庫程式設計(轉)
一、 製作VB資料庫訪問ACTIVEX DLL
1、首先使用VB6.0建立一個心得ACTIVEX DLL工程,將工程命名為prjado、將類命名為clsado。
2、為工程新增ADO物件庫的引用。工程->引用:Microsoft ActiveX Data Objects2.0 Library
3、為類增加兩個新的變數:
4、增加初始化函式
建立到資料來源的物理連線
指定Command物件當前所屬的 Connection 物件。
5、資料庫操作函式
將引數儲存到SMS.MDB的COMDATA表中
注意:函式宣告時必須指定引數是傳值(ByVal),否則VB預設為按地址傳遞(ByRef)
6、連線關閉函式
關閉連線並且釋放物件。
儲存工程,編譯prjado.dll,這就是我們的服務元件,它完成了呼叫ADO物件實現對資料庫操作的功能。
二、在VC程式中呼叫服務元件
1、執行VC 6.0,使用MFC程式嚮導建立一個新的基於對話方塊的MFC應用程式。
2、使用#import匯入服務元件,複製PRJADO.DLL到VC工程目錄,開啟STDAFX.H檔案增加如下程式碼:
在stdafx.h檔案匯入dll能夠讓編譯器在執行時連線dll的型別庫,#import它能夠自動產生一個對GUIDs的定義,同時自動生成對clsado物件的封裝。同時能夠列舉它在類中所能找到的型別, VC++會在編譯的時候自動生成兩個檔案:
一個標頭檔案(.tlh),它包含了列舉的型別和對型別庫中物件的定義;
一個實現檔案(.tli)對型別庫物件模型中的方法產生封裝。
Namespace(名字空間)用來定義一個名字空間,使用unsing就可以將當前的型別上下文轉換名字空間所定地,讓我們可以訪問服務元件的方法。
如果我們修改了服務元件程式,建議刪除這兩個檔案後重新完整編譯工程,以便讓編譯器重新列舉類的屬性以及函式。
3、在對話方塊中新新增一按鈕,標題設為"測試"。雙擊"測試"按鈕,系統提示新建一函式OnButton1對應於該按鈕的CLICK事件。OnButton1函式的具體程式碼如下
儲存工程後編譯執行VC 程式,點選"測試"按鈕,等待完成提示後,我們開啟資料庫就可以看到剛才新增的記錄了。
結語:
綜上所述,在實際的應用程式開發中,利用元件技術,我們可以進行VC和VB混合程式設計,充分地發揮開發的優勢,可以很好地加快軟體的開發進度,並且極大的改善程式的可維護性和可用性。
[@more@]
1、首先使用VB6.0建立一個心得ACTIVEX DLL工程,將工程命名為prjado、將類命名為clsado。
2、為工程新增ADO物件庫的引用。工程->引用:Microsoft ActiveX Data Objects2.0 Library
3、為類增加兩個新的變數:
Dim con As New ADODB.Connection 定義ADO會話連線物件 Dim cmd As New ADODB.Command 定義ADO命令物件 |
4、增加初始化函式
Public Function ado_Init() con.Open "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=True;Data Source=sms.mdb" cmd.ActiveConnection = con End Function |
建立到資料來源的物理連線
指定Command物件當前所屬的 Connection 物件。
5、資料庫操作函式
Public Function ado_add(ByVal strdata As String) cmd.CommandText = "insert into comdata (timm,datt) values (" + (Format(Date, "YYYY-MM-DD ")) + Str((Time)) + "," + (strdata) + ")" cmd.Execute End Function |
將引數儲存到SMS.MDB的COMDATA表中
注意:函式宣告時必須指定引數是傳值(ByVal),否則VB預設為按地址傳遞(ByRef)
6、連線關閉函式
Public Function ado_UnInit() con.Close Set cmd = Nothing Set con = Nothing End Function |
關閉連線並且釋放物件。
儲存工程,編譯prjado.dll,這就是我們的服務元件,它完成了呼叫ADO物件實現對資料庫操作的功能。
二、在VC程式中呼叫服務元件
1、執行VC 6.0,使用MFC程式嚮導建立一個新的基於對話方塊的MFC應用程式。
2、使用#import匯入服務元件,複製PRJADO.DLL到VC工程目錄,開啟STDAFX.H檔案增加如下程式碼:
# import "prjado.dll" using namespace prjado; 這段程式碼應該放置在 file://{{AFX_INSERT_LOCATION}} // Microsoft Visual C++ will insert additional declarations immediately 之後和#endif 之前。 |
在stdafx.h檔案匯入dll能夠讓編譯器在執行時連線dll的型別庫,#import它能夠自動產生一個對GUIDs的定義,同時自動生成對clsado物件的封裝。同時能夠列舉它在類中所能找到的型別, VC++會在編譯的時候自動生成兩個檔案:
一個標頭檔案(.tlh),它包含了列舉的型別和對型別庫中物件的定義;
一個實現檔案(.tli)對型別庫物件模型中的方法產生封裝。
Namespace(名字空間)用來定義一個名字空間,使用unsing就可以將當前的型別上下文轉換名字空間所定地,讓我們可以訪問服務元件的方法。
如果我們修改了服務元件程式,建議刪除這兩個檔案後重新完整編譯工程,以便讓編譯器重新列舉類的屬性以及函式。
3、在對話方塊中新新增一按鈕,標題設為"測試"。雙擊"測試"按鈕,系統提示新建一函式OnButton1對應於該按鈕的CLICK事件。OnButton1函式的具體程式碼如下
HRESULT hresult; CLSID clsid; CoInitialize(NULL); file://初始化COM介面 hresult=CLSIDFromProgID(OLESTR("prjado.clsado"), &clsid); file://得到元件的CLSID _clsado *t; file://這就是我們在PRJADO.DLL中定義的類 hresult=CoCreateInstance(clsid,NULL,CLSCTX_INPROC_SERVER,__uuidof(_clsado),(LPVOID *) &t); file://初始化CLSADO,CoCreateInstance()的第一個引數是物件的CLSID(類程式碼),這個128位的編碼唯一地標識了元件服務,它的路徑和執行引數等資訊都放在系統登錄檔中;第二個引數一般情況下設為NULL;第三個引數用來指明物件的執行環境,如遠端或本地,此處設為CLSCTX_INPROC_SERVER,標明是服務元件是一個DLL;第四個引數指明用來與物件通訊介面的ID,這也是一個128位的編碼;第五個引數是用來接收物件的介面指標。 if(FAILED(hresult)) { AfxMessageBox("初始化服務元件失敗"); return; } file://如果初始化失敗,彈出提示對話方塊後退出程式 t->ado_Init() ; file://呼叫初始化函式 t->ado_add("從VC呼叫元件") ; file://呼叫增加記錄函式 t->ado_UnInit (); file://呼叫關閉連線函式 t->Release(); file://釋放介面指標 CoUninitialize(); // 關閉COM庫的聯接 AfxMessageBox("呼叫服務元件完成"); |
儲存工程後編譯執行VC 程式,點選"測試"按鈕,等待完成提示後,我們開啟資料庫就可以看到剛才新增的記錄了。
結語:
綜上所述,在實際的應用程式開發中,利用元件技術,我們可以進行VC和VB混合程式設計,充分地發揮開發的優勢,可以很好地加快軟體的開發進度,並且極大的改善程式的可維護性和可用性。
[@more@]
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10172717/viewspace-928876/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 在VC++中建立自定義資料庫類 (轉)C++資料庫
- WINDOWS CE 資料庫程式設計 (轉)Windows資料庫程式設計
- 另類網路層設計
- Delphi資料庫程式設計教程(九) (轉)資料庫程式設計
- Java的資料庫程式設計(JDBC)技術[轉]Java資料庫程式設計JDBC
- 談談VB的資料庫程式設計方式 (轉)資料庫程式設計
- VB資料庫程式設計的幾點心得 (轉)資料庫程式設計
- 關於VC中的DLL的程式設計 (轉)程式設計
- 簡析J2EE應用程式資料庫類設計模式 (轉)資料庫設計模式
- VC程式設計中常用快捷鍵 (轉)C程式程式設計
- Oracle,SqlServer,Access資料庫通用訪問類設計(轉)OracleSQLServer資料庫
- 【資料庫設計】資料庫的設計資料庫
- ADO資料庫程式設計入門(轉)資料庫程式設計
- C#下資料庫程式設計(二) (轉)C#資料庫程式設計
- 使用設計模式構建通用資料庫訪問類 (轉)設計模式資料庫
- 用Python實現資料庫程式設計 (轉)Python資料庫程式設計
- 資料庫實驗八 資料庫程式設計資料庫程式設計
- 資料庫實驗五:資料庫程式設計資料庫程式設計
- 資料庫設計中的敏捷方法 (轉)資料庫敏捷
- Windows下的VC++動態連結庫程式設計WindowsC++程式設計
- 關於資料庫中客戶基本資料儲存資訊分類的設計說明 (轉)資料庫
- 非Access資料庫在VB的程式設計及應用 (轉)資料庫程式設計
- XP空間――挖掘“任務計劃”的另類功能(轉)
- 例項解析網路程式設計中的另類記憶體洩漏程式設計記憶體
- 一種獲取SAP HANA資料庫表條目數的另類方法資料庫
- 程式設計師面試之MySQL資料庫表的設計程式設計師面試MySql資料庫
- SAP ABAP SM50的另類用途 - ABAP工作程式對資料庫表讀取操作的檢測資料庫
- OpenBSD――另類安裝法(轉)
- 利用VC++程式設計實現程式自動啟動 (轉)C++程式設計
- Go Web 程式設計之 資料庫GoWeb程式設計資料庫
- 抽獎小程式資料庫設計資料庫
- python mysql資料庫程式設計PythonMySql資料庫程式設計
- 資料庫程式設計注意事項資料庫程式設計
- JAVA程式與資料庫設計困惑~Java資料庫
- 資料庫程式設計方法總結資料庫程式設計
- Python SQLite資料庫程式設計PythonSQLite資料庫程式設計
- 程式間通訊的另類實現
- 淺談資料庫設計技巧(下)(轉)資料庫