標籤:des io os 使用 ar for 資料 sp cti
‘1、首先聲明一個連結化物件,聲明記錄集對象,定義一個資料連結字串
‘方法1:
Dim adocn As New ADODB.Connection ‘聲明一個連結化物件
‘方法2:
‘Dim adocn As ADODB.Connection
‘Set adocn = New ADODB.Connection
Dim strconn As String ‘定義一個資料連結字串
strconn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\users.mdb"
adocn.Open strconn ‘使用 Connection 的 Open 方法 與資料庫建立串連
Dim adors As New ADODB.Recordset ‘聲明記錄集對象
2、Recordset集合的常用方法
==========================
‘1)開啟一個表
‘------------
Sql = "select * from 表名" ‘SQL查詢語句
Set rs = New ADODB.Recordset ‘建立一個執行個體
rs.Open Sql, conn ‘使用 Open 方法開啟資料庫中的一個表
‘注意,這種開啟檔案只能使用 rs.MoveNext (即,向後移動行座標)而不能像其他方向,並且不能修改資料內容
‘
‘rs.Open Sql, conn,1‘雖然只加了個“1”,但這種方法可以向任何方向移動行座標。
‘
‘以下參數代表了這個可選值的含義
‘0 = adOpenForwardOnly (預設值)開啟僅向前類型遊標。
‘1 = adOpenKeyset 開啟鍵集類型遊標。
‘2 = adOpenDynamic 開啟動態類型遊標。
‘3 = adOpenStatic 開啟靜態類型遊標。
‘
‘雖然使用以上方法可以可以實現行座標(遊標)的任意移動,但是仍然無法寫入資料。因此需要進一步的對Open 方法進行完善
‘rs.Open Sql, conn, 1, 3 ‘後面的3是確定讀寫權限的
‘以下參數代表了這個可選值的含義
‘1 =adLockReadOnly (預設值)唯讀 — 不能改變資料。
‘2 = adLockPessimistic 保守式鎖定(逐個) — 在編輯時立即鎖定資料來源的記錄。
‘3 = adLockOptimistic 開放式鎖定(逐個) — 只在調用 Update 方法時才鎖定記錄。
‘4 = adLockBatchOptimistic 開放式批更新 — 用於批更新模式(與立即更新模式相對)。
‘
‘2)讀寫資料
‘----------
‘增加一行記錄並對新記錄的內容進行修改並儲存可以如下寫法
rs.AddNew ‘增加一行記錄
rs("...")="..." ‘資料讀寫操作
...
rs.UpDate ‘儲存寫入資料,如果使用唯讀許可權,則不能使用這個方法
rs.Close ‘這個方法用來關閉你所代開的表,如果不使用這個方法也可以,但是資料庫仍然認為你在對標進行鎖定,可造成資料庫負擔過重
2、對資料進行篩選和排序
=======================
Sql = "select * from 表名" ‘SQL查詢語句
‘以上為開啟一個表的所有內容
Sql = "select top 50 * from 表名" ‘SQL查詢語句
‘以上為只開啟前50行的記錄
Sql = "select top 50 列名1,列名2,列名5 from 表名" ‘SQL查詢語句
‘以上為只開啟前50行的記錄,並且只開啟第1、2、5列資料
Sql = "select * from 表名 where 列名1=‘"& 欄位 & "‘" ‘SQL查詢語句
‘以上為一個簡單的篩選,表示開啟的內容必須符合[列名1=‘" & 欄位 & "‘"]的內容
‘需要注意的是,資料庫列的類型必須匹配,比如字串類型需要以單引號括起
‘而數字類型則不能用單引號括起
‘另外SQL語句還支援萬用字元,例如 列名1 like ‘%" & 欄位 & "%‘"表示包含[欄位]
‘在運算式中的匹配
‘? _(底線) 任何單一字元
‘* or % 零個或多個字元
‘# 任何單一數字(0 — 9)
‘[charlist] 任何在字元表中的單一字元
‘[!charlist] 任何不在字元表中的單一字元
‘註:根據資料庫的不同?、_和*、%的應用有所差別,比如SQL只使用% 和 _ 分別代表多個字元和單一字元
Sql = "select * from 表名 where 列名1=‘"& 欄位 & "‘ ORDER BY 欄位1 ASC" ‘對查詢結果進行升序排列
Sql = "select * from 表名 where 列名1=‘"& 欄位 & "‘ ORDER BY 欄位1 DESC" ‘對查詢結果進行降序排列
Sql = "select * from 表名 where 列名1=‘"& 欄位 & "‘ ORDER BY 欄位1 DESC, ORDER BY 欄位2 DESC" ‘對查詢結果進行多維降序排列(速度奇慢,不推薦使用)
3、Recordset集合的常用屬性方法
==============================
rs.BOF ‘是否遊標在最上邊
rs.EOF ‘是否遊標在最下邊
rs.RecordCount ‘記錄集的行數(如果使用像前類型的遊標,可能返回不準確)
rs.AddNew ‘建立一行記錄
rs.Update ‘儲存當前行被修改的記錄
rs.Delete ‘刪除當前行
rs.Close ‘關閉記錄集
4、Fields集合的一些屬性的解釋
=============================
‘以下為簡寫,正常情況需要rs.Fileds.。。。但是Fields屬於Recordset的一個預設集合,因此可以省略
rs() ‘括弧內可以是列名也可以是列的序號例如:rs("姓名")、rs(3)都是是可以的
rs(3).Name ‘返回列名
rs(3).Type ‘返回列的類型
rs(3).Value ‘返回當前行的值
rs.Fields.Count ‘返回列數
VB操作Access資料庫方法