由於VB本身並不帶有可以訪問資料庫的類,所以我們需要引用一個包含能訪問資料庫的類來使用資料庫.這裡我們採用ADODB,相比DAO和能訪 問資料庫的API來說,它比DAO更靈活,更強大;而比起API,它更簡單易用,更適合初學者.而Access資料庫比起SQL,也相對簡單了很多,且能 夠滿足中小型應用程式的需要,所以我們在使用資料庫時,選擇了Access.
就像使用文字檔來儲存資料一樣,我們需要先設計好資料結構,只不過在設計Access資料庫的結構時,我們需要用到其它的程式來進行詳細的規劃.建議採用的程式是office中的Access或VB內建的VISDATA.
當資料庫設計好了以後,我們可以開始資料庫編程了.
首先,我們需要引用ADO.具體的方法是,在工程 -- 引用 中,找到Microsoft ActiveX Data Object *.* Library,這裡的*.*是指的時ADO的版本號碼,一般來說,應用程式或ActiveX控制項都具有向下相容性,所以我們儘可能選擇比較新的版本.以確 保程式在能識別舊版本Access的同時,也能識別較新版本的Access.
然後我們需要在程式中建立一個對象.就好比我們在表單上添加一個FileBox才能看到檔案名稱一樣,只有建立了ADO對象,我們才能夠訪問資料庫.常用的對象有兩個,Connection和Recordset.
建立這兩個對象的具體方法是:
1.在引用後,使用New關鍵字,如
Private Conn As New ADODB.Connection
Private Reco As New ADODB.Recordset
2.在沒引用時,用CreateObject建立對象:
Dim Conn,Reco
Set Conn = CreateObject(ADODB.Connection)
Set Reco = CreateObject(ADODB.Recordset)
建立了對象之後,下一步我們要做的就是開啟資料庫了.
先看下面的代碼,可以成功的開啟資料庫.
Conn.open Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:Main.mdb
這句代碼開啟了D盤中的Main.mdb這個資料庫.
Connection.Open方法的第一個參數是串連代碼,它將傳遞給系統的資料庫引擎.前半部分 Provider=Microsoft.Jet.OLEDB.4.0,它表示了資料庫的類型.不同的資料庫可能會不同.後半句 Source=d:main.mdb它表示了資料庫所在的絕對路徑.
開啟資料庫之後,還要開啟表.假如資料庫中有一個表,表名為Users,欄位有兩個,一個為使用者名稱,一個為密碼.那麼看以下代碼.
1.想返回Users中,[使用者名稱]為去年煙花的[密碼]
Recordset.open Select 密碼 From Users Where 使用者名稱='去年煙花',Connection,1,1
之後我們就可以把使用者輸入的密碼進行比較,看是否允許登入.
If Recordset.eof and Recordset.bof then
Msgbox 使用者不存在!,16
Else
If PassWord =Recordset(密碼).value then
msgbox 登入成功!,64
Else
msgbox 密碼錯誤!,32
End If
End If
Recordset.Close
2.假設Admin已經成功登入系統,我們想把所有的使用者名稱和密碼都顯示出來
Recordset.open Select * From Users,Connection,1,1
這時,表已經被開啟,我們就用以下代碼把它顯示出來.
Do whlie Not Recordset.eof
Print 使用者名稱: & Recordset(使用者名稱).value & 密碼: & Recordset(密碼).value
Recordset.MoveNext
Loop
Recordset.Close
由以上程式碼範例可以看出,開啟表時,可以只開啟其中的一個欄位,也可以開啟所有.第一個參數是SQL語句.
Select [欄位名] From 表名 [Where 條件]
這裡的條件可以省略.且欄位名也可以用*來代替所有欄位.
需要注意的是,如果你用(1)中的方法開啟,那麼(2)後面顯示的代碼就不能再用在(1)中.因為(1)裡並沒有開啟[使用者名稱]欄位,所以這一句Recordset(密碼)就沒有值存在,還有可能出錯.
後面的條件,可以用=、>、<等運算子.比如 Where ID > 32.(這裡假設[ID]為數字型.)
這是開啟的部分.第二個很重要的部分就是查詢記錄.
資料庫它並不是把所有記錄全部放到一個變數中備用的.而是以目前記錄的形式來返回一個值.所以我們想從中找到有用的資訊,就必須要對資訊進行定位/篩選.
定位:
移動到下一條 Recordset.MoveNext
移動到上一條 Recordset.MovePrevious
移動到最後一條 Recordset.MoveLast
移動到第一條 Recordset.MoveFrist
移動到某一條 Recordset.Move Number
篩選:
Recordset.Find 條件
如:[用方法(2)開啟表之後]
Private Sub Command1_Click()
Recordset.Find 使用者名稱= & text1.text
If Recordset.Eof <> True Then
Msgbox 該使用者的密碼是: & Recordset(密碼).value,64
Else
Msgbox 未找到該使用者的資料!,16
End If
End Sub
MoveNext 只有當Eof不為True時,才可用,否則發生錯誤.而MovePrevious剛是Bof不為True時....
而只要Eof 和 Bof中有一個不為真時,也就是說只要有一條記錄時,它就可以使用.
Find 方法中的條件和Open時的第一個參數中的條件表述方法是完全一致的.當在已開啟的記錄集中,找不到該記錄時,Eof為True.找到則當前的值就是合格記錄.
第三個部分就是添加/修改記錄.
修改記錄很簡單,先按以上的方法找到相關記錄之後,給記錄賦值就可以了.
比如:[(修改密碼)按方法(1)開啟表之後]
Recordset(密碼).value = 123456
Recordset.Updata
需要注意的就是,在修改完成後,要調用Updata方法,這樣修改才會生效.
而添加記錄則可以用以下代碼來實現:
Recordset.addnew
Recordset(使用者名稱).value = Admin
Recordset(密碼).value = Admin
Recordset.Updata
這裡,先要調用Addnew方法,增加一條新記錄,然後對這個新記錄中的各欄位賦值,最後再調用Updata方法.
到這裡就差不多了,最後說一下上面提到的幾個方法.
Recordset.Open SQL語句,資料來源,遊標類型,開啟方法
SQL語句不用說了,就是Select那啥的,目的就是按要求從表中返回資料
資料來源就是一個開啟之後的Connection對象.
填1就可以了
開啟方法對應了幾個常數,具體哪幾個可以從物件瀏覽器裡看。
對應數值的意義:
1 唯讀 2 獨佔 3 可寫 4 自已可寫,別人可讀。
Connection.open 串連代碼,伺服器使用者名稱,密碼。
這裡的串連代碼就不在多說了,伺服器使用者名稱,密碼只有在串連遠端資料庫時才用到。