收藏 分销(赏)

asp访问sqlserver数据库PPT.ppt

上传人:天**** 文档编号:5888847 上传时间:2024-11-22 格式:PPT 页数:52 大小:1.06MB
下载 相关 举报
asp访问sqlserver数据库PPT.ppt_第1页
第1页 / 共52页
asp访问sqlserver数据库PPT.ppt_第2页
第2页 / 共52页
asp访问sqlserver数据库PPT.ppt_第3页
第3页 / 共52页
asp访问sqlserver数据库PPT.ppt_第4页
第4页 / 共52页
asp访问sqlserver数据库PPT.ppt_第5页
第5页 / 共52页
点击查看更多>>
资源描述

1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第十章,Asp,访问,SQL Server,数据库,1,在,ASP,中,用来存取数据库的对象统称为,ADO,(,ActiveX Data Object,),主要含有,Connection,、,Recordset,和,Command,三种对象。,Connection,对象:负责连接、打开数据库,Recordset,对象:存取数据库的内容,Command,对象:对数据库下达行动查询指令,2,10-1,存取数据库的准备工作,要让,ADO,对象能够存取数据库,最重要的东西就是,ODBC,驱动程序。,ODBC,:,O

2、pen DataBase Connectivity,对任何一种数据库来说,必须具备其对应的,ODBC,驱动程序,,ADO,对象才能够进行存取。,3,应用程序,应用程序,应用程序,ADO,对象,Dbase,驱动程序,Access,驱动程序,SQL Server,驱动程序,Dbase,数据库,Access,数据库,SQL Server,数据库,4,1.ODBC,数据源管理器,控制面板管理工具,ODBC,数据源驱动程序,5,2.Connection,对象的建立与数据库的连接,建立,Connection,对象,set conn=server.createobject(adodb.connection)

3、,conn.Open driver=SQL Server;server=(,local,);uid=,sa,;pwd=;database=,sample,6,3.,访问数据库,建立,Recordset,对象,set rs=server.createobject(adodb.recordset),打开数据表,参数二为,Connection,对象,rs.open,成绩单,conn,cursor,locktype,cursor,为游标参数,实际应用中的值为,1,、,2,、,3,7,cursortype,0,:,adOpenForwardOnly,,缺省值,启动一个只能向前移动的游标(,Forward

4、 Only,)。,1,:,adOpenKeyset,,启动一个,Keyset,类型的游标。用户对记录做的修改将反映到记录集中,但用户增加或删除记录不会反映到记录集中。支持分页,2,:,adOpenDynamic,,启动一个,Dynamic,类型的游标。在打开数据表时,只是打开一部分记录,随着程序的执行,再打开后面的记录;,3,:,adOpenStatic,,启动一个,Static,类型的游标。具有定位功能的,一次打开全部记录,所占的内存较多,浪费系统资源,打开数据表时间也相对较长,8,locktype,1,:,adLockReadOnly,,缺省值,,Recordset,对象以只读方式启动,无

5、法运行,AddNew,、,Update,及,Delete,等方法,2,:,adLockPrssimistic,,当数据源正在更新时,系统会暂时锁住其他用户的动作,以保持数据一致性。,3,:,adLockOptimistic,,当数据源正在更新时,系统并不会锁住其他用户的动作,其他用户可以对数据进行增、删、改的操作。,9,5.,数据库连接的关闭,在对数据库所有的操作完毕后,应当及时关闭,connection,对象,释放资源,Conn.close,Set conn=nothing,Set rs=nothing,10,10-2,使用,Recordset,对象读取数据库,读取数据表表头,读取数据内容,

6、改变当前数据记录的方法,利用字段名称读取数据,11,例子:,first00.asp,改进:,12,读取数据表表头,第,N,个字段的表头为,rs(N).Name,(,N,从,0,开始算起),&rs(i).NameNext%,例:,first01.asp,13,在不知道表的字段个数情况下,如何正确的列出所有字段的表头呢?,rs.fields.count,:读取字段个数,For i=0 to rs.fields.count-1,例:,First02.asp,14,读取数据内容,当打开某一个数据表时,当前数据记录位于第一项的位置,此时只能读取这个数据记录的数据,数据表示方法如下图,rs(0),表示当前

7、数据记录的第一项数据,第,N,项数据为,rs(N),,,N,从,0,开始,15,读取数据的方法:,&rs(i).Name&=&rs(i)Next%,说明:,(,1,),rs(i).Name,:读取第,i,栏的字段表头,(,i,从,0,开始),(,2,),rs(i),:读取当前数据记录第,i,栏的数据内容,(,i,从,0,开始),(,3,),rs.fields.count,:读取字段的数目,例:,first03.asp,16,改变当前数据记录的方法,MoveNext,方法:将当前数据记录移到下一项。,MovePrevious,:移到上一项,MoveFirst,:移到第一项,MoveLast,:移

8、到最后一项,BOF,属性:若为,True,,表示当前数据记录指针超过了第一项数据记录,EOF,:若为,True,,表示当前数据记录指针超过了最后一项数据记录,例子:,Firstdb.asp,17,18,使用字段名称读取数据,rs(“,字段名称”,),19,练习,练习,1,:,写一网页,打开,sample.mdb,数据库的“股票行情表”,要求只列出“成交量”大于,20000,的数据记录。,练习,2,:,写一网页,打开,sample.mdb,数据库的“成绩单”数据表,除了显示“学号、姓名、语文、数学、英文”字段外,还要计算“语文、数学、英文”三科的总分数线,显示成“总成绩字段”。,20,10-3,

9、定位式的数据读取,要读取第,100,项数据,怎么办?设置,AbsolutePosition,属性:,rs.absoluteposition=100,定位功能实现:,cursor,类型设为,3,3,:,adOpenStatic,,启动一个,static,类型的游标,具有定位功能的,一次打开全部记录,所占的内存较多,浪费系统资源,打开数据表时间也相对较长,21,具备分页浏览功能的网页,Pagev1.asp,:分页的技巧,Pagev2.asp,:在地址栏中输入页次,Pagev3.asp,:页次的浏览,Pagev4.asp,:增加“输入页次”字段,22,分页的几个重要参数,rs.pagesize,:每

10、页显示的记录数,Rs.pagecount,:总页数,Rs.absolutepage,:某一页,23,Pagev1.asp,显示记录的某一页,Rs.pagesize=10,ShowOnePage rs,1,24,Sub ShowOnePage(rs,Page),Response.Write,Response.Write,Response.Write,编号,For i=0 to rs.Fields.Count-1,Response.Write&rs(i).Name&,Next,Response.Write,rs.AbsolutePage=Page,For iPage=1 To rs.PageSiz

11、e,Response.Write,RecNo=(Page-1)*rs.PageSize+iPage,Response.Write&RecNo&,For i=0 to rs.Fields.Count-1,Response.WRITE&rs(i)&,Next,Response.Write,rs.MoveNext,If rs.EOF Then Exit For,Next,Response.Write,End Sub,25,Pagev2.asp,可输入页码的需要对获取的页数,page,转换,Page=request(“page”),If page”then,Page=cint(Page),If Pag

12、e rs.PageCount Then Page=rs.PageCount,Else,Page=1,End if,26,Pagev3.asp,对“上、下页”的显示方法,Myself=Request.ServerVariables(PATH_INFO),1 Then ,如果不是位于第一页,%,?Page=1,第一页,?Page=,上一页,?Page=,下一页,?Page=,最后一页,27,Pagev4.asp,带有输入文本框的分页,Method=“GET”,28,10-4,数据记录的增添、删除与修改,删除数据记录:首先要将准备删除的数据记录设置成当前数据记录,然后调用,rs.delete,方法。

13、例子:,delete.asp,修改数据记录:修改以后只是把数据写到了缓冲区,必须调用,Update,方法或改变当前数据记录的位置才真正写入数据库。,rs.(,字段名,)=,新的字段值,rs.update,例子:,Modify.asp,增添数据记录:,rs.addnew,。,rs.addnewrs(,字段名,)=,字段值,rs.update,例子:,addnew.asp,29,10-5,可以进行数据筛选与排序的,Select,指令,Firstdb.asp,替换成,select.asp,。结果不变。,SQL,是“,Structured Query Language”,结构化查询语言的缩写,是用于对

14、存放在计算机数据库中的数据进行组织、管理和检索的一种工具。,查询是,SQL,语言的核心,而用于表达,SQL,查询的,Select,语句则是功能最强也最为复杂的,SQL,语句。它从数据库中检索数据,并将查询结果提供给用户。,使用,testsel.asp,测试,select,指令,30,基本句型一:,Select,字段列表,From,数据表,Select*from,成绩单,注:其中*表示“成绩单”数据表所有字段所构成的列表,所以上面的指令也等于:,Select,学号,姓名,语文,英文,数学,from,成绩单,注:凡是数据表中的字段都可以成为“字段列表”的一员。,字段的顺序可以自定义,不必与数据表中

15、的字段顺序相同。,Select,字段名,1 As,别名,1,字段名,2 As,别名,2 from,成绩单,Select,字段名,1,字段名,2,字段名,1+,字段名,2 as,字段名,3 from,成绩单,31,Select*from,成绩单,where,数学,60,注:从成绩单中取出数学不及格的同学,Select*from,成绩单,where,语文,=0 or,数学,=0 or,英文,=0,注:取出语文、英文、数学任何一门为,0,分的学生。,基本句型二:,Select,From,where,条件式,32,Where,条件表达式,关系运算符:、,、,、,=,、!,=,(不等于,或者用“,”,表

16、示),逻辑运算符:,And,、,OR,、,NOT,特殊运算符:,:通配符,表示零或多个字符,_,:通配符,表示任何一个字符,Between,:定义一个区间范围,IS NULL,:测试字段值是否为空值,Like,:字符串匹配操作,IN,:检查一个字段值是否属于一组之中,Exists,:检查一个字段值是否有值,33,字符串数据,下面,2,种写法都正确,Select*from,成绩单,where,姓名,=“,叶小毛”,Select*from,成绩单,where,姓名,=,叶小毛,通配符,%,、,_,%,:代表,0,N,个字符,Select*from,成绩单,where,姓名,like,王,%,注:查

17、找所有姓王的同学的数据记录。,Select*from,成绩单,where,姓名,like,%,小,%,注:查找姓名中含有“小”的数据记录。,_,:代表一个字符,select*from,成绩单,where,姓名,like,_,小,%,选取姓名中第二个字为“小”字的同学,34,Between and,Select*from,学生表,where,年龄,between 18 and 20,注:列出年龄在,18-20,之间的学生,思考:列出年龄不在,18-20,之间的学生?,IS NULL,Select,课程名,from,课程表,where,先修课,IS NULL,注:列出没有先修课的课程名,IN,Se

18、lect,学号,姓名,性别,院系,from,学生表,where,院系,IN(,计算机,国际贸易,),注:列出计算机系和国际贸易系学生的学号、姓名、性别、院系,如何列出不是电子系,也不是会计系的学生记录?,35,DISTINCT,的作用,:避免重复的记录,如:,Select Distinct,教师名,from,授课表,36,Select*from,成绩单,order by,语文,注:,order by,默认的排序方式是由小到大。,下面将成绩单中的数据按语文成绩由高到低取出:,Select*from,成绩单,order by,语文,desc,Select*from,成绩单,where,语文,60

19、order by,语文,注:,order by,可以和,Where,条件式结合,此时,,order by,必须放在,where,条件式的后面。,基本句型三:,Select,From,order by,字段列表,37,级联排序:按顺序列出字段的清单,字段之间用逗号隔开,Select,入学年份,学号,姓名,from,学生表,order by,入学年份,desc,学号,38,在程序中组合条件式,以上所举的都是“常数”例子,如果比较的数据是“变量”,那么如何做呢?,V=200,SQL=“select*from,股票行情表,where,收盘价,V”,set rs=server.createobject(

20、“adodb.recordset”),rs.open SQL,conn,3,2,结果是错误的,因为,V,对程序而言是一个变量,但是对于数据库而言,却是一个不认识的东西。所以必须把,V,输出为常数,然后串在条件式中,才是正确的。,39,对于数字 例子:,var1.asp,SQL=“select*from,股票行情表,where,收盘价,”&V,对于字符串 例子:,var2.asp,SQL=“select*from,股票行情表,where,股票代号,=”&V&”,对于日期时间 例子:,var3.asp,SQL=“select*from,买卖记录,where,买卖日期,=#”&V&”#”,40,SQ

21、L,的集合函数,Count,:统计,MIN,:求最小值,MAX,:求最大值,AVG,:求平均值,SUM,:求总和,41,COUNT,用作计数器,统计满足条件的记录数,Select count(*)as,个数,from,学生表,where,性别,=,女,and,年龄,=19,注:统计,19,岁以上的女同学人数,练习:列出授课表中有多少位教师,Select count(Distinct,教师名,)as,教师人数,from,授课表,注意:与,distinct,合用,42,MAX,和,MIN,例:找出年龄最大和最小的学生年龄,Select Max(,年龄,)as,最大年龄,Min(,年龄,)as,最小

22、年龄,from,学生表,例:查询选修“,C801”,课程的学生最高分,Select Max(,成绩,)as,最高分,from,成绩表,where,课程号,=C801,43,AVG,函数与,SUM,函数,例:求出所有学生的平均年龄,Select,AVG(,年龄,),as,平均年龄,from,学生表,例:列出所有学生的年龄总和,Select,SUM(,年龄,),as,年龄总和,from,学生表,练习:列出所有女生的年龄总和,44,Group by,对查询结果分组,例:统计每一届学生的人数,Select,入学年份,count(*)as,每届人数,from,学生表,group by,入学年份,例:列出

23、各个课程号及相应的选修人数,Select,课程号,count(,课程号,)from,成绩表,group by,课程号,45,基于多表的查询,自然连接,复合条件连接,嵌套查询,带有,IN,的子查询,46,自然连接,等值连接:连接条件中运算符是“,=”,非等值连接:运算符是,、,=,、,90,48,嵌套查询,例:查询“沈香娜”同学所在班级的所有学生名单,Select,学号,姓名,性别,年龄,院系,班级名,from,学生表,where,班级名,=,(select,班级名,from,学生表,where,姓名,=,沈香娜,),49,带有,IN,的子查询,例:列出与“刘成凯”同学在同一个系的所有女生的名单

24、,Select,学号,姓名,性别,年龄,院系,班级名,from,学生表,where,院系,IN,(select,院系,from,学生表,where,姓名,=,刘成凯,)and,性别,=,女,50,练习,建立一,sqlserver,数据库,student,,数据表名称为,stumanage,,字段如下:学号(文本)姓名(文本)性别(文本)年龄(数字)班级(文本)专业(文本)编程实现以下要求:,1,、实现分页浏览功能,2,、实现任意项的修改、删除功能,3,、统计出男生、女生的人数各为多少,4,、显示时按照年龄递增排序,51,作业,自己制作一个个人留言板,要求如下:,用户留言界面,用户查看留言界面,留言管理界面:回复、修改、删除,52,

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服