第八章 利用ADO实现数据库的存取

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第八章利用ADO实现数据库的存取
ADO是微软提供的新一代数据库存取访问技术,利用ADO对象,通过QDBC驱动程序或OLE DB链接字符串,可实现对任意数据库的存取和访问。

8.1 ADO对象简介
1.ADO简介
ADO是ActiveX Data Object的缩写,称为ActiveX数据对象,是微软提供的一种面向对象的数据访问技术。

利用ADO对象,通过ODBC驱动程序或OLE DB链接字符串,可以实现对任意数据库的存取和访问。

ODBC是Open database connectivity的缩写,称为开放式数据库链接,是一个数据库引擎,或者可以认为是一种数据库驱动程序。

通过ODBC驱动程序,可以实现用同样的方法,来存取各种不同类型的关系型数据库,而不必关心所存取的数据库类型,只要该数据库符合ODBC标准的关系型数据库。

ASP运行在服务器端,数据库也是位于服务器端,因此,在服务器上必须安装数据库对应的ODBC驱动程序。

例如数据库服务器使用SQL SERVER数据库,就必须安装SQL SERVER的ODBC驱动程序,如使用ORACLE数据库,就必须使用支持ORACLE的ODBC驱动程序。

OLE DB是微软用来代替ODBC的一种数据库访问技
术。

和ODBC不同的是,ODBC只能对关系型数据库起作用,对非关系型数据库则无能为力,而OLE DB对关系型数据库和非关系型数据库都能实现有效的访问。

2.ADO的对象模型
ADO提供了7个独立的对象,利用这些对象,可以实现对数据库的存取和访问。

各对象的名称及功能如下:
●Connection:连接对象,用于建立应用程序与数据库之
间的连接。

只有建立与数据库之间的连接后,才能实
现对数据库的操作。

●Command:命令对象,代表一个命令。

利用命令对象
可执行一个SQL存储过程或带有参数的查询。

●Parameter:参数对象,代表SQL存储过程或有参数查
询中的一个参数。

●Recordset:记录集对象,代表从数据表中通过查询所
获得的一组记录。

通过该对象所提供的方法与属性,
可实现对记录的存取操作。

●Field:字段对象,代表记录集中的一个字段。

Fields
为字段稽核对象,代表一条记录的全部字段。

●Property:属性对象,代表数据提供者的具体属性。

●Error:错误对象,代表ADO运行时所出现的错误。

在这几个对象中,Connection、Command、Recordset对象是整个ADO的核心对象,通过Connection对象与一个数
据库建立连接,然后利用Command对象执行查询,从而返回查询结果,并将结果存入Recordset对象中,利用服务器端脚本程序,通过Recordset对象,便可获得所查询到的记录内容。

另外,除了Command对象可以执行查询外,利用Connection对象的execute方法和Recordset对象的open方法,也可以执行一个查询,从而返回一个记录集。

共有三种方法可以获得记录集。

8.2 创建ODBC数据源
利用ADO对象,通过ODBC方式实现对数据库的存取访问之前,要先建立好ODBC数据源。

ODBC数据源有三种类型:用户数据源、系统数据源和文件数据源。

每个数据源都有一个属于自己的名字,称为数据源名(Data Source Name),简称为DSN。

用户和系统DSN 都存储在WINDOWS系统的注册表中,系统DSN可被登录的所有用户访问和使用,而用户DSN只能供特定的用户访问和使用。

文件DSN是存储在一个扩展名为.dsn的文本文件中,可供登录的多个用户访问和使用。

通过复制DSN文件,可以轻易地实现从一个服务器移植到另一个服务器,其通用性更强。

因此一般使用文件DSN方式。

文件DSN型ODBC 数据源的创建方法具体是这样的:
(1)打开“控制面板”——〉“管理工具”——〉“ODBC
数据源”——〉“文件DSN”,切换到文件DSN设
置页面,如下图:
(2)单击“添加”按钮,弹出创建新数据源对话框,如
下图。

根据所要存取的数据类型,在数据源驱动程
序列表中,选择对应的驱动程序。

比如使用Access
数据库,则选择“Microsoft Access Driver(*.mdb) ”,
若是SQL SERVER数据库,则选择“SQL SERVER”。

此处以ACCESS数据库为例,因此选
择“Microsoft Access Driver(*.mdb) ”,然后单击“下
一步”。

(3)在对话框中输入存盘文件名和路径,比如输入:
mydsn.dsn,然后单击“下一步”,接着再单击“完成”
按钮,打开“ODBC Microsoft Access安装”对话
框。

(4)在对话框中单击“选择”按钮,在打开的“选择数
据库”对话框,选择所要操作的数据库,然后单击
“确定”按钮,关闭“选择数据库”对话框。

如下
图:
(5)最后单击“确定”按钮,完成文件dsn的创建,创
建好的文件DSN会显示在“ODBC数据源管理器”
中。

如下图:
(6)文件DSN创建好后,在指定的路径下,就会生成
对应的文件,通过复制该文件,可在另一个服务器
上直接使用,而不必再进行配置。

8.3ADO连接对象
1.创建连接对象
连接对象在使用前必须创建该对象的实例,其创建方法为:set 实例名=server.createobject(“adodb.connection”) 例如:若要创建一个名为conn的连接对象,则实现的语句为:
<% set conn= server.createobject(“adodb.connection”) %> 创建了连接实例对象后,还需要通过数据源或链接字符串指定所要打开的数据库,这样才能使连接对象成为有效,
可以通过连接对象的open方法来实现。

2.连接对象的方法
(1)open方法
该方法用于打开并建立一个新的数据连接,其用法为:连接对象.open 数据源名|链接字符串
数据源名与链接字符串选一,两种方式等效,只是利用链接字符串,可以不建立数据源而实现对数据库的访问。

具体方法后面讲述。

数据源可以是系统或用户数据源,也可以是文件数据源,若是系统数据源或用户数据源,则具体用法为:连接对象.open “dsn=数据源名;uid=username;pwd=password;”
若是文件数据源,则具体用法为:
连接对象.open “filedsn=数据源文件名;uid=username;pwd=password;”
说明:uid和pwd为可选项,分别用于设置访问数据库的用户名和密码。

Sql server或oracle 等数据库,在访问时需要指定用户名和密码,通过以上两个参数指定,对于access 数据库,则不需要。

用带参数的方式调用open方法,其参数实质是传递给连接对象的connectionstring属性的,因此可以事先设置好connectionstring属性的值,然后调用不带参数的open方法,
其使用方法为:
连接对象. Connectionstring=数据源名|链接字符串
连接对象.open
通过数据源及其open方法,可以建立和指定数据库的连接。

例8.1 现有文件数据源mydsn.dsn位于站点根目录下的database目录中,试利用该数据源,建立与对应数据库的连接。

实现的代码为:
<% set conn=server.createobject(“adodb.connection”)
Filepath=server.mappath(“/database/mydsn.dsn”)
Conn.open “filedsn=”&filepath %>
(2)close 方法
该方法用于关闭连接对象,以解释所占用的系统资源,其用法为:
连接对象.close
例如:conn.close
连接对象关闭后,最后再使用以下语句,以彻底释放该对象及其所占用的资源。

Set conn=nothing
(3)execute方法:
该方法用于执行SQL语句。

SQL语句执行后可以返回
记录集,该方法的使用方式有两种为:
①执行SQL查询语句时,将返回查询得到的记录集,使用方法为:
Set 对象变量名=连接对象.execute(“SQL查询语句”)
此处,对消变量名可以是任意的,execute方法调用后,会自动创建记录集对象,并将查询的结果存储在该记录集对象中,通过set方法,将记录集赋给指定的对象变量保存,以后对象变量就代表了该记录集对象。

例8.2 现已创建office.mdb的文件数据源mydsn.dsn,在office.mdb数据库中有一名为teacher的数据表,现要查询teacher数据表中的全部数据,并将查询结果保存在rs对象变量中。

实现的代码为:
<% mysql=”select * from teacher”
Set conn=server.createobject(“adodb.connection”)
Conn.open “filedsn=mydsn.dsn”
Set rs=conn.execute(mysql)
%>
这样就可以获得一个代表查询结果的记录集对象rs,通过记录集对象提供的方法和属性,结合编程,可以实现对记录数据的显示或其他处理。

②执行SQL的操作性语句时,没有记录集的返回。


时的用法是:
连接对象.execute “SQL操作语句”[,recordaffected][,option]
说明:
●SQL操作性语句主要有CREATE、DROP、INSERT、
DELETE、UPDATE、ALTER等,这些语句执行后
不会返回记录集。

●recordaffected为可选项,可以设置为一个变量,SQL
语句执行后,所生效的记录数会自动回存到该变量
中保存。

通过访问该变量,可以知道多少条记录被
操作。

●option也是可选项,该参数的取值通常为
adCMDText,它用于告诉ADO,应该将execute方法
之后的第一个字符串解释为命令文本。

通过指定该
参数,可使执行效率更高。

其值为&H0001。

例8.3 试用SQL语句,在office.mdb数据库中创建一
个名为userdata的数据表,其字段名和宽度如下:
字段名字段类型字段宽度附加信息
ID LONG NOT NULL
Username Text 15
PassW ord Text 15
Email Text 30
数据表创建后,向该数据表添加一条记录,记录内容如下:
ID UserName PassW ord Email
1 happy200
2 54qz#j happy@
实现的代码为:
<%
Mysql=”create table userdata(ID Long NOT NULL PRIMARY KEY,UserName Text(15),PassW ord Text(15),Email Text(30)”
Addsql=”INSERT INTO userdata VALUES(1,’happy2002’,’54qz#j’,’ happy@’)”
Set conn=server.createobject(“adodb.connection”)
Conn.open “filedsn=mydsn.dsn”
Conn.execute mysql
Conn.execute addsql
Conn.close
Set conn=nothing
%>
具体见例子sample83.asp
注意:如果试图创建的表已经存在,将发生错误。

(4) BeginTrans、RollbackTrans、CommitTrans方法
这几个方法是连接对象提供的用于数据库事务处
理的方法,所谓事务,在数据库用户看来,就是数据库上一些操作的集合,这些集合通常被认为是一个独立单元。

比如,顾客从支票帐户到储蓄账户的资金转账就是一次独立的操作,而在数据库系统中是由几个操作组成的,这几个操作要么全都发生,要么由于出错而全不发生,保证这一点在数据库中是非常重要的。

这几个操作就被看作是一个事务。

事务是构成单一逻辑工作单元的操作集合。

BeginTrans用于开始一个事务;RollbackTrans用于回滚一个事务,即撤销或放弃事务处理的结果,回到进行事务处理前的状态;CommitTrans用于提交所有事务处理的结果,即确认事务的处理。

事务处理可以将一组操作语句视为一个整体,只有全部语句都成功执行后,事物处理才算成功;若其中一个语句失败,则整个处理就算失败,并恢复到处理前的状态。

事务处理对于数据的完整性、一致性和安全性,提供保障。

BeginTrans和CommitTrans用于标记事务的开始和结束,在这两个语句之间的语句,就是作为事务处理的语句。

判断事物处理是否成功,可通过连接对象的Errors集合来实现,若Errors集合的成员个数不为0,则说明有错误发生,事务处理失败。

Errors集合中的一
个Error对象,代表一个错误信息。

例8.4 假设在bank.mdb数据库中有一个名为daybook的数据表,在该表中保存有储户的账户信息,其主要的字段有Account、PassW ord、Debit、Credit、Balance、ExchangeDate,分别代表账号、密码、借方(取款金额)、贷方(存款金额)、余额和交易日期,现要求从账号为“51198628501013990411”的账户上,转2万元到账号为“51198628501017293507”的账户上。

分析:银行交易采取的是日记帐。

每笔交易都必须写入数据表中,为了计算出当前交易后的余额,首先必须计算出该笔交易发生前的余额,可以通过以下语句来实现:
Select sum(credit)-sum(debit) from daybook where account=’账号’
该语句执行后,返回一条记录,且该记录只有一个字段,其值就是余额,可以通过RS(0)的方式来获得该值,RS(0)用于获得当前记录的第一个字段。

首先创建好bank.mdb数据库的文件数据源,并命名为mybank.dsn,然后将其复制到站点根目录下的database目录下。

为保证数据的安全修改,必须通过事务处理操作来实现。

具体的实现代码见sample84.asp 在该例子中,用到的方法是连接对象所提供的事务
处理,另外,我们还可以利用SQL语句本身所提供的事务处理语句,通过编写存储过程,然后再利用ADO 命令对象的相关方法,通过调用执行存储过程,也可以实现事务处理。

3.连接对象的属性
连接对象常用的属性和功能如下表:
8.4记录集对象
记录集就是一组记录的集合,在记录集对象中,保存有通过查询所获得的记录集。

通过访问记录集对象,可以获得这些记录。

8.4.1记录集的显示
一个记录集包括一条或多条记录,在任何时刻,只有一条记录是当前记录,在记录集中,有一个记录指针(也称为游标),指针所指的记录就是当前记录。

利用记录集对象所提供
的方法,可以移动记录指针,以改变当前记录。

记录由若干个字段组成,所有字段的集合,构成字段集Fields,通过对字段的访问,可以获得该字段的当前值。

1.相关属性
⑴EOF:该属性用于测试并返回记录指针是否到达记录集的末尾。

当指针移动到记录集最后一个记录的后面时,该属性返回True,否则返回False。

⑵BOF:该属性用于测试并返回记录指针是否到达记录集的头部。

当指针移动到记录集的第一个记录之前时,该属性返回True,否则返回False。

⑶RecorderCount:该属性用于返回记录集中的记录数
⑷AbsolutePosition:用于设置或返回当前记录在记录集中的位置顺数号。

2.相关方法
在显示记录集的内容时,常用的方法主要是记录指针的移动方法。

分别是:
⑴MoveFirst:将指针移动到首记录,即记录集中的第一行。

此时的BOF为False.
⑵MoveLast:将指针移动到记录集的最后一条记录,此时EOF为False,再向下移,就为True.
⑶MovePrevious:将指针移动到上一条记录。

⑷MoveNext:将指针移动到下一条记录。

3.Fields集合
Fields集合代表了一条记录的所有字段,集合中的每一个成员,均为一个Field对象,代表着一个字段。

利用Field 对象提供的Value、Name、Type和Size属性,可获得该字段的当前值、字段的名称、字段的类型和字段的宽度等信息。

利用Fields对象的count属性,可获得字段的个数。

要显示一条记录的内容,只需要依次显示每一个字段的值即可,这可以通过字段对象的Value属性来实现,因此,要输出当前记录某个字段的值,其方法就应为:
Rs.Fields(字段名|字段顺序号).Value
说明:Rs代表记录集对象。

字段名和字段顺序号任选其一,字段顺序号是指该字段在数据表中的顺序号,第一个字段的顺序号为0,以后依次递增1。

利用字段顺序号,可以在不知道字段名的情况下,按顺序号来访问字段,而利用字段名,则可在不知道该字段的顺序号时,实现访问。

由于Value是Field对象的默认属性,使用时可以省略,因此,以上用法也可表达为:
Rs.Fields(字段名|字段顺序号) 或者
Rs(字段名|字段顺序号)
注意:如果访问的不是Value属性,而是Field对象的Name或其他属性,则属性名不能省,此时有以下两种表达式:Rs.Fields(字段名|字段顺序号).Name 或者
Rs(字段名|字段顺序号).name
另外,使用字段名来访问字段的值时,字段名要用双引号括起来。

例如:RS(“姓名”)
4.显示记录集内容
例8.5 在office.mdb数据库中有一个名为teacher的数据表,试编程输出teacher数据表的全部记录内容。

表格标题部分的背景颜色为#000080,前景色为白色,各数据行背景色为#f6f6f6,前景色为黑色,表格边框宽度为0。

实现步骤:
⑴首先创建与office.mdb数据库相关联的文件数据源officedsn.dsn,然后将其复制到站点根目录下的database目录中。

⑵编写代码。

具体见sample85.asp
8.4.2利用RecordSet对象获得记录集
除了利用连接对象的Execute方法可获得记录集外,利用ADO的RecordSet对象,也可以获得记录集,而且具有更灵活的控制性和更强的功能。

1.创建RecordSet对象
若要显示地创建RecordSet对象的实例,可以用如下语句来实现:
Set 记录集对象实例
=server.createobject(“ADODB.RecordSet”)
例如,若要创建一个名为RS的记录集对象,则创建的方法为:Set RS=server.createobject(“ADODB.RecordSet”)
2.记录集的Open方法
记录集对象实例创建后,还必须用OPen方法打开它,才能变为有效。

该方法的调用格式为:
记录集对象实例.Open usersql,myconn,cursortype,locktype,option
参数说明:
⑴usersql:代表sql查询语句。

⑵myconn:代表数据源名或数据库的链接字符串。

若为用户数据源或系统数据源,则表达式为“DSN=数据源名”;若为文件爱女数据源,则表达式为“FILEDSN=数据源文件名”。

⑶cursortype:用于设置记录集的游标类型,为可选项,游标类型控制从服务器数据库取回数据的方式,从而决定可以对记录集进行怎样的操作,其取值及对应的含义见下表:
对于这些常用到的符号常量都可以在ADOVBS.INC文件中定义,在ASP页面中,若要使用这些符号常量,必须将该文件包含到页面中,包含的方法是:
<!--#include file=“ADOVBS.INC”>
⑷locktype:用于设置对记录集的锁定类型,可选项。

锁定类型决定了当不止一个用户同时试图修改一个记录时,数据库应如何处理。

记录集的锁定类型及功能如下表:
⑸option:该参数用于指定usersql参数项的命令字符串的类型,其取值及对应的类型如下表:
调用带参数的Open方法时,其参数值会传递给对应的
属性保存,因此,也可以在调用Open方法前,先设置对应属性的值,然后再利用不带属性参数的Open方法来打开记录集,二者是等效的。

3.记录集的CursorLocation属性
该记录用于控制游标的类型为服务器端还是客户端。

其取值与对应的游标位置如下表:
例8.6 用RecordSet对象的显示声明办法,获得记录集,实现例8.5的功能。

分析:因为只是显示数据表的内容,游标和加锁类型均可以采用默认值。

具体的实现代码见sample86.asp
8.4.3记录的添加于编辑修改
记录集对象还提供了一组方法,用于实现记录的添加、
更新和删除等操作。

1.addnew
用于向记录集添加一条新记录。

2.update
用于保存对当前记录所作的修改。

常与addnew方法配合使用。

3.cancalupdate
该方法用于取消对当前记录所作的修改,必须在调用update之前调用。

例8.7 试编程实现向bank.mdb数据库的teacher数据表中添加记录数据。

分析:利用网页收集数据,必须借助表单来实现,因此可设计一表单,供用户输入数据,表单数据提交后,再由脚本代码,将数据写入到数据库表中。

Teacher数据表中的ID为自动递增字段,系统会自动为其分配值,用户不需写入。

具体的实现代码见sample87.asp 利用Addnew方法,可以实现大容量数据的输入,这是该方法的优势。

4.delete
该方法用于删除当前的记录。

在实际的应用中,通常不使用记录集的delete方法来删除记录,而使用连接对象的Execute方法,通过执行相应的sql语句来实现。

Sql语句的
delete可以带条件删除指定的记录,使用比较灵活,功能比较强大,另外,记录的添加、修改也可以通过执行sql的INSERT INTO 和update语句来实现。

例8.8 用sql的insert into语句实现例8.7 的功能。

分析:本例实现的功能与例8.7相同,只是数据库的写入采用了sql语句,因此,用于生成表单界面的代码保持不变,只需要将实现数据写入的脚本代码作适当的修改即可。

具体的代码见sample88.asp.
例8.9 采用例8.5的方式显示记录,但在每条记录的最后增加显示两个操作选项,分别是“编辑”、和“删除”,分别用于实现编辑修改和删除当前记录。

分析:为了使编辑和删除选项能响应用户的鼠标操作,可将选项设计成超链接。

然后将当前记录的ID值作为参数,传递给另一个专门实现删除功能的页面,在这个页面中,通过查询得到ID值,最后利用带条件的SQL语句,实现删除功能。

对于编辑操作,由于要将当前记录的内容显示出来,供用户编辑修改,因此需要使用一个修改页面,并将所要修改记录的ID值,通过查询参数,传递给该页面。

修改页面通过查询参数,获得要修改记录的ID值,通过SQL语句的条件查询,获得该记录,并在表单中显示记录的内容,修改后,通过表单提交,重定向到另一个页面,在该页面中,就可以
利用带条件的Update语句,实现表记录的更新。

实现的步骤和代码为:
⑴实现数据表记录内容显示的页面见sample89.asp.
⑵实现记录的编辑修改的页面代码为editrecord.asp;
⑶表单提交的处理页面为updatedata.asp;
⑷实现删除当前记录的代码为delrecord.asp.
8.4.4记录集的分页显示
由于数据表中的记录往往很多,如果在一个页面中进行显示,会给用户浏览造成麻烦。

记录集对象提供了三个相关的属性,用于分页显示,分别是:
●pageSize:用于设置每页的记录个数,默认为0。

●pageCount:用于返回记录集中的逻辑页的页数。

●absolutePage:用于设置和返回当前页。

为了让该属性能正
确返回当前记录所载的逻辑页面,可使用OLE DB链接字符串来访问数据库。

利用OLE DB链接字符串来访问Access数据库。

其链接字符串为:cnstr=“PROVIDER=Microsoft.JET.OLEDB.4.0;Data Source=Access数据库名”
注意:若记录集的CursorLocation属性采用默认值,则分页显示时,记录及的游标类型只能设置为1或3;若
CursorLocation设置为3,则游标类型根据需要,可设置为任意值。

加锁类型可根据需要而设置,若仅是显示,则可采用默认的只读模式。

例8.10 试用分页显示方式,输出bank.mdb数据库中teacher数据表的全部记录内容,每页显示8条记录,并提供上一页、下一页、首页、尾页的导航链接。

另外,为便于导航到指定的页面,提供一文本输入框,输入页号并按回车后,就显示指定页面的记录内容。

分析:每页显示的记录数可用记录集对象的PageSize属性指定,所要显示的逻辑页面通过记录集的AbsolutePage属性来指定。

单击上一页、下一页、首页、尾页等超链接时,将所要显示的页号作为查询参数传递给页面自身,从而实现显示指定的记录内容。

具体的代码见sample810.asp
8.5不用DSN实现数据库的访问
前面介绍的数据库的存取方式,主要采用的是数据源的方式,另外,我们还可以通过ODBC驱动程序或OLE DB链接字符串,来实现数据库的访问。

在具体操作上,只需要将数据源换成ODBC的链接字符串,或OLE DB的链接字符串即可,其他队记录集的操作方法完全相同。

8.5.1用ODBC驱动程序实现数据库访问
以下是几种常用的数据库所对应的ODBC链接字符串。

1.访问ACCESS数据库
(1)访问未加密的数据库
对于未加密的数据库,可以采用以下链接字符串来进行访问。

Connstr=“DRIVER={Microsoft Access Driver(*.mdb)};DBQ=数据库名;”
例如:若要访问数据库为office.mdb,位于站点根目录下的database目录中,则用ODBC链接字符串的访问方法为:<%
Dbpath=server.mappath(“database/office.mdb”)
Connstr=“DRIVER={Microsoft Access Driver(*.mdb)};DBQ= “&Dbpath&”;”
Set conn=server.createobject(“adodb.connection”)
Conn.open Connstr
%>
(2) 访问带密码的数据库
对于有密码的数据库,可利用以下链接字符串来进行访问。

Connstr=“DRIVER={Microsoft Access Driver(*.mdb)};DBQ=数据库名;UID=;PWD=数据库密码;”例如,若office.mdb数据库的密码为“rk34*#98ez”,则访问该数据库的方法为:
<%
Dbpath=server.mappath(“database/office.mdb”)
Connstr=“DRIVER={Microsoft Access Driver(*.mdb)};DBQ= “&Dbpath&”;UID=;PWD= rk34*#98ez;”
Set conn=server.createobject(“adodb.connection”)
Conn.open Connstr
%>
2.访问Oracle数据库
链接字符串为:
Connstr=“DRIVER={Microsoft ODBC for Oracle };Server=服务器名或地址;UID=用户名;PWD=用户密码;”
3.访问SQL Server数据库
链接字符串为:
Connstr=“DRIVER={SQL Server};Server=服务器名;DataBase=数据库名;UID=用户名;PWD=用户密码;”
4. 访问MySQL数据库
链接字符串为:
Connstr=“DRIVER={MySQL};Server=服务器名;Port=3306;Option=131072;Stmt=;DataBase=数据库名;UID=用户名;PWD=用户密码;”
8.5.2用OLE DB链接字符串实现数据库访问
1.访问Access数据库
(1)访问未加密的数据库
OLE DB链接字符串为:
Connstr=“Provider=Microsoft.Jet.OLEDB.4.0;Data Source=数据库名;”
(2)访问加密的数据库
OLE DB链接字符串为:
Connstr=“Provider=Microsoft.Jet.OLEDB.4.0;Data Source=数据库名;Jet OLEDB:DataBase Password=数据库密码;”
例如:若office.mdb数据库位于站点根目录下的database目录下,数据库的密码为“fsd&%gds”,则访问该数据库的方法为:
<%
Dbpath=server.mappath(“database/office.mdb”)
Connstr=“Provider=Microsoft.Jet.OLEDB.4.0;Data Source=“& Dbpath&”;Jet OLEDB:DataBase Password= fsd&%gds;”
Set conn=server.createobject(“adodb.connection”)
Conn.open Connstr
%>
2.访问SQL Server数据库
OLE DB链接字符串为:
Connstr=“Provider=MSDASQL;Driver={SQL Server};Server=服务器名;Database=数据库名;Uid=用户名;Pwd=用户密
码;”
或者:
Connstr=“Provider=SQLOLEDB.1;Server=服务器名;DataBase=数据库名;Uid=用户名;Pwd=用户密码;”
3.访问Oracle数据库
Oracle的OLE DB提供者有微软提供的和Oracle公司提供的两种。

若采用微软公司提供的OLE DB provider for oracle则链接字符串为:
Connstr=“Provider=msdaora; DataBase=数据库名;Uid=用户名;Pwd=用户密码;”
若采用Oracle公司的OLE DB Provider for Oracle,则链接字符串为:
Connstr=“Provider=ORAOLEDB.Oracle; DataBase=数据库名;Uid=用户名;Pwd=用户密码;”
8.6用纯代码实现图形上传到数据库
上传图形或声音文件到数据库保存,目前有两种方法,一种利用第三方的组件来实现,另一种是利用ASP,通过纯代码编程来实现。

利用组件实现文件的上传,需要使用到第三方的组件,这个第三方组件需要在服务器上注册后才能使用,处于安全的考虑,目前的商业站点,一般不会轻易在服务器上注册组。

相关文档
最新文档