posts - 1,  comments - 0,  trackbacks - 0
            2007年8月26日

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

          posted @ 2007-08-26 19:49 winar 閱讀(170) | 評論 (0)編輯 收藏
          僅列出標題  
          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          常用鏈接

          留言簿(1)

          隨筆檔案(1)

          最新隨筆

          搜索

          •  

          最新評論

          主站蜘蛛池模板: 凤阳县| 亳州市| 崇义县| 固阳县| 乌兰察布市| 灵寿县| 普宁市| 嘉定区| 阜康市| 禹城市| 河津市| 微山县| 韩城市| 德清县| 成都市| 巫山县| 基隆市| 五峰| 新乡县| 宣恩县| 峨眉山市| 永平县| 砚山县| 忻城县| 象州县| 庆云县| 通河县| 肥乡县| 特克斯县| 聂拉木县| 丹江口市| 乌拉特中旗| 淳安县| 平塘县| 竹山县| 屯门区| 张家港市| 沾化县| 民乐县| 逊克县| 当阳市|