VBS 连接数据库 - 样例
例程1:
Public strConn As String
Public conn
Public rs
Public xx
Public Sub Workbook_Open()
strConn = "DSN=testdatabase;UID=;password="
Set conn = CreateObject("ADODB.Connection")
conn.Open strConn
UserForm1.Show
xx = 10000
Set rs = conn.Execute("SELECT * FROM table1")
Cells(1, 1).Value = rs("name")
End Sub
Set MyConn=Sever.CreateObject(“ADODB.Connection”)“FILEDSN=d:\Program Files\”
“SELECT * FROM Mytable”)“<BR>”&RS(“Mycolumn”))
MyConn.Open
Common Files\ODBC\Data Sources\MyData.dsn
Set RS=MyConn.Execute(
WHILE NOT RS.EOF
Response.Write(
RS.MoveNext
WEND
RS.Close
MyConn.Close
Set MyConn=Sever.CerateObject(“ADODB.Connection”)“FILEDSN=d:\Program Files\”
“SELECT * FROM Mytable”)
MyConn.Open
Common Files\ODBC\Data Source\MyData.dsn
Set RS=MyConn.Execute(
%>
<TABLE BORDER=1>
<TR>
<% FOR i=0 to RS.Fields.Count-1 %>
<TH><% =RS(i).Name *></TH>
<% Next %>
</TR>
<% While Not RS.EOF %>
<TR>
<% FOR i=0 TO RS.Fields.Count-1 %>
<TD><% = RS(i) %></TD>
<% Next %>
</TR>
<%
RS.MoveNext
WEND
RS.Close
MyConn.Close
例程2:
1、 運(yùn)行數(shù)據(jù)庫DSN
WinCC 內(nèi)部變量:@DatasourceNameRT,如:CC_MyTest_06_04_08_09_05_14R
2、普通連接的ConnectionString
(1)連接運(yùn)行數(shù)據(jù)庫
strSQL="Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initia
l Catalog=CC_MyTest_06_04_08_09_05_14R;Data Source=.\WINCC"
(2)連接其它數(shù)據(jù)庫,如:Northwind
strSQL="Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initia
l Catalog=Northwind;Data Source=.\WINCC"
注:普通連接方式下,所有標(biāo)準(zhǔn)的SQL 語句都可以使用。
3、歸檔數(shù)據(jù)庫的ConnectionString
strSQL="Provider=WinCCOLEDBProvider.1;Catalog=CC_MyTest_06_04_08_09_05_14R;D
ata Source=.\WinCC"
在此連接方式下,只能用WinCCOLEDBProvider 提供的方法訪問歸檔數(shù)據(jù)庫:
(1)單個歸檔變量查詢:
strSQL = "TAG:R,10,'2006-04-12 16:00:00','2006-04-13 15:59:59'"
或
strSQL = "TAG:R,'Archive1\Tag1','2006-04-12 16:00:00','2006-04-13 15:59:59'"
(2)多個歸檔變量查詢:
strSQL = "TAG:R,(10;14;15),'2006-04-12 16:00:00','2006-04-13 15:59:59'"
或
strSQL = "TAG:R,('Archive1\Tag1';'Archive2\Tag1';'Archive2\Tag2'),'2006-04-12 16:00:00','2
006-04-13 15:59:59''"
注:如果需要對查詢結(jié)果再作過濾,可以使用Recordset.Filter 屬性再次過濾。
(3)報警信息的查詢:
strSQL = "ALARMVIEW:Select * From AlgViewEnu Where DateTime>='2006-04-12 16:00:
00' And DateTime<='2006-04-13 15:59:59' And MsgNR=11"
注:Where 語句可以根據(jù)自己的需要填寫。
例程3:
Set StrConn = CreateObject( "Adodb.connection ")
Set StrNew = CreateObject( "Adodb.RecordSet ")
StrConn.ConnectionString = "Provider=SQLOLEDB.1;Password= 你的密
碼;Persist Security Info=True;User ID=你的sql server 登錄用戶名;Initial Catalog=
你要登錄的SQL SERVER 數(shù)據(jù)庫名;Data Source=數(shù)據(jù)庫服務(wù)器地址 "
StrConn.Open
StrSQL= "SELECT TOP 1 * FROM telephone ORDER BY TTIME DESC
"
StrNew.Open StrSQL,StrConn,1,3
例程4:
ADO 是Microsoft 提供和建議使用的新型數(shù)據(jù)訪問接口,它是建立OLEDB 之上的一個抽象
層。微軟公司在操作系統(tǒng)中默認(rèn)提供了 Access 的 ODBC 驅(qū)動程序以及 JET 引擎,
一、對ADO 對象的主要操作,一般包括6 個方面:
1.連接到數(shù)據(jù)源。通常使用ADO 的Connection 對象。一般使用相應(yīng)的屬性打開到數(shù)據(jù)源的
連接,設(shè)置游標(biāo)的位置,設(shè)置默認(rèn)的當(dāng)前數(shù)據(jù)庫,設(shè)置將使用的OLEDBProvider,直接提交
SQL 腳本等。
2.向數(shù)據(jù)源提交命令。通常涉及ADO 的Command 對象。可查詢數(shù)據(jù)庫并返回結(jié)果在Recor
dset 對象中。
3.執(zhí)行SELECT 查詢命令。在提交SQL 腳本的任務(wù)時,不用創(chuàng)建一個Command 對象,就可
完成查詢。
4.可以通過ADO 的Recordset 對象對結(jié)果進(jìn)行操作。
5.更新數(shù)據(jù)到物理存儲。作者:臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請注明出處]
6.提供錯誤檢測。通常涉及ADO 的Error 對象。
二、ADO 中主要對象的功能
Recordset 對象,用來封裝查詢的結(jié)果。
Field 對象,用來表達(dá)一行結(jié)果中各子段的類型和值。
Error 對象,用來檢測和判斷在數(shù)據(jù)庫操作中出現(xiàn)的錯誤,比如連接失敗。 在ADO 中,許
多對象名后多了一個"s",比如Error->Errors,Field->Fields 等等。添加"s"意味著是相應(yīng)對象
的Collection(集合)對象,比如Errors 是Error 對象的Collection 對象。Collection 有點(diǎn)像
數(shù)組(Array),但不同的是,Collection 可以以不同類型的數(shù)據(jù)或?qū)ο笞鳛樽约旱脑?#xff0c;而
數(shù)組中的各元素通常都是相同類型的。所以,在看到一個對象名最后是"s",通常表明這是
一個Collection 對象,比如Errors 中的各元素是由Error 對象的實(shí)例組成的。
三、具體應(yīng)用
1、創(chuàng)建mdb 數(shù)據(jù)庫
ADOX 是ADO 對象的擴(kuò)展庫。它可用于創(chuàng)建、修改和刪除模式對象,如數(shù)據(jù)庫和表格等。
其常用的對象有:Catalog—>創(chuàng)建數(shù)據(jù)庫。Column—>表示表、索引或關(guān)鍵字的列。作者:
臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請注明出處]
Key—>表示數(shù)據(jù)庫表中的關(guān)鍵字。
常用的方法有: Append 將對象添加到 其集合。Delete 刪除集合中的對象。作者:臨汾市
外事旅游局薛靖瀾,轉(zhuǎn)載請注明出處]
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
不過你要操縱數(shù)據(jù)庫就連一個數(shù)據(jù)庫也不建,未免懶惰了點(diǎn),用代碼雖然可以完成,但是我
覺得對數(shù)據(jù)約束完成的比較困難,本代碼也就是示范個例子,并不推薦使用此類方法。
2、打開數(shù)據(jù)庫 [作者:臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請注明出處]
Provider=Provider=Microsoft.Jet.OLEDB.4.0 ; Data Source="
Set Objconn = createobject("ADODB.Connection")
Objconn.Open Provider & "數(shù)據(jù)庫名稱"
3、創(chuàng)建記錄集
Set Objrs = CreateObject("ADODB.Recordset")
4、執(zhí)行SQL 查詢語句
Sql="SQL 查詢語句" '例如:Select count(*) from table1
Set objrs = objconn.execute(sql)
一般情況下,我們將絕大多數(shù)的操作轉(zhuǎn)化為SQL 語句完成。
常用的SQL 語句
在學(xué)習(xí)SQL 語句之前,讓我們先來對數(shù)據(jù)庫做一個基本的了解。一個數(shù)據(jù)庫中可能包含了
很多個基本單位叫做表。表格被分為“行”和“列”。每一行代表表的一個單獨(dú)組成部分,每一
列代表相同性質(zhì)的一組數(shù)據(jù)。舉例來說,如果我們有一個記載顧客資料的表格,行包括姓、
名、地址、城市、國家、生日等。而一列則代表了所有的地址或者國家等。
一、建立數(shù)據(jù)表,我們前邊說過利用ADOX.Catalog 建立數(shù)據(jù)庫和數(shù)據(jù)表的方法,但是用的
似乎不是很多,一般情況下,如果我們需要在數(shù)據(jù)庫中動態(tài)建立一個表,我們將工作交給S
QL 語句來做,其基本語法是:
CREATE TABLE [表格名]([列名1] 數(shù)據(jù)類型 , [列名2] 數(shù)據(jù)類型,... )
例如我們要建立一個基本顧客表:
Create table [顧客表]([姓名] text(8), [性別] text(2),[住址] text(30))
二、插入數(shù)據(jù)項(xiàng)
insert into [數(shù)據(jù)表名稱] (數(shù)據(jù)項(xiàng)1,數(shù)據(jù)項(xiàng)2,...) values (值1,值2,...)
insert into 語句用來添加新的數(shù)據(jù)到數(shù)據(jù)庫中的指定表。通過(數(shù)據(jù)項(xiàng)1,數(shù)據(jù)項(xiàng)2,...) values
(值1,值2,...)來為新添加的數(shù)據(jù)賦初值。
三、刪除數(shù)據(jù)項(xiàng)
delete from [數(shù)據(jù)表名稱] where [數(shù)據(jù)項(xiàng)1] like [值1] and/or [數(shù)據(jù)項(xiàng)2] like [值2] ...作
者:臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請注明出處]
四、更新數(shù)據(jù)項(xiàng)
update [數(shù)據(jù)表名稱] set 數(shù)據(jù)項(xiàng)1=值1,數(shù)據(jù)項(xiàng)2=值2,... where [數(shù)據(jù)項(xiàng)1] like [值1] and/
or [數(shù)據(jù)項(xiàng)2] like [值2] ...
該語句可以修改數(shù)據(jù)庫中指定數(shù)據(jù)表內(nèi)的指定數(shù)據(jù),如果不是用where 限定條件就表示修改
該表內(nèi)所有的數(shù)據(jù)條目。
五、查詢數(shù)據(jù)項(xiàng)
select [數(shù)據(jù)內(nèi)容] from [數(shù)據(jù)表名稱] where [數(shù)據(jù)項(xiàng)1] like [值1] and/or [數(shù)據(jù)項(xiàng)2] like
[值2] ... order by [數(shù)據(jù)項(xiàng)] asc/desc
[數(shù)據(jù)內(nèi)容]部分表示所要選取的表格中的數(shù)據(jù)項(xiàng),使用*表示選取全部。[數(shù)據(jù)表名稱]表示要
從哪一個表格中選取,如果你沒有接觸過數(shù)據(jù)庫可能很難了解什么是數(shù)據(jù)表格,沒關(guān)系,我
將在后面用到它的時候再說明。where 表示選取的條件,使用like 表示相等,也支持>=這樣
的判斷符號,同時使用多個條件進(jìn)行選取時中間要使用and 進(jìn)行連接。order by 決定數(shù)據(jù)的
排列順序,asc 表示按照[數(shù)據(jù)項(xiàng)]中的數(shù)據(jù)順序排列,desc 表示倒序,默認(rèn)情況為順序。sel
ect 語句中除select 和from 之外其它均為可選項(xiàng),如果都不填寫表示選取該數(shù)據(jù)表中的全部
數(shù)據(jù)。例如:下面的語句查詢某數(shù)據(jù)庫中表名稱為:testtable 中姓名為“張三”的nickname 字
段和email 字段。
SELECT nickname,email FROM testtable WHERE name='張三'
(一) 選擇列表
選擇列表(select_list)指出所查詢列,它可以是一組列名列表、星號、表達(dá)式、變量(包括局部
變量和全局變量)等構(gòu)成。
1、選擇所有列
例如,下面語句顯示testtable 表中所有列的數(shù)據(jù):
SELECT * FROM testtable
2、選擇部分列并指定它們的顯示次序查詢結(jié)果集合中數(shù)據(jù)的排列順序與選擇列表中所指定
的列名排列順序相同。
例如:SELECT nickname,email FROM testtable
3、更改列標(biāo)題
在選擇列表中,可重新指定列標(biāo)題。定義格式為:列標(biāo)題=列名
列名 列標(biāo)題如果指定的列標(biāo)題不是標(biāo)準(zhǔn)的標(biāo)識符格式時,應(yīng)使用引號定界符,例如,下列
語句使用漢字顯示列標(biāo)題:
SELECT 昵稱=nickname,電子郵件=email FROM testtable
(二) FROM 子句指定SELECT 語句查詢的表。
最多可指定256 個表,它們之間用逗號分隔。如果選擇列表中存在同名列,這時應(yīng)使用對象
名限定這些列所屬的表或視圖。例如在usertable 和citytable 表中同時存在cityid 列,在查詢
兩個表中的cityid 時應(yīng)加以限定。
(三) WHERE 子句設(shè)置查詢條件
WHERE 子句設(shè)置查詢條件,過濾掉不需要的數(shù)據(jù)行。例如下面語句查詢年齡大于20 的數(shù)
據(jù):
SELECT * FROM usertable WHERE age>20
WHERE 子句可包括各種條件運(yùn)算符:
比較運(yùn)算符(大小比較):>、>=、=、<、<=、<>、!>、!<
范圍運(yùn)算符(表達(dá)式值是否在指定的范圍):BETWEEN…AND…
NOT BETWEEN…AND…
列表運(yùn)算符(判斷表達(dá)式是否為列表中的指定項(xiàng)):IN (項(xiàng)1,項(xiàng)2……)
NOT IN (項(xiàng)1,項(xiàng)2……)
模式匹配符(判斷值是否與指定的字符通配格式相符):LIKE、NOT LIKE
空值判斷符(判斷表達(dá)式是否為空):IS NULL、NOT IS NULL
邏輯運(yùn)算符(用于多條件的邏輯連接):NOT、AND、OR
1、范圍運(yùn)算符例:age BETWEEN 10 AND 30 相當(dāng)于age>=10 AND age<=30 作者:臨汾
市外事旅游局薛靖瀾,轉(zhuǎn)載請注明出處]
2、列表運(yùn)算符例:country IN ('Germany','China')
3、模式匹配符例:常用于模糊查找,它判斷列值是否與指定的字符串格式相匹配。可用于
char、 varchar、text、ntext、datetime 和smalldatetime 等類型查詢。 作者:臨汾市外事旅游
局薛靖瀾,轉(zhuǎn)載請注明出處]
可使用以下通配字符:
百分號%:可匹配任意類型和長度的字符,如果是中文,請使用兩個百分號即%%。
下劃線_:匹配單個任意字符,它常用來限制表達(dá)式的字符長度。
方括號[]:指定一個字符、字符串或范圍,要求所匹配對象為它們中的任一個。 作者:臨
汾市外事旅游局薛靖瀾,轉(zhuǎn)載請注明出處]
[^]:其取值也[] 相同,但它要求所匹配對象為指定字符以外的任一個字符。
例如:作者:臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請注明出處]
限制以Publishing 結(jié)尾,使用LIKE '%Publishing'
限制以A 開頭:LIKE '[A]%'
限制以A 開頭外:LIKE '[^A]%'
4、空值判斷符例WHERE age IS NULL
5、邏輯運(yùn)算符:優(yōu)先級為NOT、AND、OR
最后,讓我們用一個簡單的例子結(jié)束這篇教程:
Objku = InputBox("請輸入單位數(shù)據(jù)庫的路徑","默認(rèn)位置","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 [單位資料]"
轉(zhuǎn)載 :作者:臨汾市外事旅游局薛靖瀾
posted on 2011-05-03 17:02 ryhan 閱讀(...) 評論(...) 編輯 收藏轉(zhuǎn)載于:https://www.cnblogs.com/ryhan/archive/2011/05/03/2035493.html
總結(jié)
以上是生活随笔為你收集整理的VBS 连接数据库 - 样例的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 速查100 WebServers
- 下一篇: Lec6-待学习的堆排序