一个离开.NET的程序员

ryhan

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

例程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、 运行数据库DSN


WinCC 内部变量:@DatasourceNameRT,如:CC_MyTest_06_04_08_09_05_14R


2、普通连接的ConnectionString


(1)连接运行数据库


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)连接其它数据库,如:Northwind


strSQL="Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initia
l Catalog=Northwind;Data Source=.\WINCC"


注:普通连接方式下,所有标准的SQL 语句都可以使用。


3、归档数据库的ConnectionString


strSQL="Provider=WinCCOLEDBProvider.1;Catalog=CC_MyTest_06_04_08_09_05_14R;D
ata Source=.\WinCC"
在此连接方式下,只能用WinCCOLEDBProvider 提供的方法访问归档数据库:

(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''"


注:如果需要对查询结果再作过滤,可以使用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 语句可以根据自己的需要填写。


例程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 数据库名;Data Source=数据库服务器地址 "
StrConn.Open
StrSQL= "SELECT TOP 1 * FROM telephone ORDER BY TTIME DESC
"
StrNew.Open StrSQL,StrConn,1,3


例程4:


ADO 是Microsoft 提供和建议使用的新型数据访问接口,它是建立OLEDB 之上的一个抽象
层。微软公司在操作系统中默认提供了 Access 的 ODBC 驱动程序以及 JET 引擎,


一、对ADO 对象的主要操作,一般包括6 个方面:


1.连接到数据源。通常使用ADO 的Connection 对象。一般使用相应的属性打开到数据源的
连接,设置游标的位置,设置默认的当前数据库,设置将使用的OLEDBProvider,直接提交
SQL 脚本等。
2.向数据源提交命令。通常涉及ADO 的Command 对象。可查询数据库并返回结果在Recor
dset 对象中。
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 建立数据库和数据表的方法,但是用的
似乎不是很多,一般情况下,如果我们需要在数据库中动态建立一个表,我们将工作交给S
QL 语句来做,其基本语法是:
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 表示倒序,默认情况为顺序。sel
ect 语句中除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 [单位资料]"

转载 :作者:临汾市外事旅游局薛靖澜

posted on 2011-05-03 17:02  ryhan  阅读(6669)  评论(0编辑  收藏  举报