以前曾看過介紹如何在Visual Basic中連接和使用Access數據庫的技術文章,實際上在專業的數據庫軟件開發中,為了確保數據庫中信息的安全,往往要求對數據庫文件進行加密,以防止非法用戶通過其它的常規手段將其打開。
那麼,在Visual Basic中如何建立與加密的數據庫的連接呢?筆者在開發本校的宿捨管理信息系統中,總結了一些方法和技巧,現寫出來與同行交流。
一、建立數據庫 因為在Visual Basic 6.0中有的數據庫連接方式不支持Access 2000版本格式的數據庫,為了便於說明問題,本文所提的數據庫以Access 97版本數據庫為例。
在Microsoft Access 97中建立一個數據庫,如:ssgl.mdb,並設置密碼,如:“1234”,再將數據庫文件和VB中創建的工程文件放在同一目錄下。
如果用戶的計算機上只有Access 2000的話,可以先在Access 2000中建立ssgl.mdb數據庫,並設置密碼,再用Access 2000中的“數據庫實用工具”將數據庫轉換成Access 97版本的格式。
當然也可以直接在Visual Basic 6.0集成開發環境中通過“可視化數據管理器”來創建數據庫,再到Access 97中設置密碼。
通過對數據庫文件設置密碼,一般情況下,非法用戶就不能用常規的手段打開數據庫了,對數據庫中的信息起到了一定的安全和保密作用。
二、連接加密的Access數據庫 在Visual Basic 6.0中,要建立與數據庫的連接,可采用的技術手段很多,如:數據控件、數據對象、數據環境設計器等。開發人員可以根據自身的條件和用戶的需求進行選擇。
限於篇幅,下面只介紹加密的Access數據庫與沒有加密的Access數據庫在連接時的不同之處。關於沒有加密的數據庫的連接及訪問的方法讀者可以參閱其它資料。
1、使用控件
① Data控件
Data控件是Visual Basic 6.0中的一個內置數據控件,可以通過設置Data控件的connect、DatabaseName、RecordSource屬性實現對數據庫的連接和訪問。 通過Data控件連接加密的數據庫的方法有兩種:
一種方法是在設計狀態時,在“屬性窗口”中將Data控件的connect屬性的缺省值”Access”改為”; pwd=1234”即可,其它屬性的設置方法與沒有加密的Access數據庫的連接相同。
另一種方法是在運行時,通過代碼對connect屬性賦值來實現。如:
Data1.connect=”; pwd=1234”
Data1.DatabaseName=APP.path + “\ssgl.mdb”
其中,”1234”為Access數據庫文件ssgl.mdb的密碼,下同。
②Adodc控件
Adodc控件是一個ActiveX控件,它使用Microsoft ActiveX Data Objects(ADO)創建到數據庫的連接。使用Adodc控件之前,要先將Adodc控件添加到控件工具箱中。方法如下:在VB 6.0種選擇“工程”菜單,再點擊“部件”菜單項,在彈出的“部件”對話框中選中“Microsoft ADO Data Control 6.0(OLEDB)”選項即可。
通過Adodc控件連接加密的數據庫的方法也有兩種:
一種方法是在設計狀態時,在“屬性窗口”中,對Adodc控件的ConnectionString屬性設置一個有效的連接字符串,並在連接字符串後增加上”; Jet OLEDB: DataBase passWord=1234”,再設置Adodc控件的CommandType、RecordSource的屬性就可以創建到加密的數據庫的連接了。
另一種方法是在運行時,通過代碼動態地設置ConnectionString、CommandType和RecordSource屬性來創建連接。 只要在ConnectionString屬性的有效連接字符串後增加上”; Jet OLEDB: DataBase passWord=1234”即可。
2、使用數據對象
① DAO數據對象
要能正確引用DAO數據對象來建立與數據庫的連接,應先在VB集成開發環境中選擇“工程”菜單,再點擊“引用”菜單項,在彈出的“引用”對話框選擇“Microsoft DAO 3.51 Object Library”選項來添加DAO數據對象類型庫。
接下來就可用如下代碼來建立到加密的Access數據庫ssgl.mdb的連接。
Dim db AS DataBase
Set db=OpenDataBase(App.path + “\ssgl.mdb” , False , False , ” ; pwd=1234”)
② ADO數據對象
ADO是Microsoft推出的處理關系數據庫和非關系數據庫中信息的最新技術,也是Microsoft推崇的用於數據連接和訪問的技術。在VB 6.0中,Adodc控件、ADO數據對象及DataEnvironment(數據環境設計器)都采用的是ADO技術,因而它們處理加密的Access數據庫的方法類似。
要能正確引用ADO數據對象,應在VB 6.0集成開發環境中選擇“工程”菜單,再點擊“引用”菜單項,在彈出的“引用”對話框中選中“Microsoft ActiveX Data Objects 2.1 Library”選項來添加ADO數據對象類型庫。
可用如下代碼來建立到加密的Access數據庫ssgl.mdb的連接。
Dim cnn AS ADODB.Connection
Dim rst AS ADODB.Recordset
Set cnn=New ADODB.Connection
Cnn.Provider= ”Microsoft.Jet.OLEDB.3.51”
Cnn.ConnectionString= ”Data Source=” & App.path & ”\ssgl.mdb;” & _
” ;Jet OLEDB:Database passWord=1234”
cnn.Open
③ 使用DataEnvironment(數據環境設計器)
有兩種方法可以通過DataEnvironment連接到加密的Access數據庫:
一種方法是在設計狀態時,在DataEnvironment的connection對象的ConnectionSource屬性的有效連接字符串後加上” ;
Jet OLEDB: Database passWord=1234”
另一種方法是在DataEnvironment_Initialize()事件中編寫如下代碼:
Private sub DataEnvironment_Initialize( )
Dim strconn AS string
Strconn=” Provider=Microsoft.Jet.OLEDB.3.51;” & _
”Data Source=” & App.path & “\ssgl.mdb;” & _
”; Jet OLEDB: Database passWord=1234”
DataEnvironment1.connection1.connectionstring=strconn
End sub
以上方法及相關代碼筆者都已在Windows 98操作系統環境,Visual Basic 6.0中調試、驗證並通過。