《ASP存取数据库》PPT课件_第1页
《ASP存取数据库》PPT课件_第2页
《ASP存取数据库》PPT课件_第3页
《ASP存取数据库》PPT课件_第4页
《ASP存取数据库》PPT课件_第5页
已阅读5页,还剩120页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、ASP存取数据库,某网站的导航内容需要根据用户的需求进行删除、增加、修改。现在由你担任程序员,你将如何来实现网络导航部分的实现和维护?,思考:,方案一: daohan.html,维护功能由程序员修改html代码来实现。,方案一: Index.asp,维护工作由管理员在客户端界面即可简单方便的完成,不需要对源程序进行修改。,ASP存取数据库技术,数据库存取组件(Database Access Component)是使用ADO(ActiveX Data Object)技术来存取符合数据源标准的数据库或者具有表格状的数据形式的一种ASP内置组件。,ASP存取数据库,轻松的实现实现数据库数据的查询、添

2、加、删除、修改等功能,方便数据库的维护或网站的维护。,ASP存取数据库,1.Connection对象,又称连接对象,主要用来建立与数据库的连接。只有先与数据库建立连接关系,才能实现对数据库的操作。,2.Command对象,又称命令对象,是数据库执行命令的对象,可以执行数据库查询、修改、增添、删除等操作。,3.Recordset对象,又称记录集对象。当connection对象或Command对象执行命令后,就会得到一个由满足条件的记录所组成的虚拟记录集。,网络导航实例探讨,“网络导航” 数据库 wwwlink 中建立一个link数据表来存放导航信息。,如何把数据库中的导航信息显示在网页上,如何从

3、网络平台上删除、修改、添加网络导航信息?,?,网页访问数据库的基本思路,建立数据库连接对象(connection对象),并连接数据库 设置数据表操作的SQL命令,选择connection对象或command对象来执行 确认数据表操作结果是否需要显示,如果要则建立recordset对象来指向执行结果,并读取相应的记录,Connection对象的功能,连接数据库(最主要的功能) 存取数据表中数据 事务处理,Connection对象常用属性和方法,利用Connection对象连接数据库,要把数据表中的信息显示在web页面,首先要建立数据库连接对象,并打开相应的数据库(wwwlink.mdb)。,利用

4、Connection对象连接数据库,数据库连接对象的创建:,利用Connection对象连接数据库,数据库的连接:,数据库的连接有两种方法:非数据源的连接和数据源的连接,利用Connection对象连接数据库,(1)非数据源的连接方法之一,利用Connection对象连接数据库,打开数据库时需要两个参数, 一个是:dbq=数据库的物理路径 一个是:Driver=数据库驱动程序。 两个参数之间用“;”隔开。,Db.open Dbq= Driver=Microsoft Access Driver (*.mdb),利用Connection对象连接数据库,(1)db.Open后跟的是一个字符串; (2

5、)数据库的地址是物理地址,可以用Server.Mappath方法把相对地址转换为物理地址,也可以直接写,不过直接写数据库的物理路径,在程序移植时需要修改物理路径,或放在指定的位置。 (3)数据库类型:由于我们用的是Access数据库,所以注明“Driver=Microsoft Access Driver (*.mdb)” ,且注意在Driver和(*.mdb)之间的空格。 (4)数据库地址信息和类型信息之间用“;”隔开,注意:,利用Connection对象连接数据库,(2)非数据源的连接方法之二(基于OLE DB的连接方法 ),该连接方法中也有两个参数,一个是:Provider=数据提供者,另

6、一个是:Data source=数据库的物理路径。两个参数之间用“;”隔开。,利用Connection对象连接数据库,(3)利用数据源的连接方法(基于ODBC的连接方法 ),假设我们设置wwwlink.db的数据源名字为mylink,则建立连接的方法是: ,利用Connection对象连接数据库,通过上述的介绍,请比较两种数据库连接方法各有什么优势?,思考:,非数据源连接方法:书写比较复杂,但移植比较简单,不需要在服务器上重新设置数据源。,数据源连接方法:书写简单,但移植到其他服务器,则需要重新设置数据源。,利用Connection对象连接数据库,在用db.open方法连接数据库时的数据库连接

7、信息还可以用connection对象的connectionstring属性表示。,利用Connection对象关闭数据库连接,connection对象.Close,切断与指定数据库的连接。,利用Connection对象执行数据存取,set recordSet对象=connection对象.execute (SQL语句字符串) 或 connection对象.execute(SQL语句字符串),数据库记录查询,数据库记录的删除、修改、增添,连接上数据库后,就可以应用connection对象的execute方法对数据库中的数据执行操作。,利用Connection对象执行查询,通过connection

8、对象db的Execute方法执行查询SQL语句,得到一个虚拟的记录集,可建立RecordSet对象作为记录集的指针。,rs.moveNext, rs.moveProvious, rs.movefirst, rs.movelast, rs.move n。,利用Connection对象执行查询,假设此时记录集指针 rs 指向第一条记录,,该记录的每个字段值用 rs(“字段名”) 获取。,rs(“字段名”)就是标识对应记录的某个字段的值。如: rs(“link_id”)可以获取指定记录的编号 rs(“name”)可以获取指定记录的网站名称 rs(“URL”)可以获取指定记录的网站地址,利用Conne

9、ction对象执行查询,我们刚才读取了 rs 所指向的一条记录的数据,但是一般情况记录集中有多条记录,如何能把每条记录都读取出来呢?,在读完一条记录后,用 rs 的 moveNext 方法,使 rs 移到下一条记录,再按照刚才所说的方法来读取每项数据。直到我们的 rs 移到了记录集的结尾,也就是rs.eoftrue时。,思考:,利用Connection对象执行删除,利用Connection对象执行删除,注意:,(1)由于我们删除记录时不生成记录集,所以没有必要设置记录集指针rs。,(2)SQL语句中用到了一个传递参数。,(3)在SQL语句中,如果连接的参数是数值型,则不要在参数两边加单引号,如

10、果是字符则要加单引号,如果是日期型则加#。,sqlstr1=”select * from link where link_id=5” sqlstr1=”select * from link where name=搜狐” sqlstr1=”select * from link where link_id=” & linked sqlstr1=”select * from link where name=” & netName & ”,利用Connection对象执行添加,增添记录的SQL语句中,value内的参数是从哪里获取的?,在增加新数据记录时,先得填写表单,然后在增加记录页面获取这些信息,

11、作为SQL语句中insert里value的参数。,思考:,利用Connection对象执行添加,利用Connection对象执行数据存取,在查询、删除、修改等操作中,有时希望知道connection对象.execute 方法影响了多少条记录,怎么办?,connection对象.execute SQL语句字符串,number,返回此次操作影响的记录条数,?,数据库的操作权限,在上述的网络导航例子中,我们对数据库进行了查询、增添、删除、修改的操作。但是操作数据库就要涉及到一个权限问题,比如只读、只写、读写。,Connection对象的mode属性是设置数据库操作权限的属性。,数据库的操作权限,Mo

12、de属性设置应该在数据库打开之前设置,事务处理,引入事务处理的原因,在应用数据库存取组件处理数据时,为了避免数据库连接错误或者数据库执行命令出错而引起的一些问题,提出了“同生共死”的要求。,Connection对象的事务处理方法,connection对象的事务处理方法,connection对象.BeginTrans connection对象.CommitTrans connection对象.RollBackTrans。,源数据库,源数据库副本,Db.beginTrans,Db.CommitTrans,Connection对象的事务处理方法,4. connection对象的事务处理方法,conn

13、ection对象.BeginTrans connection对象.CommitTrans connection对象.RollBackTrans。,源数据库,源数据库副本,Db.beginTrans,Db.RollbackTrans,Connection对象的事务处理方法,实例学习,9-2.asp,ASP执行中的出错对象 err对象,Err 对象是一个全局范围的VBScript对象,不必在您的代码中创建它的实例,是VBScript程序在执行中发生错误时自动创建的对象。,Err 对象的number属性 :返回或设置数值指定错误.,ASP执行中的出错对象 err对象, On Error Resume

14、 Next Err.Raise 6 产生溢出错误。 MsgBox (Error # & CStr(Err.Number) & “: & Err.Description) Err.Clear 清除错误。 ,?,由于ASP是解析执行的,所以遇到问题时就会在发生错误的地方停下来,并呈现错误信息。On error resume next可以是asp程序忽略错误继续往下执行程序。,errors,Connection对象的erreor子对象,Error对象,Error对象,Error对象,Error对象,db.errors.count 表示db的错误数量,db.errors.item(i) 标识其中一个错

15、误 (0 = i db.errors.count 1),Connection对象的error子对象,errors和error对象: dberror.asp,ADO,ADO是一种允许用户与数据存储进行交互的组件,是一种数据库访问技术。它与我们的OLEDB和ODBC紧密相关。ADO调用先被送到OLEDB,然后再交由ODBC处理。ODBC根据所提供的参数(如数据库驱动、数据库名称)进行数据访问。,返 回,在index.asp中我们已经指定了删除的记录,所以在SQL语句中必须指明条件。而这个条件该怎么确定呢?根据数据表的设计,每条记录的link_id是唯一的,所以用link_id来确定是不会出现误删除

16、的。所以要在删除页面和Index.asp之间建立某种联系,也就是把Index.asp中要删除的记录的link_id值传到删除页面。这种数据的传送可以通过哪些方法实现呢?,链接的网址中赋予了传递参数是rs(“link_id”),返 回,传递参数的设计,Command对象,Command对象,Command对象又称命令对象,是数据库执行命令的对象,可以执行数据库查询、修改、增添、删除等操作。它介于Connection对象和Recordset对象之间,它通过已经建立的Connection对象来传递SQL指令,对数据库提出操作请求,把得到的结果返回给Recordset对象。,特 点:,Command对

17、象在实际应用中主要是用来进行参数查询,Command对象的参数查询可以提高查询速度。,Command对象,Command对象的创建 Command对象的属性和方法 利用Command对象进行的参数查询,学习要点:,Command对象的应用步骤,先创建Command对象 指定Command对象的Connection对象 设定Command对象的属性,执行Command对象的方法,Command对象的创建,(1)通过Connection对象建立Command对象,Command对象的创建,(1)通过Connection对象建立Command对象,第一步:创建Connection对象 第二步:创建C

18、ommand对象 第三步:通过Command对象的ActiveConnection属性把Command对象与Connection对象关联起来。,Command对象的创建,(2)不通过Connection对象建立Command对象,这种方法没有明确的建立Connection对象,而是隐含地建立一个Connection对象。,Command对象的创建,隐含建立Connection对象的情况下,我们还能使用Connection对象的属性和方法吗?,(2)不通过Connection对象建立Command对象,思考:,Command对象的属性和方法,Command对象的属性 ActiveConnecti

19、on,ActiveConnection属性用来指定与Command对象的关联的Connection对象。,语 法 :,Command对象.ActiveConnectionConnection对象,Command对象的属性 CommandText,CommandText属性用于指定数据库操作命令。,语 法 :,Command对象.CommandTextSQL语句字符串/表名/查询名或存储过程名,Command对象的属性 Commandtype,Commandtype属性用来指定数据库操作命令的类型,即是SQL语句、表名、查询名或存储过程名。,语 法 :,Command对象.CommandType

20、类型值,Command对象的属性,CommandTimeOut Command对象Execute方法的最长执行时间。,Prepared 该属性指定数据查询信息是否先编译、存储。,Command对象的方法 Execute,Execute方法是根据数据查询信息执行数据库操作,和Connection对象的Execute方法很相似的,几乎能完成所有的功能。,语 法 :,Set RecordSet对象Command对象. Execute,或者,Command对象. Execute,Command对象与Connection对象存取数据库的比较,Connection对象存取数据库: connectionin

21、dex.asp Command对象存取数据库: commandindex.asp,Command对象的方法 CreateParameter,CreateParameter方法用来创建一个参数对象,即Parameter对象。,Command对象的parameters集合和parameter对象,parameter对象,parameter对象,parameter对象,parameter对象,parameter对象的创建,Parameter对象是Command对象的子对象,它的创建方法是: Set Parameter对象 = Command对象. CreateParameter (name,type

22、,direction,size,value),parameter对象的创建,parameter对象的创建,参数对象创建实例:commandparameter_applyCreate_param.asp,parameter对象的创建,注意:,(1)要先创建Command对象,然后应用Command对象的CreateParameter方法创建Parameter对象。,(2)有些参数可以省略,有些不能省略。省略时必须用”,”隔开。如 Set prm=Comm. CreateParameter(“user1”,200,”mine”),(3)参数name必须为字符串,参数value的表达式要与其类型匹配

23、。,Parameters集合,parameter对象,parameter对象,parameter对象,parameter对象,Parameters集合的属性 count,count返回Parameters集合中Parameter对象个数。,语法:Command对象. Parameters.count,Parameters集合的方法 append,Append方法把Parameter对象加入到Parameters集合中。,语法:Command对象.Parameters.Append Parameter对象,Parameters集合的方法 delete,Delete方法删除Parameters集合

24、中的一个Parameter对象。,语法:Command对象.Parameters. Delete(i) i 为索引,取值范围:(0,count-1),Parameters集合的方法 item,Item方法获取Parameters集合中指定的Parameter对象 。,语法:Command对象.Parameters.item(i) i 为索引,取值范围:(0,count-1),Parameters集合的方法 refresh,Refresh方法刷新Parameters中所有的Parameter对象。,语法:Command对象.Parameters.refresh,Parameters集合,参数集合

25、实例:commandparameter_applyparameters.asp,参数查询,但很多情况下,我们需要查询的信息的条件是变化的,这些条件用参数表示则为参数查询法,参数查询法可简化SQL语句并提高查询速度。,参数查询实例: commandparameter_applylink,参数查询,通过上述例子分析:,(1)参数化的查询在性能上有一定的优化,因为带参数的SQL语句在执行中只需要被执行引擎分析一次即可。Command的Parameters能够为参数化查询设置参数值。,(2)不同的数据提供程序的Command对参数传递的使用不太一样,其中SqlClient和OracleClient只支

26、持SQL语句中命名参数而不支持问号占位符;而OleDb和Odbc数据提供程序只支持问号占位符,不支持命名参数。,参数查询,通过上述例子分析:,(3)关于参数对象direction属性的设置。如果是“传入”则表示该参数为调用它的程序提供值,类似于函数中的参数;如果为输出则表示调用它的程序要在结束时返回一个值给该参数,类似于函数名。,参数查询,思考:,如果SQL语句中有多个参数该怎么实现?如:查询信息的条件是一个组合条件,这两个条件的值都为参数。,多个参数的查询就要设置多个参数对象,并且在顺序上要和SQL语句中的参数占位符对应一致。,RecordSet对象,又称记录集对象。当connection对

27、象或Command对象执行命令后,就会得到一个由满足条件的记录所组成的虚拟记录集。,RecordSet对象,学习内容:,1. Recordset对象的属性和方法,2. Recordset对象分页显示的功能,RecordSet对象的概述,当我们对数据库进行操作时,特别是查询符合条件的数据记录时,往往要把查询到的记录显示出来。这时就需要设置一个Recordset对象来标记这个记录集。,数据库的增添、删除、修改,数据的查询和分页显示,Recordset对象的创建,之前我们是如何创建一个Recordset对象的?,知识回顾:,Recordset对象的创建,方 法 一 :,Recordset对象的创建,

28、方 法 二 :,Recordset对象的创建,上述这两种方法是利用Connection对象和Command对象的Execute方法,通过赋值形式建立Recordset对象。,建立Recordset对象标准的语法是:,Dim rs set rsServer.CreateObject(“ADODB.Recordset”),Recordset对象的创建,这两种方法的区别在于:,前者:当recordset对象的实例赋值给该变量时,系统此时先设置该变量为recordset对象,然后把实例赋值给该变量。,后者:直接先设置该变量为recordset对象。,Recordset对象,Recordset对象实质上

29、是指向一个记录集的指针,Recordset对象fields集合,一个记录集是由若干条记录组成的,记录又是由字段组成的,每个字段就是一个field对象,所有的field对象组成一个fields集合。,Field对象是recordset对象的子对象,所以通过recordset对象的移动和recordset对象子对象field对象的引用方法可以读取每条记录每个字段的值。,Recordset对象fields集合,1. recordset对象的 fields集合,Count属性:返回记录集中field对象(字段)的个数。,语法:recordset对象.fields.count,Recordset对象fi

30、elds集合,2.recordset对象的fields集合方法,Item:用于引用fields集合中某一个filed对象。,语法: recordset对象.fields.item(字段名或字段索引值),Recordset对象fields集合,3. field对象的属性,recordset对象的每个field对象与数据库中的数据表的字段相同,包括下列属性:,value属性:字段值 语法:field对象.value,name属性:字段名称 语法:field对象.name,Recordset对象fields集合,字段引用方法: rs.fields.item(1) 等效 rs.fields.item(

31、“name”) 等效rs.fields(1) 等效rs.fields(“name”) 等效 rs(1) 等效rs(“name”),分析范例:rs_field.asp,字段名称表示方法: rs(1).name,字段值表示方法: rs(1).value 等效于rs(1),Recordset对象的Source属性,Source该属性用于设置数据库操作信息。,知识回顾:,什么是数据库操作信息?,Command对象名、表名、SQL语句等,语法:Recordset对象.Source= 数据库操作信息,Recordset对象的Source属性,Recordset对象的Source属性,Recordset对象

32、的ActiveConnection属性,知识回顾:,前面我们学习过的哪个对象也有这个属性?实现什么功能?,Command对象也有该属性,用于设置数据库连接信息。,语法:Recordset对象.ActiveConnection数据库连接信息,Recordset对象的ActiveConnection属性,Recordset对象的ActiveConnection属性,Recordset对象的ActiveConnection属性,比较:,方法2中需要设置rs.activeconnection的值吗?,由于cmd已经指明了ActiveConnection,而rs的source为cmd,所以已经间接指明了

33、,不需再设置。,Recordset对象的CursorType属性,CursorType属性用于设置记录集指针游标类型。,语法:Recordset对象.CursorType=取值,Recordset对象的LockType属性,LockType属性用于设置记录集的锁定类型。,语法:Recordset对象.LockType取值,Recordset对象的属性小结,Recordset对象的Source,activeconnection,cursortype,locktype这四个属性的设置在Recordset对象打开数据库,操作数据库中非常重要,其值的设置直接影响到操作的运行方式。,Recordset对

34、象的Open方法,open方法,语法: rs.open source, activeconnection,cursortype, locktype,options,Recordset对象的Open方法,Recordset对象的Open方法,Recordset对象的Open方法,注意:,(1)source, activeconnection, cursortype, locktype, options这些参数可以先设置,open中就可以省略。但是如果前面的参数省略,后面的参数不省略时,要用逗号隔开。如: rs.open select From users where name=李玫 ,1,2,(

35、2)注意cursortype, locktype的取值。,Recordset对象与分页相关的属性,Recordcount该属性用于返回记录集的记录总数。,语法:Recordset对象.recordcount,例子:rs_recordcount.asp,Recordset对象与分页相关的属性,Cursortype必须设置为1或3,Recordset对象与分页相关的属性,记录集的两个特殊位置:,Recordset对象与分页相关的属性,Bof,该属性用于判断当前的记录集指针是否在记录集的开头,返回true或者false。,语法:Recordset对象.Bof,Eof,该属性用于判断当前的记录集指针是

36、否在记录集的结尾,返回true或者false。,语法:Recordset对象.Eof,Recordset对象与分页相关的属性,对于非空记录集,其指针可以在bof,所有记录,eof之间移动。但不能移到bof和eof之外。对于空记录集,其bof和eof在同一位置,指针不能移动。,注意:,Recordset对象与分页相关的属性,如何判断一个记录集是空记录集?,思考:,if rs.eof=true and rs.bof=true then if rs.recordcount=0 then ,举例:rs_eofbof.asp,Recordset对象与分页相关的属性,Recordset对象与分页相关的属性

37、,pageSize:该属性设置数据分页显示时每页的记录数。 语法为:Recordset对象.pagesize=整数 。,最后一页的记录数小于等于pagesize,Recordset对象与分页相关的属性,pageCount:该属性设置数据分页显示时数据页的总数。 语法为:Recordset对象.pagecount,Recordset对象与分页相关的属性,思考:,当设置了RS的pagesize属性后,如何求得pagecount? 当设置了RS的pagecount属性后,如何求得pagesize?,Recordset对象与分页相关的属性,AbsolutePage:该属性设置当前指针位于哪一页。 语法

38、:Recordset对象.absolutepage整数,定义了absolutepage的值后,指针立刻指向该页的第一条记录,Recordset对象与分页相关的方法,记录集指针的移动方法:,Movenext:记录指针向前移动一条,即向下移动一条。 语法:Recordset对象.movenext,Movelast: 记录指针移到最后一条记录。 语法:Recordset对象.movelast,Moveprevious:记录指针向后移动一条,即向上移动一条。 语法:Recordset对象.moveprevious,Recordset对象与分页相关的方法,记录集指针的移动方法:,Movefirst: 记

39、录指针移到第一条记录。 语法:Recordset对象.movefirst,Move:记录指针移动到指定的记录。 语法:Recordset对象.move number,start,参数start:设置指针移动的开始位置,如省略默认为当前位置; 参数number:设置指针从start位置前移或后移number条记录。当number为正数表示向下移动number条记录,当number为负,表示向上移动number条记录。,Recordset对象与分页相关的方法,移动指针前需要注意的问题有:,(1)要随时判断rs.eof与rs.bof是否true;,(2)要正确设置cursortype的值。,举例:rs_move.asp,Recordset对象的分页显示,利用Recordset对象的分页显示属性实现分页显示:,实例: rs_pages1.asp和 rs_pages2.asp。 合并后为:rs_pages.asp,Recordset对象操作数据库功能,Recordset对象的添加、删除、修改方法,(1)AddNew:向数据库添加记录的方法, 语法为:Recordset对象.AddNew 字段名数组,字段值数组,(2)Delete:删除当前记录, 语法:Recordset对象.Delete,Reco

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论