ADO是Microsoft提供和建議使用的新型數據訪問接口,它是建立OLEDB之上的一個抽象層。微軟公司在操作系統中默認提供了 Access 的 ODBC 驅動程序以及 JET 引擎,
一、對ADO對象的主要操作,一般包括6個方面:
1.連接到數據源。通常使用ADO的Connection對象。一般使用相應的屬性打開到數據源的連接,設置遊標的位置,設置默認的當前數據庫,設置將使用的OLEDBProvider,直接提交SQL腳本等。
2.向數據源提交命令。通常涉及ADO的Command對象。可查詢數據庫並返回結果在Recordset對象中。
3.執行SELECT查詢命令。在提交SQL腳本的任務時,不用創建一個Command對象,就可完成查詢。
4.可以通過ADO的Recordset對象對結果進行操作。
5.更新數據到物理存儲。
6.提供錯誤檢測。通常涉及ADO的Error對象。
二、ADO中主要對象的功能
Recordset對象,用來封裝查詢的結果。
Field對象,用來表達一行結果中各子段的類型和值。
Error對象,用來檢測和判斷在數據庫操作中出現的錯誤,比如連接失敗。
在ADO中,許多對象名後多了一個"s",比如Error->Errors,Field->Fields等等。添加"s"意味着是相應對象的Collection(集合)對象,比如Errors是Error對象的Collection對象。Collection有點像數組(Array),但不同的是,Collection可以以不同類型的數據或對象作爲自己的元素,而數組中的各元素通常都是相同類型的。所以,在看到一個對象名最後是"s",通常表明這是一個Collection對象,比如Errors中的各元素是由Error對象的實例組成的。
三、具體應用
1、創建mdb數據庫
ADOX 是ADO 對象的擴展庫。它可用於創建、修改和刪除模式對象,如數據庫和表格等。
其常用的對象有:Catalog—>創建數據庫。Column—>表示表、索引或關鍵字的列。
Key—>表示數據庫表中的關鍵字。
常用的方法有: Append 將對象添加到 其集合。Delete 刪除集合中的對象。
set cat= createobject("ADOX.Catalog")
cat.Create "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:/shujuku.mdb"
Set tbl=createobject("ADOX.Table")
tbl.Name ="MyTable"
tbl.Columns.Append "姓名", 202 'adInteger
tbl.Columns.Append "性別", 3 'adInteger
tbl.Columns.Append "工作單位", 202 ,50 'adVarWChar
cat.Tables.Append tbl
不過你要操縱數據庫就連一個數據庫也不建,未免懶惰了點,用代碼雖然可以完成,但是我覺得對數據約束完成的比較困難,本代碼也就是示範個例子,並不推薦使用此類方法。
2、打開數據庫
Provider=″Provider=Microsoft.Jet.OLEDB.4.0 ; Data Source="
Set Objconn = createobject("ADODB.Connection")
Objconn.Open Provider & "數據庫名稱"
3、創建記錄集
Set Objrs = CreateObject("ADODB.Recordset")
4、執行SQL查詢語句
Sql="SQL查詢語句" '例如:Select count(*) from table1
Set objrs = objconn.execute(sql)
一般情況下,我們將絕大多數的操作轉化爲SQL語句完成。
常用的SQL語句
在學習SQL語句之前,讓我們先來對數據庫做一個基本的瞭解。一個數據庫中可能包含了很多個基本單位叫做表。表格被分爲“行”和“列”。每一行代表表的一個單獨組成部分,每一列代表相同性質的一組數據。舉例來說,如果我們有一個記載顧客資料的表格,行包括姓、名、地址、城市、國家、生日等。而一列則代表了所有的地址或者國家等。
一、建立數據表,我們前邊說過利用ADOX.Catalog建立數據庫和數據表的方法,但是用的似乎不是很多,一般情況下,如果我們需要在數據庫中動態建立一個表,我們將工作交給SQL語句來做,其基本語法是:
CREATE TABLE [表格名]([列名1] 數據類型 , [列名2] 數據類型,... )
例如我們要建立一個基本顧客表:
Create table [顧客表]([姓名] text(8), [性別] text(2),[住址] text(30))
二、插入數據項
insert into [數據表名稱] (數據項1,數據項2,...) values (值1,值2,...)
insert into語句用來添加新的數據到數據庫中的指定表。通過(數據項1,數據項2,...) values (值1,值2,...)來爲新添加的數據賦初值。
三、刪除數據項
delete from [數據表名稱] where [數據項1] like [值1] and/or [數據項2] like [值2]
...
四、更新數據項
update [數據表名稱] set 數據項1=值1,數據項2=值2,... where [數據項1] like [值1] and/or [數據項2] like
[值2] ...
該語句可以修改數據庫中指定數據表內的指定數據,如果不是用where限定條件就表示修改該表內所有的數據條目。
五、查詢數據項
select [數據內容] from [數據表名稱] where [數據項1] like [值1] and/or [數據項2] like [值2] ...
order by [數據項] asc/desc
[數據內容]部分表示所要選取的表格中的數據項,使用*表示選取全部。[數據表名稱]表示要從哪一個表格中選取,如果你沒有接觸過數據庫可能很難了解什麼是數據表格,沒關係,我將在後面用到它的時候再說明。where表示選取的條件,使用like表示相等,也支持>=這樣的判斷符號,同時使用多個條件進行選取時中間要使用and進行連接。order
by決定數據的排列順序,asc表示按照[數據項]中的數據順序排列,desc表示倒序,默認情況爲順序。select語句中除select和from之外其它均爲可選項,如果都不填寫表示選取該數據表中的全部數據。例如:下面的語句查詢某數據庫中表名稱爲:testtable中姓名爲“張三”的nickname字段和email字段。
SELECT nickname,email FROM testtable WHERE name='張三'
(一) 選擇列表
選擇列表(select_list)指出所查詢列,它可以是一組列名列表、星號、表達式、變量(包括局部變量和全局變量)等構成。
1、選擇所有列
例如,下面語句顯示testtable表中所有列的數據:
SELECT * FROM testtable
2、選擇部分列並指定它們的顯示次序查詢結果集合中數據的排列順序與選擇列表中所指定的列名排列順序相同。
例如:SELECT nickname,email FROM testtable
3、更改列標題
在選擇列表中,可重新指定列標題。定義格式爲:列標題=列名
列名 列標題如果指定的列標題不是標準的標識符格式時,應使用引號定界符,例如,下列語句使用漢字顯示列標題:
SELECT 暱稱=nickname,電子郵件=email FROM testtable
(二) FROM子句指定SELECT語句查詢的表。
最多可指定256個表,它們之間用逗號分隔。如果選擇列表中存在同名列,這時應使用對象名限定這些列所屬的表或視圖。例如在usertable和citytable表中同時存在cityid列,在查詢兩個表中的cityid時應加以限定。
(三) WHERE子句設置查詢條件
WHERE子句設置查詢條件,過濾掉不需要的數據行。例如下面語句查詢年齡大於20的數據:
SELECT * FROM usertable WHERE age>20
WHERE子句可包括各種條件運算符:
比較運算符(大小比較):>、>=、=、<、<=、<>、!>、!<
範圍運算符(表達式值是否在指定的範圍):BETWEEN…AND…
NOT BETWEEN…AND…
列表運算符(判斷表達式是否爲列表中的指定項):IN (項1,項2……)
NOT IN (項1,項2……)
模式匹配符(判斷值是否與指定的字符通配格式相符):LIKE、NOT LIKE
空值判斷符(判斷表達式是否爲空):IS NULL、NOT IS NULL
邏輯運算符(用於多條件的邏輯連接):NOT、AND、OR
1、範圍運算符例:age BETWEEN 10 AND 30相當於age>=10 AND age<=30
2、列表運算符例:country IN ('Germany','China')
3、模式匹配符例:常用於模糊查找,它判斷列值是否與指定的字符串格式相匹配。可用於char、
varchar、text、ntext、datetime和smalldatetime等類型查詢。
可使用以下通配字符:
百分號%:可匹配任意類型和長度的字符,如果是中文,請使用兩個百分號即%%。
下劃線_:匹配單個任意字符,它常用來限制表達式的字符長度。
方括號[]:指定一個字符、字符串或範圍,要求所匹配對象爲它們中的任一個。
[^]:其取值也[] 相同,但它要求所匹配對象爲指定字符以外的任一個字符。
例如:
限制以Publishing結尾,使用LIKE '%Publishing'
限制以A開頭:LIKE '[A]%'
限制以A開頭外:LIKE '[^A]%'
4、空值判斷符例WHERE age IS NULL
5、邏輯運算符:優先級爲NOT、AND、OR
最後,讓我們用一個簡單的例子結束這篇教程:
Objku = InputBox("請輸入單位數據庫的路徑","默認位置","d:/jbqk.mdb")
Set Objconn = createobject("adodb.connection")
Objconn.open ="provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Objku
sql = "CREATE TABLE [單位資料](ID Autoincrement PRIMARY KEY,[姓名] text(8),[性別]
text(2),[科室] text(6),[住址] text(30))"
Objconn.execute(sql)
sql = "INSERT INTO [單位資料]([姓名],[性別],[科室],[住址]) VALUES('張三','男','行管科','解放路12號')"
Objconn.execute(sql)
sql = "INSERT INTO [單位資料]([姓名],[性別],[科室],[住址]) VALUES('李斯','女','市場科','五一路12號')"
Objconn.execute(sql)
sql = "DELETE FROM [單位資料] WHERE [姓名] = '張三' "
Objconn.execute(sql)
sql = "UPDATE [單位資料]"
sql = "SELECT COUNT(ID) FROM [單位資料]"