VB訪問數據庫的方法與原則
發表于:2007-07-14來源:作者:點擊數:
標簽:
1. VB 訪問 數據庫 的原則 總則:具體問題具體分析,根據具體的環境、條件、要求而采用適當的方案 *代碼的重用和運行的效率 例如:通過使用ODBC數據源連接數據庫的方法,可在變換多種數據庫類型的情況下,而不用頻繁修改代碼。用VB SQL 通過DB-Library就做不
1.
VB訪問
數據庫的原則
總則:具體問題具體分析,根據具體的環境、條件、要求而采用適當的方案
*代碼的重用和運行的效率
例如:通過使用ODBC數據源連接數據庫的方法,可在變換多種數據庫類型的情況下,而不用頻繁修改代碼。用VB
SQL通過DB-Library就做不到。而ODBC接口并不是VB訪問數據庫運行效率最高的方法。同樣,同是使用ODBC接口的ADO的效率要高于RDO
*實現的簡便性,易維護性
如果一種方法實現起來很復雜,工程的
開發必然造成人力物力的浪費,同時這樣設計出來的應用程序只會支持起來更復雜或維護時更困難。例如:本地需要訪問ISAM或Jet類型數據源,那么就使用DAO/Jet,而沒有必要使用通過ODBC的方法。RDC實現起來要較RDO更容易
*安全性原則
報這一條應根據環境和條件決定。例如局域網的
網絡安全性要好于廣域網因而可直接利用數據控件如DC,這樣實現起來方便快捷,而廣域網需要大量的錯誤捕獲,如用RDC就不如用RDO易控制錯誤。
2.VB訪問數據庫的方法
VB訪問數據庫的方法很多,一般情況下分成兩大類,而每一類又有很多方法。
數據訪問接口功能及含義:
ADC:高級數據連接器(AdvancedDataConnector):提供綁定ADO數據源到窗體的數據綁定控件上。ADC主要是一種直接訪問或者通過ADO訪問遠程OLEDB對象的一種技術,它也支持主要應用在微軟IE瀏覽器上的數據綁定控件。它是特地為Web上的瀏覽器為基礎的應用程序而設計的。
ADO:Active數據對象(ActiveDataObjects):ADO實際是一種提供訪問各種數據類型的連接機制。ADO設計為一種極簡單的格式,通過ODBC的方法同數據庫接口??梢允褂萌魏我环NODBC數據源,即不止適合于
SQLServer、
Oracle、A
clearcase/" target="_blank" >ccess等數據庫應用程序,也適合于Excel表格、文本文件、圖形文件和無格式的數據文件。ADO是基于OLE-DB之上的技術,因此ADO通過其內部的屬性和方法提供統一的數據訪問接口方法。
DAO:數據訪問對象(DataAccessObjects):是一種
面向對象的界面接口。通過DAO/Jet功能可以訪問ISAM數據庫,使用DAO/ODBCDirect功能可以實現遠程RDO功能。使用DAO的程序編碼非常簡單,DAO提供豐富的游標(Cursor)類型的結果集和非游標(Cursor-Less)類型的結果集,同DDL(數據描述語言)的功能很類似。
DAO模型是設計關系數據庫系統結構的對象類的集合。它們提供了完成管理這樣一個系統所需的全部操作的屬性和方法,包括創建數據庫,定義表、字段和索引,建立表間的關系,定位和查詢數據庫等工具。
JET:數據連接性引擎技術(JointEngineTechnology):是一種基于工作站通過DAO的數據庫訪問機制。雖然可以通過微軟Access提供的ODBC驅動程序訪問Jet數據庫,但使用這些驅動程序在功能上有所限制。Jet機制有自己的查詢和結果集處理功能,并可對同種或異種數據源作查詢處理。
0DBC:開放式的數據庫連接(OpenDatabaseConnectivity):是一種公認的關系數據源的接口界面。它快而輕并且提供統一接口的界面,ODBC對任何數據源都未作優化。
ODBCDirect:是一種基于DAO對象的新的DAO模式,其方法和屬性與RDO功能相同。使用在有DAO代碼存在的場合,可用來訪問遠程數據源。
OLEDB:是一種底層數據訪問界面接口。是用于第三方驅動程序商家開發輸出數據源到ADO技術的應用程序或用于C++的開發者開發定制的數據庫組件。OLEDB不能被VB直接調用。
RDC:遠程數據訪問控件(RemoteDataControl):是一種對RDO數據綁定的控件??梢暂敵鎏囟ǖ慕Y果集到數據源控件。
RDO:遠程數據對象(RemoteDataObjects):遠程數據對象和集合為使用代碼來創建和操作一個遠程ODBC數據庫系統的各個部件提供了一個框架。對象和集合都具有描述數據庫的各個部件特征的屬性以及用來操作這些部件的方法??梢栽趯ο蠛图现g建立起關系,這些關系就代表了數據庫系統的邏輯結構。RDO是ODBCAPI的一個淺層界面接口。是專為訪問遠程ODBC關系數據源而設計的。
VBSQL:是VisualBasic結構化查詢語言。是一種基于API的接口方法,幾乎與C的DB-LibraryAPI相同。VBSQL只支持微軟的SQLServer。VBSQL快而且輕但不支持對象界面。
使用RDO的一般方法如下。
先聲明變量:
PublicconAsrdoConnection,resAsrdoResultset
然后初始化rdoEngine,設置用戶和口令等缺省參數;WithrdoEngine
.rdoDefaultUser="sa"注釋:用戶為sa
.rdoDefaultPassword="pass"注釋:口令為pass
.rdoDefaultCursorDriver=rdUseServer
.rdoDefaultLoginTimeout=15
EndWith
再連接到要訪問的遠程數據庫(可使用DSNConnection和DSN-LessConnection)。
使用DSNConnection舉例(連接
服務器SERVER上的數據庫hotel):
Setcon=rdoEnvironments(0).OpenConnection
("hotel",rdDriverNoPrompt,False)
使用DSN-LessConnection舉例(連接服務器SERVER上的數據庫hotel):
Setcon=rdoEnvironments(0).OpenConnection
("",rdDriverNoPrompt,False,_"driver={SQLServer};server=SERVER;database=hotel")
建立連接后,既可使用OpenResultset方法執行查詢并處理結果集,又可使用Execute方法執行包括數據定義和數據操作在內的動作查詢。例如:
Setres=con.OpenResultset("SELECT*FROMmenu",rdOpenStatic)
con.Execute"CREATEVIEWmenu_viewASSELECT代碼,菜名FROMmenu",rdExecDirect
RDO最強大和最重要的特性之一是:它可以查詢和處理由存儲過程返回的結果,無論它有多么復雜。
除RDO外,還可使用RDC訪問遠程數據庫。
遠程數據控件(RDC)與數據控件(DC)類似,不同之處是RDC使用RDO連接到ODBC驅動程序管理器,而DC則使用DAO連接到Jet數據庫引擎。利用RDO和RDC,無需使用Jet引擎就可以訪問ODBC數據源。這樣,在訪問遠程數據庫時,可以獲得更好的
性能和更大的靈活性。
遠程數據控件MSRDC使用舉例如下。
Connect:driver={SQLServer};server=SERVER;database=hotel
DataSourceName:
SQL:SELECT*FROMmenu
UserName:sa
Password:pass
CursorDriver:3-rdUseClient
可以使用RDC執行許多簡單的遠程數據訪問操作,不需編寫任何代碼,只要填寫有關項就可以了,使用起來很方便。但應注意,除非在設計時禁止并只在需要時啟動RDC,否則它至少將消耗一個遠程數據庫連接。在遠程數據庫連接資源有限或要求很高效的情況下,宜慎用、少用RDC。這種情況下,應盡可能考慮使用RDO,并使用存儲過程(預編譯好的SQL語句)。
最后還應注意,只有32位操作系統(如
WindowsNT或Windows95),才能支持RDO和RDC。RDO和RDC也只能用于訪問32位ODBC數據源。
原文轉自:http://www.anti-gravitydesign.com