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 [单位资料]"