VB兩種操作Access數(shù)據(jù)庫(kù)方法的比較

字號(hào):

在VB編程中通常要與數(shù)據(jù)庫(kù)打交道,對(duì)于數(shù)據(jù)量較小的應(yīng)用,一般選用Access作為數(shù)據(jù)庫(kù),因?yàn)锳ccess數(shù)據(jù)庫(kù)比較簡(jiǎn)單,功能也比較齊全,數(shù)據(jù)的備份、拷貝都很方便,且程序發(fā)布時(shí)不需要額外單獨(dú)安裝其它的數(shù)據(jù)庫(kù)管理軟件。因此,在功能能夠滿足要求的條件下,Access數(shù)據(jù)庫(kù)往往成為一些小型數(shù)據(jù)庫(kù)軟件的首選。
    關(guān)于用VB操作Access庫(kù)表的方法有多種,一般初學(xué)者往往會(huì)使用數(shù)據(jù)控件,許多資料上也大都以此作為操作Access數(shù)據(jù)庫(kù)的起點(diǎn)來介紹,因?yàn)檫@個(gè)方法使用起來非常簡(jiǎn)單,但使用數(shù)據(jù)控件的方法在程序編碼上往往不夠靈活?,F(xiàn)在介紹一下其它兩種操作Access數(shù)據(jù)庫(kù)的方法。
    第一種:使用數(shù)據(jù)庫(kù)對(duì)象
    首先,要進(jìn)行有關(guān)數(shù)據(jù)對(duì)象的聲明,代碼如下。
    Dim MyWs As Workspace
    Dim MyDB As Database
    Dim WordTab As Recordset
    生成工作區(qū),打開數(shù)據(jù)庫(kù),然后再根據(jù)需要打開相應(yīng)的庫(kù)表。
    Set MyWs = DBEngine.CreateWorkspace″″ ″Admin″ ″″ dbUseJet
    Set MyDB = MyWs.OpenDatabase數(shù)據(jù)庫(kù)名稱 False False
    Set WordTab = MyDB.OpenRecordset″表名″ dbOpenDynaset
    這種方法的優(yōu)點(diǎn)是代碼比較簡(jiǎn)單,要求的環(huán)境為DAO 2.5/3.51,其中表名可以換成SELECT語句,即根據(jù)條件打開所需要的記錄集,這種方法可脫離數(shù)據(jù)控件,可以比較方便靈活地操作數(shù)據(jù)庫(kù)表,增加了程序的靈活性。
    提示:經(jīng)過測(cè)試發(fā)現(xiàn),這種方法只能打開Access97庫(kù)表,對(duì)于Access2000庫(kù)表卻無能為力,會(huì)彈出庫(kù)表格式不對(duì)的出錯(cuò)提示。另外,對(duì)數(shù)據(jù)環(huán)境的要求仍比較多。
    第二種:使用ADODB
    首先,聲明一個(gè)鏈接變量,并根據(jù)需要聲明記錄集變量。
    Dim LocCnn1 As ADODB.Connection
    Dim LocRst1 As ADODB.Recordset
    建立與數(shù)據(jù)庫(kù)的鏈接,如果數(shù)據(jù)庫(kù)沒有口令,最后一行可以不寫(寫上也不會(huì)錯(cuò))。
    Set LocCnn1 = New ADODB.Connection
    LocCnn1.Open ″Provider=Microsoft.Jet.OLEDB.4.0User ID=Admin″ & _
    ″Data Source=″ & App.Path & ″\數(shù)據(jù)庫(kù)名稱.mdb″& _
    ″Mode=Share Deny NoneExtended Properties=''Persist Security Info=False″ & _
    ″Jet OLEDBDatabase Password='ASP561rbc'″
    這種方法雖然代碼長(zhǎng)一些,但對(duì)數(shù)據(jù)環(huán)境要求低,且結(jié)構(gòu)清晰,所編寫的發(fā)布程序也大為減小。由于與鏈接SQL Server等數(shù)據(jù)庫(kù)的方法一樣,因而大量的操作數(shù)據(jù)庫(kù)的代碼相同,當(dāng)數(shù)據(jù)庫(kù)需要由Access擴(kuò)充到一些大型數(shù)據(jù)庫(kù),或由一些大型數(shù)據(jù)庫(kù)裁剪出一個(gè)簡(jiǎn)單數(shù)據(jù)庫(kù)時(shí),程序的移植會(huì)比較方便。
    另外,這種方法對(duì)于Access97及Access2000均能很好地支持,兼容性好。對(duì)于大量插入、刪除、修改等操作,只在Connection層進(jìn)行即可,既可提高速度又可減少代碼。
    如果還要獲取具體的記錄集內(nèi)容,則須再根據(jù)條件打開具體的庫(kù)表,代碼如下:
    Set LocRst1 = New ADODB.Recordset 
    LocRst1.CursorType = adOpenKeyset
    LocRst1.LockType = adLockOptimistic
    LocRst1.Open ″SELECT  FROM 表名″ LocCnn1adCmdText
    提示:一般情況下,建議使用第二種方法。