资源描述
ASP程序设计,网络程序设计-ASP和网络程序设计基础配套课件,第9讲 深入进行数据库编程,讲解提纲,9.1 ADO的内部对象 9.2 Connection对象 9.3 Command对象 9.4 Recordset对象 9.5 存取SQL Server数据库 9.6 对多个表进行组合查询 9.7 开发实例-在线通讯录 9.8 本章小结,9.1 ADO的内部对象,Connection对象连接数据库 Command对象执行命令 Recordset对象记录集对象 Error、Parameter、Field分别是它们的子对象,9.2 Connection对象,Connection对象又称数据库连接对象,用来建立和数据库的连接。 几个学习重点: 建立数据库连接的各种方法。 Connection对象的Execute方法。 事务处理功能,9.2.1建立Connection对象,建立Connection对象的方法一般如下: Set Connection 对象实例=Server.CreateObject(“ADODB.Connection”) Connection对象实例.Open 数据库连接字符串 在上面的数据库连接字符串中,会用到若干参数,如 DSN ODBC数据源名称 Driver 数据库的驱动程序类型 Dbq 数据库的物理路径 Provider 数据提供者 ,连接数据库的具体方法,(1)创建没有ODBC数据源的连接 Dim db Set db=Server.CreateObject(ADODB.Connection) Db.Open Dbq=C:InetpubwwwrootASPTempchapter9address.mdb;Driver= Microsoft Access Driver (*.mdb) 注意事项: Dbq是数据库文件的物理路径 Driver是数据库的类型,注意Driver和(*.mdb)之间有且仅有一个空格,连接数据库的具体方法,(1b)创建没有ODBC数据源的连接 Dim db Set db=Server.CreateObject(ADODB.Connection) Db.Open Dbq= Driver=Microsoft Access Driver (*.mdb) 注意事项: 本例只是利用Server.MapPath方法将相对路径转换为了物理路径。 不过要注意相对路径的写法,这里因为数据库文件和ASP文件在同一个文件夹,所以直接写文件名称了。,连接数据库的具体方法,(2)创建有ODBC数据源的连接 Dim db Set db=Server.CreateObject(ADODB.Connection) Db.Open Dsn=addr 注意事项: 参数Dsn表示数据源,addr是为数据库文件address.mdb建立的数据源名称。 这里也可以省略Dsn=,直接简写为Db.Open addr,连接数据库的具体方法,(3)创建基于OLE DB的连接 Dim db Set db=Server.CreateObject(ADODB.Connection) Db.Open Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:InetpubwwwrootASPTempchapter9address.mdb 注意事项: 参数Provider表示数据库的驱动程序,这里为Access。 参数Data Source表示数据库的物理路径,当然这里也可以使用Server.MapPath方法将相对路径转换为物理路径。,9.2.2 Connection对象的属性,Connection对象的重要属性,ConnectionString用来指定数据库连接字符串;Provider用来指定数据库管理程序名称。和9.2.1中Open方法用到的实际一样。 Mode用来指定对数据库的权限,默认为可读可写。,9.2.3 Connection对象的方法,Connection对象的重要方法,Open方法用来打开数据库连接;Close方法用来关闭数据库连接。 Execute方法用来执行各种查询命令,其实可以完成查询、添加、删除和修改全部操作。 BeginTrans、CommitTrans和RollbackTrans用来进行事务处理,9.2.4 利用Connection对象存取数据库,本节内容已经在第8章全部讲过,本节只是一个复习。,9-1.asp,9.2.5 事务处理,为什么要进行事务处理? 银行转账示例 同生共死,同进共退,事务处理示例,9-2.asp,9.2.6 Error对象和Errors集合,Error对象又称为错误对象,是Connection对象的子对象。数据库程序运行时,一个错误就是一个Error对象,所有的Error对象就组成了Errors集合,又称错误集合。 Error对象和Errors集合的关系 汽车和车队的关系 士兵和军队的关系,Errors集合的属性和方法,属性 Count 返回集合中错误的个数。如: Connection对象.Errors.Count 方法 Item 用来返回一个错误对象,如: Set Error对象= Connection对象.Errors.Item(错误索引值) Clear 清除集合中的所有错误,如: Connection对象.Errors.Clear,Error对象属性,Number 错误编号,如3251、3246等 Description 错误描述 Source 错误原因 HelpContext 错误的帮助提示文字 HelpFile 错误的帮助提示文件 NativeError 服务器端产生的原始错误,Error对象示例,9-3.asp,9.3 Command对象,Command对象又称命令对象,是对数据库执行命令的对象,它可以执行对数据库查询、添加、删除、修改等记录操作。 Command对象是介于Connection对象和Recordset对象之间的一个对象,它主要通过传递SQL指令,对数据库提出操作请求,把得到的结果返给Recordset对象。 Command对象依赖Connection对象,因为Command对象必须经过一个已经建立的Connection对象才能发出SQL指令。 实际开发时常常省略了Command对象,但是其实也隐含建立了该对象。,建立Command对象的方法(1),一般是建立Connection对象,然后再建立Command对象。如: ,建立 Command对象(2),不建立Connection对象,直接建立Command对象。 这种建立方法其实也要隐含建立Connection对象,但是,因为没有明确建立Connection对象,就不能使用Connection对象的Execute等方法了。,9.3.2 Command对象的属性,Command对象的重要属性,CommandType 指定查询信息类型,1表示SQL语句;2表示数据表名;4表示查询名或存储过程名称。 CommandText 指定数据库查询命令,可以是SQL语句、数据表名或查询名称。 ActiveConnection 指定Connection对象实例名称。,9.3.3 Command对象的方法,Execute 执行数据库查询命令,非常类似于Connection对象的Execute方法。 CreateParameter用来创建一个Parameter子对象,9.3.4 利用Command对象存取数据库,利用Command对象也可以查询、添加、更新、删除记录,请注意和利用Connection对象比较:,9-4.asp,9.3.5 非参数查询,首先在数据库中建立查询,如 Select * From users Where name=“李玫” 在ASP中建立Command对象的时候,指定查询命令类型为查询,并指定查询命令字符串为查询名称。如: cmd.CommandType=4 CommandText= list,非参数查询示例,9-5.asp,9.3.6 参数查询,在建立查询时,可以使用参数,如下面input_name就是一个参数: Select * From users Where name=input_name 执行时和非参数查询类似,但是要注意需要传入参数。,参数查询示例,9-6.asp,9.3.7 Parameter对象和Parameter集合,一个Parameter对象就是一个参数,若干个参数对象组成一个Parameters集合。 对象和集合的关系同Error对象和Errors集合。,Parameters集合的属性和方法,属性 Count 返回参数集合中的参数对象个数,如: cmd.Parameters.Count 方法 Append 添加一个参数对象 Delete 删除一个参数对象 Item 返回一个参数对象 Refresh 刷新Parameters集合中的参数对象。,建立Parameter对象,语法如下: Set Parameter对象实例=Command对象.CreateParameter(name,type,direction,size, value) 说明 Name 参数名称 Type 参数类型,200表示变长字符串 Direction 参数方向, 1表示传入,2表示传出 Size 参数大小,一般可以省略 Value 参数的值 具体示例参看前面讲的9-6.asp。,Parameter对象的属性和方法,属性 Name、Type、Direction、Size、Value和Attributes和CreateParameter方法的几个参数类似。 方法 AppendChunk 该方法用于添加数据到Parameter对象的末尾。,9.4 Recordset对象,Recordset对象又称记录集对象。当用Command对象或Connection对象执行查询命令后,就会得到一个记录集对象,该记录集包含满足条件的所有记录。 本节学习重点 建立Recordset对象的方法 利用Recordset对象实现添加、删除或更新记录操作; 数据分页显示的技术。,9.4.1 建立Recordset对象,建立Recordset对象的语法: Set Recordset对象实例=Server.CreateObject(“ADODB.Recordset”) Recordset对象.Open Source,ActiveConnection,CursorType,LockType,Options 说明 Soruce Command对象名或SQL语句或数据表名 ActiveConnection Connection对象名或数据库连接字符串 CursorType Recordset对象记录集中的指针类型, LockType Recordset对象的使用类型 Options Source类型,建立Recordset对象的具体方法(1),利用Connection对象的Execute方法建立 Dim db,rs Set db=Server.CreateObject(ADODB.Connection) db.Open Dsn=addr Set rs=db.Execute(Select * From users) 说明: 这种方法是最常用的方法。 它没有明确建立Command对象,但是会建立一个隐含的Command对象。,建立Recordset对象的具体方法(2),利用Command对象的Execute方法建立 Dim db,cmd,rs Set db=Server.CreateObject(ADODB.Connection) db.Open Dsn=addr Set cmd= Server.CreateObject(ADODB.Command) cmd.ActiveConnection=db cmd.CommandText=Select * From users Set rs=cmd.Execute 说明: 该方法明确建立了Connection对象和Command对象 。,建立Recordset对象的具体方法(3),利用Connetion对象的Execute方法建立的另一种形式 Dim db,rs Set db=Server.CreateObject(ADODB.Connection) db.Open Dsn=addr Set rs=Server.CreateObject(ADODB.Recordset) rs.Open Select * From users,db 说明: 这是将方法一修改为明确建立Recordset对象。,建立Recordset对象的具体方法(4),利用Command对象的Execute方法建立的另一种形式 Dim db,cmd,rs Set db=Server.CreateObject(ADODB.Connection) db.Open Dsn=addr“ Set cmd= Server.CreateObject(ADODB.Command) cmd.ActiveConnection=db cmd.CommandText=Select * From users Set rs=Server.CreateObject(ADODB.Recordset) rs.Open cmd 说明: 这种方法明确建立三个对象,功能最强大,也最科学。,建立Recordset对象的具体方法(5),直接建立Recordset对象 Dim rs Set rs=Server.CreateObject(ADODB.Recordset) rs.Open Select * From users, Dsn=addr 说明: 这种方法由于没有明确建立Connection对象和Command对象,就无法使用他们的特殊功能。,建立Recordset对象的总结,一般只有在查询记录时才会需要建立Recordset对象。 而插入、删除和修改记录时则不需要返回记录集,所以一般就利用Connection对象或Command对象的Execute方法就可以了。,关于记录集,记录集,好比内存中的虚拟数据表,保存了满足查找条件的所有记录。,9.4.2 Recordset对象的属性,Recordset对象的重要属性,第1组、打开记录集时的一些设置 Source、ActiveConnection、Cursortype、LockType、CursorLocation、Filter。 这一组和建立Recordset对象时的参数类似。 第2组、打开记录集后的一些操作 RecordCount、Bof、Eof 第3组、关于数据分页的一些属性 PageSize、PageCount、AbsolutePage,9.7.3 Recordset对象的方法,9.7.3 Recordset对象的方法,第1组、主要是关于Recordset对象本身。 Open、Close、Requery 第2组、用来移动记录指针。 Movefirst、MovePrevious、MoveNext、MoveLast、Move 第3组、用来添加、删除或修改记录。 AddNew、Delete、Update、CancelUpdate、GetRows,9.4.4 利用Recordset对象查询记录,其实在第8章已经多次使用,只是以前并没有明确建立Recordset对象而已。,9-7.asp,9.4.5分页显示数据,分页显示示意图 分页显示数据的思想,首先显示第1页数据,并且在下方提供页码链接,当客户选择页码时,仍然传递到本文件,并显示新的一页,分页显示数据具体示例,首先来看建立Recordset对象的语句 说明: 必须明确建立Recordset对象,并使用键盘指针1或静态指针3,9-8.asp,分页显示数据具体示例,如何判断当前显示第几页 说明: 因为用Request.QueryString方法返回的数据类型是字符串,这里必须使用CInt函数将返回的字符串转换为数字。,9-8.asp,分页显示数据具体示例,分页显示数据 说明: 要特别注意如何判断一页的结尾,这里采用了两个条件,分别用来判断普通页和最后一页的结尾情况。,9-8.asp,分页显示数据具体示例,显示数据页码 说明: 当单击这些超链接时,就会再链接到本页,并将要显示的数据页码当作参数传回来。,9-8.asp,9.4.6 利用Recordset对象更新数据库,使用SQL语句更新数据库虽然简单,但是在写SQL语句时可能经常出错,而利用Recordset对象来更新数据库,则不需再写复杂的SQL语句。 当然,用这种方法必须明确建立Recordset对象,并且要注意Open方法的参数,要可以读写才行。,添加记录,示例 说明: AddNew表示添加一条新记录. 最后必须用Update方法,才可以彻底添加进去。,修改记录,示例 说明: 直接给要修改的字段赋值,然后使用Update方法即可更新。,删除记录,示例 说明: 删除记录很简单,首先执行Delete方法,然后执行Update即可。 但是删除记录只是对当前记录而言,可以使用移动记录指针的方法将指针移动到需要删除的记录,然后删除即可。,使用Recordset对象更新数据库小结,教材中9-10.asp是一个将各种方法综合到一起的示例,大家可以拆开练习。 另外9-9.asp是另外一种借用数组的方法,请自行研究。 一般情况下,本课程使用SQL语句来执行更新数据库的任务,但特殊情况下使用本方法可能更方便。,9.4.7 Fields集合和Field对象,一个记录集就好比一个电子表格,该表格内总是包含有许多列(字段),每一个字段就是一个Field对象,而所有Field对象组合起来就是一个Fields集合。,输出字段值的几种方法,Response.Write rs(name) Response.Write rs.Fields(name) Response.Write rs.Fields(name).Value Response.Write rs.Fields.Item(name).Value Response.Write rs(1) Response.Write rs.Fields(1) Response.Write rs.Fields(1).Value Response.Write rs.Fields.Item(1).Value,Fields 集合的属性和方法,属性 Count 返回记录集中字段个数 方法 Item 返回一个字段对象,语法如下: Set Field对象=Recordset对象.Fields.Item(字段名或字段索引值) 也可以简写为 Set Field对象=Recordset对象 (字段名或字段索引值),Field对象的属性,Field对象属性示例,9-11.asp,9.5 存取SQL Server数据库,存取SQL Server数据库(以下简称SQL数据库)其实和存取Access数据库是一样的,只是在连接数据库时略有区别,其他部分基本不用修改。,9.5.1 连接SQL Server数据库,(1)创建没有ODBC数据源的连接 Dim db Set db=Server.CreateObject( ADODB.Connection) db.Open Database=sqltest;Uid=jjshang;Pwd=12345;Driver=SQL Server; Server= localhost 说明: Database表示数据库的名称 Uid为登录用户名,Pwd为密码 Driver 表示是SQL Server数据库 Server表示数据库所在的服务器位置,Localhost表示本机,如果是在其它服务器上,请替换为IP地址。,9.5.1 连接SQL Server数据库,(2)创建有ODBC数据源的连接 Dim db Set db=Server.CreateObject( ADODB.Connection) db.Open Dsn=test;Uid=jjshang;Pwd=12345 说明: Dsn表示数据源名称,其它同前 注意也可以省略参数名称,该为: db.Open test, jjshang, 12345,9.5.2 存取SQL数据库,连上SQL数据库后,所有操作同Access数据库,程序基本不用改动。 需要特别说明的是,在SQL语句中,日期字段值两边的#号要改为单引号。,9.5.3 SQL Server数据库和Access数据库的互相转化,Access数据库和SQL数据库是可以相互转化的,可以将Access数据库导入SQL,或者将SQL数据库导出为Access数据库。 实际开发时,可以先用Access数据库,这样方便些。等基本上开发好后,再导入到SQL数据库中。而要修改的是就是个别字段的类型和连接数据库的语句。 SQL数据库还是要稳定些, 大型网站应该采用SQL数据库。,9.6 对多个表进行组合查询,9-12.asp,9.7 开发实例在线通讯录,该程序整合了前面所学的数据库知识,请大家结合前面所学知识自己研究。 其中重点 如何查找记录?Search.asp 如何插入不完整的信息?Add.asp和Update.asp 分页显示数据 list.asp,9.8 本章小结,希望大家重点掌握的是3个对象的概念和彼此的关系、使用事务处理,分页显示数据、从多个表中组合查询。,
展开阅读全文