第8、9、10、11利用ADO访问数据库_第1页
第8、9、10、11利用ADO访问数据库_第2页
第8、9、10、11利用ADO访问数据库_第3页
第8、9、10、11利用ADO访问数据库_第4页
第8、9、10、11利用ADO访问数据库_第5页
已阅读5页,还剩73页未读 继续免费阅读

下载本文档

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

文档简介

1、第7章利用ADO对象访问数据库心71数据库存取组件简介37.2 Connecrt i on链接对象>7.3 Recordset对象7.4图片的上传及图片的显示0 i 2表 ASP内置组件基本功能p组件q说明4数据库存取组件4(Database Access Component)卩用来存取数摇库,是所有内置组件中最强大的f 4文件存取组件A(File Access Cotnpon.ent)卩用来有取文件,提供文件的输入输出方法F(Ad Rotator Component) a轻松构建广告页面,维护,修改也很方便Q浏览器兼容组件卩(Browser Capabilities +Componen

2、t)/-根摇客户端浏览狀裂的不同,送出正确的Web页 面p(Content Linking Component) 2轻松建立像书本的萦引或目录样迪超鹹眺b 页面3计数器组件p(Page Counter) p轻松统计网页访问次数P1.利用数据库存取组件存取数据库数据库存取组件简介数据库存取组件(Database Access Component)是 使用ADO (ActiveX Data Objects)技术来存取符合 ODBC ( Open Databse Connectivity )标准的数据库 或具有表格状的数据形式的一种ASP内置组件,是 所有ASP内置组件中最重要的和使用最多的一个组

3、件。:它可以使开发者轻松存取数据库,并可以在客户端 实时更新显示。ADO内部对象 ADO是一种数据库技术,它提供的是一种数据访问 结口,这种应用程序接口和应用程序使用的语言无 关,因而使用它可以将传统的数据库后台管理模式 放到前台的web页面上来进行,使得数据库的存取 更加简单、方便。ADO提供了几个独立的子对象,利用这些子对象实现对数据库的访问,在这几个对象中,connecti on,comma nd,和recordset 对象是整个 ADO 的核心。主要功能分别如下: connection对象用来和数据库建立连接。建立连接后,可以 使用command对象与recordset对象来对数据库进

4、行存储、 更新、删除的操作。可不明确建立连接对象,而是利用 Command对彖或recordset对象连接教据库,这是建立的隐 含连接对象。 Command对象主要用来对数据库进行查询。 recordset对象是最主要的对象,当对数据库进行sql语句查 論吋会返回一个记录集,该乜录集包含济或查端的全部数据, 然后利用ASP语言将记录显示在页面上。而对于删除、添加 和更新记录时因不需要返回记录集,所以不必生成recordset 对象。三者结合使用取得最佳效果。预备知识: 1.在用ASP操作数据库时可设置数据源连接数据库, 也可不设置数据源而直接在程序代码中连接数据库。2.对于access数据库两

5、种方法都讲。创建没有ODBC数据源的连接程序如下:dim dbset db=server. createobject CW0DB.CONNECTION")db. open,?DRIVER= Microsoft Access Driver (*. nudb) ;DBQ=C:Inetpubwvroot?&address.Jiidb17注意事项:Dbq是数据库文件的物理路径Driver是数据库的类丿攸 注£(Driver和(*mdb)之间有且仅有 一个空格在实际开发中,由于考虑到程序移植后的路径问题,常常利用 server对象的mappath方法,将虚拟路径转变为实际的物

6、理路径。dim db set db= server- Great eOb ject (,v adodb. coimect ion )7利用S e rve r对象的c r e at ob j已ct方法创建一个数据库存取组件的c onne ct i如对象实例db db op en ,v db q=M & e e rv© r MapP at h (" addi:已 mm rndbM) &M :driver=microsoft access driver(* rndb)11这种连接方法有一个很大的好处就是程序移植到别的服务器上 后马上就可以使用。要求:上面这段代码要

7、像公式一样熟记。创建有ODBC数据源的连接1 .先创建好数据源。2. 然后在控制面板中设置ODBC数据源的连接。3. 最后回到代码界面写如下代码:dim dbset db= server Great eOb j ect (" adodb coniiect ion")?利用server对象的creat ob j已ct方法创建一卜数据库存取组件的connect iml对象实例db dbopen "dsnaddr"dim dbset db= server Great eOb ject (M adodb cornect ion")?利用s e rve

8、r对象的ere at ob j已ct方法创建一个数据库存取组件的c onne ct i ml对象实例db db open *' addr,vAddr是设置的数据源的名字。*特点:这种方法写起来简单,也不容易岀错,更重要的是不管数据库放在哪里,只要设置一下数据源,程序 不用改。麻烦的是如果要移植程序到另外的服务器 上,需要重新设置数据源。2.查询记录查询记录:就是将数据库中的数据读出来显示在页面上,这 是数据库程序中最常用的操作。一般会用到如下的select语 句:select字段列表from 表名where 条件执行该sql语句后就会返回一个记录集对象,包含符合条件的 若T条记录。返回

9、记录集对象后一般利用如下语句输出各条记录。Do while not记录集对象.eof 记录集对象.moveNextloop说明:1 .Eof属性用于判断当前记录指针是否在记录集的结尾,返回 true或false。eof位于最后一条记录之后。2. Bof属性用于判断当前记录指针是否在记录集的开头,返回 true或false。boi位手第一秦葩录之前。画图讲解这两个位置(当指针移到第一条记录后再向后退指 向bof,再退就出错;当指针移到最后一条记录后再向前走指 向eof,苒向前移劫就出*昔。)3. 有这两个属性就可用来判断返回的记录集对象是否为空,常 常用下面的判断语句:if not记录集对象.b

10、of and not记录集对象.eof thenend if4.看例子如何实现查询Bof记录1记录2记录指针当前记录记录NEof3 打开详细页面在设计数据库时,一个数据表可能包含很多个字段, 如果把这些字段都显示在页面上,不美观也没必要。 因此:通常的做法是:在主页面中只显示部分字段,另外 设置一个详细超链接,单击该链接就可以打开另一 个详细页面,在该页面中来显示所有字段。实现方法: 1 在主页面中添加如下超链接:<ahref=uxx.asp?id=<%=rs(,id,)%>,target=,Lblank,>详细v/a >将记录编号当参数传过去2 在详细页面中先使

11、用re q u e s t. q u e r y st r i n g C i d")获取传过来的id值。然后利用如下查询语句查询对应记录即可。Strsql=uselect * from users where id=”&g set rs=db.execute(strsql)/此处加不加双弓(号与 字段类型有关1 看完整的程序例子。 2如果不希望添加一个详细列,而是单击姓名即可 打开详细页面,那么只需将姓名列做超链接设置va href=uxx.asp?id=<%=rs(,tid,)%>,target=u_blank,>< %=rs(t,name,)%x

12、/a> 即可。即希望点哪个字段出来详细页面就对哪个字段做超链 接。4 按字段排序利用order by语句可以让返回的记录集对象按一个 或多个字段排序。单击标题栏就可让记录按相应顺序排序的方法:将 标题栏的对应字段名作为参数传回来,然后在 select语句中就可以利用order by按返回字段排序。 本质上是根据传回的字段名称实现动态排序而已。:具体实现方法:a将首页面的标题栏改成超链接,都链接回本页面, 并把对应字段名称当参数传回来。b.利用request.querystring方法获取排序字段名称。 (第一次打开时没有参数传入需给一个默认排序字 段。)看程序具体例子。if reques

13、t Qu已工蚩Stuing("込ontf i已丄d/冷thensortfield=rrstudentid descrrelsesortfield=reqiiest& rr descrrend if5 按单个或多个关键字进行模糊查找 与查找数据无本质区别,只是在select语句中使用where条 件即可。“Select *from users where name=tkk,n如果要进行模糊查找,只需用到like运算符和通配符即可。“Select *from users where name like '%kk%555看程序具体代码说明:第1个重要部分是定义了两个变量分别

14、用来表示查找 关键字和查找字段。第2个重要部分是form表单,希望保留 客户的选择。第3个重要部分是组织select语句。查栈关键字字段坯名I提交I姓名电话email张孙亮 罗宁3243244562734322zhangsl263 netluoning263 - net<弍dim.iEJLdif reqi-iestForm (rrkeyrjordrr) <>rrrr thenkeyword=reqi.iest Form ("kEiywDizd") field=reqiiest F(Ji:m(":E:LEdif)elsekeyDTord=rrrrf

15、 ield=rrn:ziiLL 已"end if%>value=rr<%=keYword%>rr<%if £ield=rrnaiierr then responseU:cit:£"s已丄已c匸已d"亀查询小结 1.需要深刻掌握select语句2.需要认真体会排序、查找的编程思想6 添加记录需用如下语句:insert into表名(字段1,字段2.)values(字段1的值,字段2的值)注意事项:1. 字段列表可选1个或多个字段,但是必须与后面的一一对应。2. 对于文本型和备注型字段,字段值两边要加引号,当发生 引号嵌套,

16、内层引号改为单引号。3自动编号字段不需出现在此语句中4. 日期字段两边要加#号5如果字段设置了默认值,且没有出现在insert语句中,则该 字段会自动赋以默认值;若没有赋以默认值,则需要手工写 代码设置默认值。6对于文本型或备注型字段,access默认是不能赋以空字符 串,则写语句时要加以注意。如:insert into users(name)values(“ ”)是错误的。当然如果修改数据库使它允许被赋以空字符串则 上句正确。添加记录示例步骤:1.一个普通表单文件,用来填写要插入记录的信息 2执行插入语句填写完整信息看程序代码:I.Response.redirect "index.

17、asp11指自动引导客户至另一个页面,作用同超链接,但超链接是 需要客户单击才能转至另一页面。2Sql语句:“Insert into users(name) values C李,y strsql=”insert intousers(name5tel5email3intro3submit_date) values(,M& name tel &n'J'n&email&mJ'n& intro &”,#“& now()&H#)H3改进:可将表单里填写的内容提交给本页面,此时 需要添加一个判断语句< ! -#i

18、nclude f ile=rroiibc0if request. Form (rrnaiii&rr) <>rrrr tiliendiiiL name .r telemailn:ime=匸Form (rrn aiderr)rel=request. Forin(rr匸W)eiiiail=rEi5iAest.- ForiiL(rremailrr)dim strsqlsti:sql=rrinseEt into users (te 1 email) : db- execute (st-rsql)response -Redirect (rriuirit丄已asprr)connectio

19、n. asprr>values (1 rrsnaiiiesrr' J rr&teli:rr 1 J"maa丄1)在客户端进行验证在客户提交前就提示客户填写必要信息,以免漏填 而回头重填的麻烦。:使用vbscript实现客户端验证。:步骤:首先把表单中的提交按钮修改为普通按钮, 然后在表单标记中增加一个onclick事件属性;接着 在主程序中书写该事件内容* 看程序代码 (add_yanzhen.asp)添加记录小结添加记录是数据库中最容易出错的地方。1 如果要求客户必须输入某些内容项目,最好对其进行客户端 验证。(只有通过客户端验证才能提交表单,只有提交表单 后

20、才会执行其中的sql语句)2如果添加记录出错,往往是insert语句有误,仔细检查。4 删除记录:用如下SQL语句:Delete from 表名Where条件删除记录示例* 1.在首页增加如下超链接。单击它,打开删除页面 并将相应记录编号传过去。vahref=udelete.asp?id=<%=rs(ttid,)%>,> 删除 v/a>2在删除页面首先获取传过来的id,然后执行其中 的删除语句3.看程序代码分析5 修改记录:修改记录需要用到u pdate语句。Update表名set字段1 =字段1的值,字段2=字段2的值where:修改记录时,通常都是给客户提供一个表单

21、,然后 将数据库中要修改的字段内容显示在该表单中。客 户提交后,禾U用update语句修改相应的字段。修改记录示例 1.在主页面添加如下修改超链接,可链接到修改页面。va href=uupdate_form.asp?id=<%=rs(uidn)%>>>S</a>55 2在修改表单页面(updatejorm.asp)首先获得传过来的id 号,根据此ID查询记录。血需要将前面传过来的id继续传 到下面的页面,利用action属性实现。3 获取前页传过来的id和表单中修改的内容执行更新语句 4理解update语句Dim strSqlstrSql=,'Upd

22、ate users Set 巳二'"& najne &If emailO"' IhenstrSql=strSql & ",巳ircdil二'"&. email &.ElsestrSql= strSql & ", email=Mul 1,vEnd IfIfthenstrSql=strSql &&. int ro &ElsestrSql= strSql &.,vj irrtro=Nul 1"End If,ted二i & tel

23、6.引止血1±_date:二护'检 novO &,v#Recordset 对象 Recordset对象又称记录集对象。当用Connection对象执行查询命令后,就会得到一个满足条件的所有记录,它们是一个集合,称为记录集对象。:利用前面的知识操作数据库基本上已够用,但是对 于分页显示只能通过Recordset对象完成。本节知识点 1 建立record set对象的方法,recordset对象的属性 和方法 2 利用recordset对象查询记录的基本方法 3利用recordset对象实现添加、删除和更新记录操 作 4 数据分页显示技术的实现1 建立recordset对

24、象的方法语法为:Set recordset对象=server_createObject(fitadodb.recordser)然后,就可以用open方法打开一个数据库,语法为: recordset 对象.openBofstrsql3db3cursorType3lockType5options记录1Sql语句或数据表名记录2当前记录包含数据库连接信息的字符串记录指针Recordset对象记录集屮的指针类型记录NEofReco rdset对象的锁定方式最后一项通常省略Open方法的参数较多,其含义详细介绍如下。3指针类型:此参数用来设定RecordSet对象在扌丁开数据库时所使用的记 录指针类型,

25、此参数有四种类型可选 AdOpenForwardOnly ( 0:缺省值):向前指针,只能向前移动 指针,且记录集是只读的。 adOpenKeyset :键盘指针,参数值为1。记录指针可以自由移 动,当某用户做了修改(除增加新数据),其他用户都可以立 即看到。 adOpenDynamic :动态指针,参数值为2。其它用户对数据表 所做任何修改或增删记录操作都会立即反映到RecordSet对象 中。记录指针可以自由移动。adOpenStat ic :静态指针,参数值为3。可自由移动指针, 所有更新数据都不会显示在其他客户端。3锁定方式:此参数是设置RecordSet对象的并发事件的控制方式,其取

26、值 和含义如下表: adLockReadOnly : 参数值为1 (默认值),是以只读方式打开,其它用户不 能修改任何数据。 adLockPerssimis tic:参数值为2,只能同时被一个客户修改,修改时锁定,修改完毕释放。 adLockOptimistic:参数值为3, 可以同时被多个客户修改。adLockBatchtimistic:参数值为4,数据可以修改,但不锁定其他客户。建立Recordset对象的具体方法 1 利用connection对象的execute方法一最常用dim dbj rs凭t db=server. Crest eObject C adodb. coimection&

27、quot;) db. open,Tdriver= Microsoft access driver set rs=db. execute ("select * from users") 2 利用connection对象的execute方法的另一种方 式一最常用<%dinL dbj rsset db=server. CreateObject C adodb comection")db. open"drivenmicrosoft access driver 他血ib):dbq="&server.MapPath("address

28、.ULdb") set rsserver. Great eObject ("adodb. recordset")rs. open"seiect * from users", db-这是将方法一修改为明确建立Recordset对象。 3 直接建立recordset对象一最简单adim rsset rs=3erver. Great eObject ("adodb. recordset,Y)rs.open'select * from u託亞丁血戲二bucrogoft access driver (t.nidb) ;dbq='

29、'server JapPath(这种方法由于没有明确建立ConnectionM象 和Command对象,就无法使用他们的特殊功能。:不管采用什么方法建立recordset对象,其实都是建 立一个记录集,好比一个电子表格,包含若干条记 录,每条记录包括若干列。如果记录集非空,则利 用do loop循环输出。:对于记录集来说,任何时候只有一条当前记录。:记录集有两个特殊位置(eof和bof),利用这两个位置 可判断返回的记录集对象是否为空记录指针当前记录建立Recordset对象的总结 一般只有在查询记录时才会需要建立RecordseW 象。而插入、删除和修改记录时则不需要返回记录集, 所

30、以一般就利用Connection对象或Command对象 的Execute方法就可以了。Recordset对象的属性1.这组属性主要是关于记录的,它们只能在打开记 录集后读取。a. Recordcount:用于返回记录集中的记录总数。与 select count(id).语句有类似功能。如输出记录总 数:v%=rs.recordcount%>b. bof:用于判断当前记录指针是否在记录集开头eof:用于判断当前记录指针是否在记录集结尾显示数据库记录时常用如下语句:<%Do while not rs.eof rs.movenextloop%> 2下面这组属性主要用来完成数据分页

31、显示功能。通常在打 开记录集后再设置。a. pageSize:用于设置数据分页显示时每一页的记录数如 rs.pagesize=5b. pageCount:用于设置数据分页显示时数据页的总数如 var=rs.pagecountc. absolutePage:用于设置当前指针位于哪一页 如 rs.absolutePage=整数d. absolutePosition:用于设置当前指针所在的记录彳亍的绝对值 如 rs.absolutePosition=整数注:利用这儿个属性时要求指针类型设置为1 (键盘指针)Recordset对象的方法 l.open:用于打开记录集 2.moveNext:用于将记录指

32、针移动到下一条记录 3.find:将记录指针定位到由条件指定的记录其他方法通过例子讲解2 应用利用此对象查询记录 1.建立 record set 对象 2.查询记录3.看例子3利用此对象增、删、改数据库主要用至Oaddnew> delete和update方法。 rs.addNew字段名,字段值rs.deleters.update如何添加记录,如何更新、删除记录看程序代码分析添加记录if reqi-iest. FornL(rrnamerr )<>rrrr thenset rs=server. CreateObject(rraxlDtib recardsetrr) st.rsql

33、=rrselect 古 from usersrrrs.open strsqldblSes- addiiewrs (rrn;2merr) =reqpi已吕t Form(rrnam已") i:s(rrtelrr)=request.Form(rrt.elrr) if request已tiien rs (rreailrr) =reqiiest. Form(rreBiailrr) end ifrs.updat.已 response.RjediiiEi:匕 rriuititled-l asprr end if修改记录dim idid=rei5uest QuerySt.ring (rridrr)d

34、im rsfsrrsqlset rs=server Cr e ate Ob j e c t. (rr ado lifci i:已已strsql=rrselect. * froiu usersrr<!#include file=,vunt itled-3. asp,v>rs. open strsqliitilrs.fimi rrid=rr & id.dim id%>id= re quest. FornL(,r idr,)dim strsqlj rsrp .l rpset rs= server. GreateObject (" adodb. recordset&

35、quot; )actlon= untitled-S.asp :strsqlselect +: from 芯我y且lue=rr<%=ES i rrnanierr i %>rr rs- °Pen 毗“”,dg i, 乂'1rsfind “id二"&idrs CvrL:ajne " )=request Forn C 门:迪叵') rs C' t el,v)=requemt Form(,vt el1') rs (,YEjaai 1/) = request. Form(,veitl日il") rs. updat

36、eresponse- Redirect " urit it led-1. asp"%>删除记录<! -一#include f i 1 e=rrmitit.led-3且sprr-><%din idid=reiuest. QuerYStringi; rridrr)dim strsqlrsset rs = server. CreateObj ect (rradoiiti. recordset) st.rsql=rrselect 古 from usersrrrs. open strsq丄rs.find rrid=rr6: idrs.deleter s. up

37、 ilar e4 分页显示数据:程序由三部分组成。第一部分决定当前显示第几页; 第二部分是分页显示的主要内容;第三部分输出总 数和当前页码如何结束本数据页两种情况:1 显示够pagesize属性指定的数目后 就结束本页2.最后一页不是一个完整页,但是当 到达整个记录集的结尾(rs.eof)时也应该结束。dim dbj rsset db= server. GreateObject (" adudb cijmiectio)db. open,vdriver= microsoft access driver (*. nLdb) : dbq=,v&server. MapPath(&qu

38、ot; address. ridb" )&,v set rs=server. Great eObject (" adodb. recordset,v)rs. pen,vusers,vJ dbj 1rs.pagesize=3page=request- QuerjSt ring ("page* )if page=,'"' thenpage=lelsepage=cint (page)end ifrs. absolutepage=pagefor i=l to rs.pagesizeif not rs.eof thenresponse Write (rs ("name") )fi.,Y<hr>"rs. jnoveneKtend ifnextfor i=l to rs. pagecowrtresponse- Write (" <a hr ef=ui-rt it led-1. asp ?p ag e=,v & ife>,v &</a>")7.4图片的上传及图片的显示7. 4.1将图片上传到服务器的数据库中保存1.保存图片的

温馨提示

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

评论

0/150

提交评论