下面是我所掌握的使用ADO對(duì)數(shù)據(jù)庫(kù)操做的一些常用方法,主要是提供給初學(xué)者做為參考,有不對(duì)的地方請(qǐng)指正。如有補(bǔ)充不勝榮幸 準(zhǔn)備工做 ======== 來源:www.va1314.com/bc Dim conn As New ADODB.Connection \'創(chuàng)建一個(gè) Connection 實(shí)例,在這里使用New等于將Dim和Set合并為一段代碼執(zhí)行 Dim rs As ADODB.Recordset \'創(chuàng)建一個(gè) Recordset 實(shí)例,不使用New 是因?yàn)?,?jīng)常需要重復(fù)使用Set,因而沒必要在這里使用 Dim CnStr As String, Sql As String \'創(chuàng)建兩個(gè)字符串變量分別存放兩個(gè)集合的SQL語(yǔ)句代碼段 1、裝載數(shù)據(jù)庫(kù)(不屬于Recordset集合) ============= Dim FileNamw$, DbIp$, DbName$, DbUser$, DbPw$ \'以上5個(gè)字符串變量分別表示文件路徑和文件名、數(shù)據(jù)庫(kù)地址、數(shù)據(jù)庫(kù)名、數(shù)據(jù)操做員用戶名、操做員密碼 FileName = App.Path & \"\\\'數(shù)據(jù)庫(kù)名\'\" DbIp = \"數(shù)據(jù)庫(kù)地址\" DbName = \"數(shù)據(jù)庫(kù)名\" DbUser = \"數(shù)據(jù)操做員用戶名\" DbPw = \"操做員密碼\" \'以上變量根據(jù)數(shù)據(jù)庫(kù)類型的不同而不同,有可能只需要1至兩個(gè)變量 \'1)連接Access數(shù)據(jù)庫(kù): \'------------------- CnStr = \" ![]() ![]() \'2)連接Oracle數(shù)據(jù)庫(kù): \'------------------- CnStr = \" ![]() ![]() ![]() \'其中: \'PASSWORD: 密碼 \'User ID: 用戶號(hào) \'Data Source: 數(shù)據(jù)庫(kù)名 \'Persist Security Info: \'Provider: \'3)連接VF的DBF庫(kù): \'---------------- CnStr = \" ![]() ![]() \";SourceType=DBF;Exclusive=No;BackgroundFetch=Yes;Collate=Machine;\" \'4)連接SQL的數(shù)據(jù)庫(kù) \'------------------ CnStr = \" ![]() DbIP \'也能夠使用這段簡(jiǎn)易代碼 CnStr = \" ![]() Conn.Open cnstr \'使用 Connection 集合的 Open 方法 與數(shù)據(jù)庫(kù)建立連接 2、Recordset集合的常用方法 ========================== \'1)打開一個(gè)表 \'------------ Sql = \"select * from 表名\" \'SQL查詢語(yǔ)句 Set rs = New ADODB.Recordset \'新建一個(gè)實(shí)例 rs.Open Sql, conn \'使用 Open 方法打開數(shù)據(jù)庫(kù)中的一個(gè)表 \'注意,這種打開方式只能使用 rs.MoveNext (即,向后移動(dòng)行立標(biāo))而不能像其他方向,并且不能修改數(shù)據(jù)內(nèi)容 \' \'rs.Open Sql, conn,1 \'雖然只加了個(gè)“1”,但這種方法能夠向任何方向移動(dòng)行立標(biāo)。 \' \'以下參數(shù)代表了這個(gè)可選值的含義 \'0 = adOpenForwardOnly (默認(rèn)值)打開僅向前類型游標(biāo)。 \'1 = adOpenKeyset 打開鍵集類型游標(biāo)。 \'2 = adOpenDynamic 打開動(dòng)態(tài)類型游標(biāo)。 \'3 = adOpenStatic 打開靜態(tài)類型游標(biāo)。 \' \'雖然使用以上方法能夠能夠?qū)崿F(xiàn)行立標(biāo)(游標(biāo))的任意移動(dòng),但是仍然無法寫入數(shù)據(jù)。因而需要進(jìn)一步的對(duì)Open 方法進(jìn)行完善 \'rs.Open Sql, conn, 1, 3 \'后面的3是確定讀寫權(quán)限的 \'以下參數(shù)代表了這個(gè)可選值的含義 \'1 = adLockReadOnly (默認(rèn)值)只讀 — 不能改變數(shù)據(jù)。 \'2 = adLockPessimistic 保守式鎖定(逐個(gè)) — 在編輯時(shí)立即鎖定數(shù)據(jù)源的記錄。 \'3 = adLockOptimistic 開放式鎖定(逐個(gè)) — 只在調(diào)用 Update 方法時(shí)才鎖定記錄。 \'4 = adLockBatchOptimistic 開放式批更新 — 用于批更新模式(與立即更新模式相對(duì))。 \' \'2)讀寫數(shù)據(jù) \'---------- \'增加一行記錄并對(duì)新記錄的內(nèi)容進(jìn)行修改并保存能夠如下寫法 rs.AddNew \'增加一行記錄 rs(\"...\")=\"...\" \'數(shù)據(jù)讀寫操做 ... rs.UpDate \'保存寫入資料,如果使用只讀權(quán)限,則不能使用這個(gè)方法[Page] rs.Close \'這個(gè)方法用來關(guān)閉你所代開的表,如果不使用這個(gè)方法也能夠,但是數(shù)據(jù)庫(kù)仍然認(rèn)為你在對(duì)標(biāo)進(jìn)行鎖定,可形成數(shù)據(jù)庫(kù)負(fù)擔(dān)過重 2、對(duì)數(shù)據(jù)進(jìn)行篩選和排序 ======================= Sql = \"select * from 表名\" \'SQL查詢語(yǔ)句 \'以上為打開一個(gè)表的所有內(nèi)容 Sql = \"select top 50 * from 表名\" \'SQL查詢語(yǔ)句 \'以上為只打開前50行的記錄 Sql = \"select top 50 列名1,列名2,列名5 from 表名\" \'SQL查詢語(yǔ)句 \'以上為只打開前50行的記錄,并且只打開第1、2、5列數(shù)據(jù) Sql = \"select * from 表名 where 列名1=\'\" & 字段 & \"\'\" \'SQL查詢語(yǔ)句 \'以上為一個(gè)簡(jiǎn)單的篩選,表示打開的內(nèi)容必須符合[列名1=\'\" & 字段 & \"\'\"]的內(nèi)容 \'需要注意的是,數(shù)據(jù)庫(kù)列的類型必須婚配,比如字符串類型需要以單引號(hào)括起 \'而數(shù)字類型則不能用單引號(hào)括起 \'另外SQL語(yǔ)句還支持通配符,例如 列名1 like \'%\" & 字段 & \"%\'\" 表示包含[字段] \'在表達(dá)式中的婚配 \'? _(下劃線) 任何單一字符 \'* or % 零個(gè)或多個(gè)字符 \'# 任何單一數(shù)字(0 — 9) \'[charlist] 任何在字符表中的單一字符 \'[!charlist] 任何不在字符表中的單一字符 \'注:根據(jù)數(shù)據(jù)庫(kù)的不同?、_和*、%的應(yīng)用有所差別,比如SQL只使用% 和 _ 分別代表多個(gè)字符和單一字符 Sql = \"select * from 表名 where 列名1=\'\" & 字段 & \"\' ORDER BY 字段1 ASC\" \'對(duì)查詢結(jié)果進(jìn)行升序陳列 Sql = \"select * from 表名 where 列名1=\'\" & 字段 & \"\' ORDER BY 字段1 DESC\" \'對(duì)查詢結(jié)果進(jìn)行降序陳列 Sql = \"select * from 表名 where 列名1=\'\" & 字段 & \"\' ORDER BY 字段1 DESC, ORDER BY 字段2 DESC\" \'對(duì)查詢結(jié)果進(jìn)行多維降序陳列(速度奇慢,不推薦使用) 3、Recordset集合的常用屬性方法 ============================== rs.BOF \'能否游標(biāo)在最上邊 rs.EOF \'能否游標(biāo)在最下邊 rs.RecordCount \'記錄集的行數(shù)(如果使用像前類型的游標(biāo),可能前往不準(zhǔn)確) rs.AddNew \'新建一行記錄 rs.Update \'保存當(dāng)前行被修改的記錄 rs.Delete \'刪除當(dāng)前行 rs.Close \'關(guān)閉記錄集 4、Fields集合的一些屬性的注釋 ============================= \'以下為簡(jiǎn)寫,正常情況需要rs.Fileds.。。。但是Fields屬于Recordset的一個(gè)默認(rèn)集合,因而能夠省略 rs() \'括號(hào)內(nèi)能夠是列名也能夠是列的序號(hào)例如:rs(\"姓名\")、rs(3) 都是是能夠的 rs(3).Name \'前往列名 rs(3).Type \'前往列的類型 rs(3).Value \'前往當(dāng)前行的值 rs.Fields.Count \'前往列數(shù) |
聯(lián)系客服