VB使用ADODB運算元據庫的常用方法

2021-09-25 10:52:24 字數 4526 閱讀 7763

ado常用方法

下面是我所掌握的使用ado對資料庫操作的一些常用方法,主要是提供給初學者作為參考,有不對的地方請指正。如有補充不勝榮幸

準備工作

*****===

dim conn as new  adodb.connection  '建立乙個 connection 例項,在這裡使用new等於將dim和set合併為一段**執行

dim rs as adodb.recordset    '建立乙個 recordset 例項,不使用new 是因為,經常需要重複使用set,因此沒必要在這裡使用

dim cnstr as string, sql as string  '建立兩個字串變數分別存放兩個集合的sql語句**段

1、裝載資料庫(不屬於recordset集合)

**********===

dim filenamw$, dbip$, dbname$, dbuser$, dbpw$

'以上5個字串變數分別表示檔案路徑和檔名、資料庫位址、資料庫名、資料操作員使用者名稱、操作員密碼

'1)連線access資料庫:

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

cnstr = "provider=microsoft.jet.oledb.3.51;persist security info =false;data source=" & filename & ";jet oledb:database password=" & dbpw

'2)連線oracle資料庫:

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

cnstr = "provider=msdaora.1;password=" & dbpw & ";user id=" & dbuser & ";data source=" & filename & ";persist security info=true"

'其中:

'password:      密碼

'user id:       使用者號

'data source:   資料庫名

'persist security info:

'provider:

'3)連線vf的dbf庫:

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

cnstr = "provider=msdasql.1;persist security info=false;driver=;uid=" & dbuser & ";sourcedb=" & filename & 

";sourcetype=dbf;exclusive=no;backgroundfetch=yes;collate=machine;"

'4)連線sql的資料庫

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

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 方法 與資料庫建立連線

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 '返回列數

使用DML運算元據庫

create table student stuid int primary key auto increment comment 學生編號 stuname varchar 25 comment 學生姓名 stupwd varchar 50 comment 學生密碼 gender char 2 de...

使用pymysql運算元據庫

學習如何使用python的pymysql模組來操作mysql資料庫 這裡的基本用法主要借鑑了該篇部落格 因為這個作者總結的很全面,也很簡潔,看完很容易上手 pymysql.connect 引數說明 連線資料庫時需要新增的引數 host str mysql伺服器位址 port int mysql伺服器...

使用sqlalchemy運算元據庫

from sqlalchemy import create engine,column,integer,string,datetime,float,date,blob,func,foreignkey,extract,and or text from sqlalchemy.orm import ses...