<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    大鳥的學(xué)習(xí)樂園
    路漫漫其修遠(yuǎn)兮,吾將上下而求索
    posts - 26,comments - 27,trackbacks - 0

     

    下面是我所掌握的使用ADO對(duì)數(shù)據(jù)庫(kù)操作的一些常用方法,主要是提供給初學(xué)者作為參考,有不對(duì)的地方請(qǐng)指正。如有補(bǔ)充不勝榮幸

    準(zhǔn)備工作

    ========

    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語句代碼段

    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 = "PROVIDER=microsoft.jet.oledb.3.51;persist security info =false;data source=" & FileName & ";Jet OLEDB:Database Password=" & DbPw

    '2)連接Oracle數(shù)據(jù)庫(kù):

    '-------------------

    CnStr = "PROVIDER=MSDAORA.1;Password=" & DbPw & ";User ID=" & DbUser & ";Data Source=" & FileName & ";Persist Security Info=True"

    '其中:

    'PASSword: 密碼

    'User ID: 用戶號(hào)

    'Data Source: 數(shù)據(jù)庫(kù)名

    'Persist Security Info:

    'Provider:

    '3)連接VF的DBF庫(kù):

    '----------------

    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ù)庫(kù)

    '------------------

    CnStr = "PROVIDER=MSDataShape;Data PROVIDER=MSDASQL;uid=" & DbUser & ";pwd=" & DbPw & ";DRIVER=SQL Server;DATABASE=" & DbName & ";WSID=GQSOFT;SERVER=" &

    DbIP

    '也可以使用這段簡(jiǎn)易代碼 CnStr = "Provider=SQLOLEDB;Data Source=" & DbIp & ";DATABASE=" & DbName & ";UID=" & DbUser & ";pwd=" & DbPw

    Conn.Open cnstr '使用 Connection 集合的 Open 方法 與數(shù)據(jù)庫(kù)建立連接

    2、Recordset集合的常用方法

    ==========================

    '1)打開一個(gè)表

    '------------

    Sql = "select * from 表名" 'SQL查詢語句

    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)。

    '

    '雖然使用以上方法可以可以實(shí)現(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è)方法

    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查詢語句

    '以上為打開一個(gè)表的所有內(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查詢語句

    '以上為一個(gè)簡(jiǎn)單的篩選,表示打開的內(nèi)容必須符合[列名1='" & 字段 & "'"]的內(nèi)容

    '需要注意的是,數(shù)據(jù)庫(kù)列的類型必須匹配,比如字符串類型需要以單引號(hào)括起

    '而數(shù)字類型則不能用單引號(hào)括起

    '另外SQL語句還支持通配符,例如 列名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ù)

    posted on 2008-11-26 07:30 大鳥 閱讀(309) 評(píng)論(0)  編輯  收藏

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲色大成网站www久久九| 黄色a级免费网站| 国产gav成人免费播放视频| 一本到卡二卡三卡免费高 | 日本高清免费aaaaa大片视频| 亚洲av无码专区在线电影| 亚洲深深色噜噜狠狠爱网站| 精品香蕉在线观看免费| 日本在线观看免费高清| 亚洲福利一区二区| 国产黄色一级毛片亚洲黄片大全| www视频在线观看免费| xxxxx做受大片视频免费| 亚洲欧洲春色校园另类小说| 午夜亚洲国产成人不卡在线| 免费福利在线播放| 中文字幕在线观看免费| 亚洲一区二区三区成人网站 | 亚洲另类古典武侠| 亚洲视频在线一区二区| 中文字幕人成无码免费视频| 中文字幕看片在线a免费| 亚洲精品久久无码| 亚洲经典在线观看| 在线亚洲97se亚洲综合在线| 国产精品免费小视频| 51视频精品全部免费最新| 国产精品免费视频观看拍拍| 亚洲jizzjizz少妇| 亚洲国产精品专区| 亚洲精品免费观看| 亚洲真人无码永久在线| 免费人成网站7777视频| 成人毛片免费在线观看| 99无码人妻一区二区三区免费| 久久国产免费直播| 香港经典a毛片免费观看看| 亚洲熟妇无码AV| 亚洲乱码中文字幕小综合| 亚洲一卡2卡三卡4卡有限公司| 亚洲天堂在线视频|