《《ADO与Web数据库》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《ADO与Web数据库》PPT课件.ppt(42页珍藏版)》请在金锄头文库上搜索。
1、第第7章章 ADO与与Web数据库数据库 ADO是是ASP内置的一个用于数据库访问的组件,是内置的一个用于数据库访问的组件,是ASP技术的核心之一。技术的核心之一。Web数据库则是数据库则是Web技术和数据库技术相结技术和数据库技术相结合的产物,网上办公、电子商务、在线注册与搜索等都需要利合的产物,网上办公、电子商务、在线注册与搜索等都需要利用用Web数据库来存储和管理数据。可以说,要开发基于数据库来存储和管理数据。可以说,要开发基于Browser/Server(浏览器浏览器/服务器服务器)模式的网络应用就不能没有模式的网络应用就不能没有 Web数据库的支持。数据库的支持。ASP与与ADO相结
2、合,完整地解决了网页与相结合,完整地解决了网页与数据库的连接与集成问题,实现了客户端浏览器对数据库的连接与集成问题,实现了客户端浏览器对Web数据库数据库灵活而有效地访问,从而提供了对各种灵活而有效地访问,从而提供了对各种Web应用的强大支持。应用的强大支持。第第7章章 ADO与与Web数据库数据库7.1 ADO7.1 ADO基础基础基础基础7.2 Connection7.2 Connection对象对象对象对象7.3 Command7.3 Command对象对象对象对象7. 4 7. 4 RecordsetRecordset对象对象对象对象7. 5 7. 5 访问数据库实例访问数据库实例访问
3、数据库实例访问数据库实例7.1 ADO基础基础 7.1.1 使用使用ADO访问数据库访问数据库 ASP是通过一组统称为是通过一组统称为ADO (ActiveX Data Object, 活活动数据对象)的对象模块来操作数据库的。无论是动数据对象)的对象模块来操作数据库的。无论是Access、SQL Server、 Visual FoxPro 、Oracle 、dBase、 Informix或是其他数据库,只要该数据库具有对应的或是其他数据库,只要该数据库具有对应的ODBC或或OLE DB驱动程序,驱动程序,ADO对象就能够进行操作。对象就能够进行操作。7.1 ADO基础基础7.1.2 ADO
4、对象模型对象模型 ADO 组件主要提供了组件主要提供了 7 种对象和种对象和 4 种集合供种集合供 Web应用程序的开发者使用,通过这些对象和集合,可以方应用程序的开发者使用,通过这些对象和集合,可以方便地建立与便地建立与Web数据库的连接、执行数据库的连接、执行 SQL 查询并处理查询并处理查询得到的结果。查询得到的结果。集合描述Errors所有的Error对象集合。这个集合用来响应一个连接(Connection) 上的单一错误Parameters所有的Parameter对象集合。这个集合关联着一个Command对象Fields所有的字段对象集合。这个集合关联着一个Recordset对象的所
5、有字段Properties所有的Property对象集合。这个集合关联着Connection、Command、Recordset或者Field对象ADO集合描述对象描述Connection(连接对象)用来建立数据源和ADO程序之间的连接Command(命令对象)用来嵌入SQL查询,包括对存储过程的调用Parameter(参数对象)用来传递参数给SQL查询,在使用存储过程时用到Recordset(记录集对象)用来浏览及操作实际数据库内的数据,这是非常重要的一个对象Field(字段对象)用来取得一个记录集(Recordset)内不同字段的值Error(错误对象)用来返回一个数据库连接(Connec
6、tion)上的错误Property(属性对象)指明一个ADO对象的属性ADO对象描述 其中,其中,Connection 对象、对象、Command 对象和对象和Recordset 对象是最基本也对象是最基本也是最重要的对象。是最重要的对象。 7.2 Connection对象对象 ADO组件中的组件中的Connection对象,用于建立和管理应用程对象,用于建立和管理应用程序与序与 OLE DB数据源或数据源或 ODBC 数据库之间的连接,其他所有数据库之间的连接,其他所有对象都必须依赖此对象实现的连接才能发挥各自的功能。对象都必须依赖此对象实现的连接才能发挥各自的功能。 Connection对
7、象是对象是ADO内置组件对象,因此需首先用内置组件对象,因此需首先用Server对象的对象的CreateObject方法创建一个实例后才可使用。方法创建一个实例后才可使用。 Set conn = Server.CreateObject (”ADODB.Connection”)7.2 Connection对象对象Connection对象的常用属性属性意义描述CommandTimeout定义了使用Execute方法运行一条SQL命令的最长时限,才能够中断并产生错误。默认值为30秒(设定为0表示没有限制)ConnectionString设定连接数据源的信息,包括FileName、Password、U
8、serld、DataSource、Provider等参数ConnectionTimeout定义了使用open方法连接数据源的最长等待时间,默认值为15秒(设定为0时表示没有限制)DefaultDatabase定义连接的默认数据库Mode建立连接之前,设定连接的读写方式,决定是否可更改目前数据。0-不设定(默认)、1-只读、2-只写、3-读写Provider设置连接的数据提供者(数据库管理程序),默认值是MSDASQL(MicrosotODBC For OLEDB)State读取当前链接对象的状态,取0表示关闭,1表示打开7.2.1 Connection 对象的属性对象的属性7.2 Connec
9、tion对象对象 Connection对象的方法及描述方法意义描述Open建立一个与数据源的连接对象Close关闭与数据源的连接,并且释放与连接有关的系统资源Execute执行SQL命令或存储过程,以实现与数据库的通讯BeginTrans开始一个新的事务,即在内存中为事务开辟一片内存缓冲区CommitTrans提交事务,即把一次事务中所有变动的数据从内存缓冲区一次性地写入硬盘,结束当前事务并可能开始一个新的事务RollbackTrans回滚事务,即取消开始此次事务以来对数据源的所有操作,并结束本次事务操作7.2.2 Connection 对象的方法对象的方法7.2 Connection对象对象
10、7.2.2 Connection 对象的方法对象的方法1Open方法方法 打开与数据库的物理连接,只有在使用本方法之后,才能够访问打开与数据库的物理连接,只有在使用本方法之后,才能够访问指定的数据源。指定的数据源。l 语法格式:语法格式: Connobject.OpenConnobject.Open connectionstringconnectionstring, , UserIdUserId, Password, Passwordl 说明:说明: ConnectstringConnectstring为为可可选选参参数数,它它是是一一个个字字符符串串变变量量,包包含含用用于于连连接接数数据据
11、库的信息字符串,该参数由分号分隔的一系列库的信息字符串,该参数由分号分隔的一系列argument=valueargument=value语句组成。语句组成。 UserIdUserId为为可可选选参参数数,它它是是一一个个字字符符串串变变量量,包包含含建建立立连连接接时时访访问问数数据据库库使用的用户名称。使用的用户名称。 PasswordPassword为为可可选选参参数数,它它是是一一个个字字符符串串变变量量,包包含含建建立立连连接接时时访访问问数数据据库使用的密码。库使用的密码。7.2 Connection对象对象7.2.2 Connection 对象的方法对象的方法2Close方法方法
12、关闭与数据源的连接,并且释放与连接有关的系统资源。关闭与数据源的连接,并且释放与连接有关的系统资源。l 语法格式:语法格式: Connobject.closel 说明:说明: 关闭一个连接对象但没有从内存中删除该对象。因此一个关闭的关闭一个连接对象但没有从内存中删除该对象。因此一个关闭的connectionconnection对象还可以用对象还可以用openopen方法打开而不必再次创建一个方法打开而不必再次创建一个connectionconnection对对象。此外,在使用象。此外,在使用closeclose方法关闭连接时,也将关闭以此连接相关的所有活方法关闭连接时,也将关闭以此连接相关的所
13、有活动的动的recoordsetrecoordset对象。但是,与此连接相关的对象。但是,与此连接相关的commandcommand对象将不受影响,只对象将不受影响,只不过不过commandcommand对象不再参与这个连接。对象不再参与这个连接。 为了释放为了释放connectionconnection对象所占用的所有资源,可以用下面的方法:对象所占用的所有资源,可以用下面的方法: Set Connobject = nothing7.2 Connection对象对象7.2.2 Connection 对象的方法对象的方法3Execute方法方法 执行执行SQLSQL命令或存储过程,以实现与数据
14、库的通讯。命令或存储过程,以实现与数据库的通讯。l 语法格式:语法格式: 有返回记录的格式: Set Rs = Connobject.Execute(CommandText, ReccordAffected, Options) 无返回记录的格式 Connobject.Execute CommandText, ReccordAffected, Optionsl 说明:说明: CommandText是一个字符串,它包含一个表名,或某个将被执行的SQL语句。 ReccordAffected为可选参数,返回此次操作所影响的记录数。 Options为可选参数,用来表示CommandText参数的性质。7
15、.3 Command对象对象 CommandCommand对象用来定义数据库的查询动作,这个查询一般对象用来定义数据库的查询动作,这个查询一般采用采用SQLSQL语句,大部分数据库都会支持语句,大部分数据库都会支持SQLSQL语言解释。通过和语言解释。通过和SQL ServerSQL Server的查询及存储过程的良好结合,的查询及存储过程的良好结合,CommandCommand对象有更对象有更强大的数据库访问能力,无论是对数据库的插入、更新和删强大的数据库访问能力,无论是对数据库的插入、更新和删除这类无需返回结果集的操作,还是对除这类无需返回结果集的操作,还是对SelectSelect查询这
16、样需返查询这样需返回结果集的操作都一样简单。回结果集的操作都一样简单。 创建创建CommandCommand对象实例语句格式为:对象实例语句格式为: Set Set commcomm = = Server.CreateObjectServer.CreateObject (”(”ADODB.CommandADODB.Command”)”)7.3.1 Command 对象的属性对象的属性7.3 Command对象对象CommandCommand对象的属性对象的属性属性意义描述ActiveConnection定义了Command对象的连接信息,用来指定当前的Command对象的操作对象是哪个Conn
17、ection对象CommandText定义传送给数据提供者的命令文本。它被用来设定或返回一个字符串,该字符串包含一个SQL命令、一个表名或一个存储过程名。默认值为空字符串CommandType指示CommandTem属性中设定的“命令字符串”的类型CommandTimeout用来设定等候运行一条命令的最长等待时间,超过该时间命令对象中止并产生一个错误。设定为0时表示无限期等待Name用来设置和读取一个Command对象的名字Prepared该属性指示在命令被执行前是否要用命令创建一个预备语句State用来设置或读取当前Command对象的状态是打开的或关闭的7.3.2 Command 对象的方
18、法对象的方法7.3 Command对象对象 CommandCommand对象的常用方法有对象的常用方法有ExecuteExecute方法,用来运行方法,用来运行CommandTextCommandText属性属性所设定的所设定的SQLSQL查询、查询、SQLSQL说明命令或存储过程,以实现与数据库的通讯。其说明命令或存储过程,以实现与数据库的通讯。其语法为:语法为: 有返回记录的格式:有返回记录的格式:Set Set RsRs = Comm. = Comm. Execute(RecordsAffectedExecute(RecordsAffected, Parameters, Options)
19、, Parameters, Options)无返回记录的格式:无返回记录的格式:Comm.ExecuteComm.Execute RecordsAfiectedRecordsAfiected , Parameters, Options Parameters, Options RecordAfiectedRecordAfiected为可选参数,返回此次操作所影响的记录数。为可选参数,返回此次操作所影响的记录数。ParametersParameters为可选参数,表示一个为可选参数,表示一个SQLSQL语句的参数集合。语句的参数集合。OptionsOptions为可选参为可选参数,用来指定数,用来
20、指定ADOADO如何解释如何解释CommandTextCommandText参数的参数值,它的取值与意义参数的参数值,它的取值与意义connectionconnection中中OptionsOptions参数的取值及意义相同。参数的取值及意义相同。 RecordsetRecordset对象负责从数据库中取得所需的记录数据并在对象负责从数据库中取得所需的记录数据并在内存中创建一个记录集合。用户在访问数据库时,一般先通过内存中创建一个记录集合。用户在访问数据库时,一般先通过ConnectionConnection对象建立与指定数据库的连接,再按所需的要求通对象建立与指定数据库的连接,再按所需的要求
21、通过相应的过相应的SQLSQL命令从数据库中提取数据创建一个命令从数据库中提取数据创建一个RecordsetRecordset记录记录集,此后即可利用集,此后即可利用RecordsetRecordset对象的各种属性和方法对这个记对象的各种属性和方法对这个记录集中的数据进行各种操作处理。录集中的数据进行各种操作处理。 创建创建CommandCommand对象实例语句格式为:对象实例语句格式为: Set Set rsrs = = Server.CreateObjectServer.CreateObject (” (”ADODB.RecordsetADODB.Recordset”)”)7. 4 R
22、ecordset对象对象7.4.1 Recordset 对象的属性对象的属性7. 4 Recordset对象对象属性意义描述ActiveConnection定义了与数据提供者的连接信息,用来指定当前的RecordSet对象属于哪个Connection对象Source指示RecordSet对象的数据源,可以是一个command对象名、SQL语句、数据库表或存储过程CursorType指定RecordSet对象所使用的光标类型LockType表示编辑时记录的锁定类型Filter用来设定一个过滤条件,以便对RecordSet记录进行过滤CacheSize表示一个RecordSet对象在高速缓存中的记
23、录数Maxrecords执行一个SQL查询时,返回RecordSet对象的最大记录数Bof判断记录指针是否到了第一条记录之前Eof判断记录指针是否到了最后一条记录之后RecordCount 返回RecordSet对象的记录数(在使用键盘光标时,该属性返回的可能是不太准确的数值;一般情况下,并不用这种方法来统计RecordSet中的记录数,因为它的性能并不稳定)Bookmark书签标记,用来保存存当前记录的位置AbsolutePosition用来设定RecordSet对象中当前记录的顺序位置是第几行记录PageSize表示RecordSet对象的页面大小(每页多少条记录),默认值为10PageC
24、ount表示RecordSet对象的页面个数AbsolutePage表示当前记录的页号EditMode指示当前记录的编辑状态,0 已被编辑;1 已被修改而未提交;2 存入数据库的新记录Status对RecordSet对象进行批量更新后,查询当前记录的状态7.4.2 Recordset 对象的方法对象的方法7. 4 Recordset对象对象方法意义描述Open打开一个RecordSet对象Close关闭一个RecordSet对象并释放相关的资源Clone创建一个RecordSet对象的完全拷贝,但只有所用的RecordSet对象类型允许使用BookMarks时才能使用该方法MoveFirst把
25、RecordSet指针指向第一行记录MoveLast把RecordSet指针指向最后一条记录(该RecordSet必须支持书签)MovePrevious把RecordSet指针上移一行(使用前应判断BOF是否为真;该RecordSet必须支持书签)Movenext把RecordSet指针下移一行(使用前应判断EOF是否为真)Move把RecordSet指针指向指定的记录GetPows从一个RecordSet对象读取一行或多行记录到一个数组中NextRecordSet清除当前的RecordSet并执行下一条指令,以传回下一个RecordSet对象,如果没有下一条指令则返回Nothing给Reco
26、rdSetRequery重新执行的SQL查询操作,以更新RecordSet对象中的数据Resync从数据源更新当前的RecordSet记录,实现与数据源的同步Addnew增加一条空纪录Delete删除当前记录Update保存当前记录的任何变动CancelUpdate取消前一个Update方法所做的一切修改UpdateBatchRecordSet工作在批量方式时,取消对RecordSet的更新Suports获取创建的RecordSet对象的能力信息7. 4 Recordset对象对象7.4.2 Recordset 对象的方法对象的方法1Open方法方法 打开一个打开一个RecordSetReco
27、rdSet对象对象l 语法格式语法格式 Rs.Open Source, ActiveConnection, CursorType, LockType, Optionl 说明:说明: SourceSource: 表示数据源,可以是一个Command对象名、一段SQL命令、一个指定的数据表名称,也可以是一个存储过程名 。 ActiveConnectionActiveConnection: 表示所使用的连接,可以是一个已建立的Connection对象名,也可以是一个包含数据库连接信息的字符串。 CursorTypeCursorType: 表示打开RecordSet对象所使用的光标类型。不同的光标类型
28、决定了对RecordSet所能做的操作。共有四种光标类型:0 0 - -前前滚滚光光标标, , 记录指针只能向前移动,且不允许修改任何记录,是Cursor的默认值,此类型所用的系统资源最少,访问效率最高;1 1 - - 键键盘盘光光标标( (KeysetCursorKeysetCursor) ),记录指针可向前向后移动,可进行记录的更新和删除,但所做的任何记录修正均无法由他人读取;2 2 - - 动动态态光光标标( (DynamicCursorDynamicCursor) ),记录指针可向前向后移动,可进行记录的更新和删除,所做的任何记录修正均可由他人读取,此类型所用的系统资源最多; 3 3
29、- - 静静态态光光标标( (StaticCursorStaticCursor) ),记录指针可向前向后移动,但不允许修改任何记录。 Open方法语法格式:方法语法格式: Rs.Open Source, ActiveConnection, CursorType, LockType, Option Open方法语法格式:方法语法格式: Rs.Open Source, ActiveConnection, CursorType, LockType, Option LockTypeLockType: 表示编辑时记录的锁定类型。它决定了当多用户试图同时改变一个记录时,RecordSet如何处理数据记录。
30、它的取值有:1 1 - - 只只读读锁锁定定,记录只读,不能更新RecordSet,为LockType的默认值;2 2 保守式锁定,保守式锁定,编辑记录开始立刻锁定,直到提交给数据提供者;3 3 开放式锁定,开放式锁定,只有调用Update方法更新记录时才锁定记录;4 - 4 - 批量开放式锁定,批量开放式锁定,允许同时更新多条记录。值意义描述1表示被执行的字符串包含一个命令文本2表示被执行的字符串包含一个表名4表示被执行的字符串包含一个存储过程名8没有指定字符串的内容(这是默认值) Open方法语法格式:方法语法格式: Rs.Open Source, ActiveConnection, Cu
31、rsorType, LockType, OptionOption: 表示数据提供者如何处理Source的内容类型。例如:例如: Rs.Open “select * from 表名表名”,conn,1, 1,1。7. 4 Recordset对象对象7.4.2 Recordset 对象的方法对象的方法2Close方法方法 Rs.close关闭RecordSet对象,并不从内存中删除该对象,只是无法读取其中的数据,但仍然可以读取它的属性。因此一个关闭的ReccordSet对象还可以用Open方法打开并保持其原有属性。如果正在进行编辑更新数据的操作,在调用Close方法前必须先调用Update或Can
32、celUpdate方法,否则将会出现错误。如果以批量模式更新数据记录(Reccordset的LockType属性设为3),那么对缓冲区数据的修改将全部丢失。另外,使用Clone方法复制一个已经打开的RecordSet对象,调用Close方法不影响任何复制的RecordSet对象。 用下面的命令可以释放RecordSet对象所占用的所有资源: set Rs = nothing7. 4 Recordset对象对象7.4.2 Recordset 对象的方法对象的方法3使用Move、MoveFirst、MoveLast、MovePrevious、MoveNext方法移动记录指针时,需要注意Record
33、Set对象的光标类型。如“前滚光标”限制了记录指针只能向前移动。7.5.1 连接数据库连接数据库 1. 使用使用Connection对象连接到数据源对象连接到数据源(连接数据库)(连接数据库)7. 5 访问数据库实例访问数据库实例常用的通用数据源的常用的通用数据源的OLE DBOLE DB连接字符串连接字符串数据源OLE DB连接字符串Microsoft AccessProvider=Microsoft.Jet.OLEDB.4.0;Source=指向.mdb文件的物理路径Microsoft SQL ServerProvider=SQLOLEDB.1;Source=指向服务器上数据库的路径Ora
34、cleProvider=MSDAORA.1;Source=指向服务器上数据库的路径Microsoft Indexing ServiceProvider=MSIDXS.1;Source=指向文件的路径7.5.1 连接数据库连接数据库 2. 使用使用RecordSet对象读取记录集(打开对象读取记录集(打开表)表)7. 5 访问数据库实例访问数据库实例7. 5 访问数据库实例访问数据库实例7.5.2 显示记录显示记录 1. 基本格式基本格式% if rs.EOF and rs.BOF then response.write 暂时还没有记录else while not rs.eof response
35、.write rs(“字段名) response.write rs.movenext wend end if%7. 5 访问数据库实例访问数据库实例7.5.2 显示记录显示记录 2.显示更多字段显示更多字段%if rs.EOF and rs.BOF thenresponse.write 暂时还没有记录else While not rs.EOF response.write 型号: & rs(ProName) response.write 价格: & rs(Proprice) response.write 简介: & rs(ProShow) response.write rs.MoveNextW
36、endend if%7. 5 访问数据库实例访问数据库实例7.5.2 显示记录显示记录 3.显示部分记录显示部分记录 如前如前3 3条记录条记录 %if rs.EOF and rs.BOF thenresponse.write 暂时还没有记录else for i=0 to 2 response.write 型号: & rs(ProName) response.write 价格: & rs(Proprice) response.write 简介: & rs(ProShow) response.write rs.MoveNext nextend if%7. 5 访问数据库实例访问数据库实例7.5.
37、2 显示记录显示记录4. 用表格形式显示记录用表格形式显示记录 %if rs.EOF and rs.BOF thenresponse.write 暂时还没有记录else for i=0 to 2 response.write 型号: & rs(ProName) response.write 价格: & rs(Proprice) response.write 简介: & rs(ProShow) response.write rs.MoveNext nextend if% 型号: 价格: 7. 5 访问数据库实例访问数据库实例7.5.2 显示记录显示记录 4. 用表格形式显示记录用表格形式显示记录
38、p 改进表格改进表格将放在循环的外面,形成一列多行。也可将放在循环的外面,仅循环单元格,形成一行多列。 7. 5 访问数据库实例访问数据库实例7.5.2 显示记录显示记录 4. 用表格形式显示记录用表格形式显示记录 课堂练习:改进表格实现第一行是表头,下面是课堂练习:改进表格实现第一行是表头,下面是记录的形式。记录的形式。 课堂练习:改进表格实现第一行是表头,下面是记录的形式。课堂练习:改进表格实现第一行是表头,下面是记录的形式。型号型号:价格价格:简介简介: 7. 5 访问数据库实例访问数据库实例7.5.2 显示记录显示记录 5. 使用使用Fields集合显示记录集合显示记录 Fields.
39、count 表示记录集中字段的个数表示记录集中字段的个数Fields(i).name 表示当前记录第表示当前记录第i+1 个字段的名称个字段的名称Fields(i).value 表示当前记录第表示当前记录第i+1 个字段的值个字段的值%if rs.EOF and rs.BOF then response.write 暂时还没有记录else response.write 显示字段的名称作为表格的表头 for i=0 to rs.fields.count-1 response.write & rs.fields(i).name next response.write 显示字段值 do while
40、not rs.eof data= for i=0 to rs.fields.count-1 data=data & & rs.fields(i).value next response.write data & rs.MoveNext loop end if%7. 5 访问数据库实例访问数据库实例7.5.3 增加记录增加记录 1. 使用使用Recordset对象的对象的AddNew方法方法7. 5 访问数据库实例访问数据库实例7.5.3 增加记录增加记录 1. 使用使用Recordset对象的对象的AddNew方法方法 在实际编程时,还可以使用数组方式简化新记录的添加。在实际编程时,还可以使用数组方式简化新记录的添加。 如上如上例基础上修改,代码如下:例基础上修改,代码如下: 连接数据库连接数据库 打开数据表打开数据表% % 断开连接断开连接7. 5 访问数据库实例访问数据库实例7.5.3 增加记录增加记录2.使用使用SQL的的Insert命令命令 7. 5 访问数据库实例访问数据库实例7.5.4 删除记录删除记录 1.使用使用Recordset对象的对象的Delete方法方法 7.5.4 删除记录删除记录 2. 使用使用SQL的的Delete命令命令 7. 5 访问数据库实例访问数据库实例