




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第十章 Asp访问SQL Server数据库n在ASP中,用来存取数据库的对象统称为ADO(ActiveX Data Object),主要含有Connection、Recordset和Command三种对象。qConnection对象:负责连接、打开数据库qRecordset对象:存取数据库的内容qCommand对象:对数据库下达行动查询指令10-1 存取数据库的准备工作n要让ADO对象能够存取数据库,最重要的东西就是ODBC驱动程序。nODBC:Open DataBase Connectivityn对任何一种数据库来说,必须具备其对应的ODBC驱动程序,ADO对象才能够进行存取。应用程序应用
2、程序应用程序ADO对象Dbase驱动程序Access驱动程序SQL Server驱动程序Dbase数据库Access数据库SQL Server数据库1.ODBC数据源管理器n控制面板管理工具ODBC数据源驱动程序2.Connection对象的建立与数据库的连接建立Connection对象nset conn=server.createobject(adodb.connection)nconn.Open driver=SQL Server;server=(local);uid=sa;pwd=;database=samplen3.访问数据库建立Recordset对象nset rs=server.cr
3、eateobject(adodb.recordset)打开数据表,参数二为Connection对象nrs.open 成绩单,conn,cursor,locktypecursor为游标参数,实际应用中的值为1、2、3 cursortypen0 :adOpenForwardOnly,缺省值,启动一个只能向前移动的游标(Forward Only)。n1:adOpenKeyset,启动一个Keyset类型的游标。用户对记录做的修改将反映到记录集中,但用户增加或删除记录不会反映到记录集中。支持分页 n2:adOpenDynamic,启动一个Dynamic类型的游标。在打开数据表时,只是打开一部分记录,随
4、着程序的执行,再打开后面的记录;n3:adOpenStatic,启动一个Static类型的游标。具有定位功能的,一次打开全部记录,所占的内存较多,浪费系统资源,打开数据表时间也相对较长 locktypen1:adLockReadOnly,缺省值,Recordset对象以只读方式启动,无法运行AddNew、Update及Delete等方法n2:adLockPrssimistic,当数据源正在更新时,系统会暂时锁住其他用户的动作,以保持数据一致性。n3:adLockOptimistic,当数据源正在更新时,系统并不会锁住其他用户的动作,其他用户可以对数据进行增、删、改的操作。5.数据库连接的关闭n
5、在对数据库所有的操作完毕后,应当及时关闭connection对象,释放资源nConn.closenSet conn=nothingnSet rs=nothing10-2 使用Recordset对象读取数据库n读取数据表表头n读取数据内容 n改变当前数据记录的方法 n利用字段名称读取数据n例子:first00.asp改进:读取数据表表头n第N个字段的表头为rs(N).Name(N从0开始算起)n% For i = 0 to 4 Response.Write & rs(i).Name Next %n例:first01.aspn在不知道表的字段个数情况下,如何正确的列出所有字段的表头呢?rs
6、.fields.count:读取字段个数For i=0 to rs.fields.count-1n例:First02.asp读取数据内容n当打开某一个数据表时,当前数据记录位于第一项的位置,此时只能读取这个数据记录的数据,数据表示方法如下图rs(0)表示当前数据记录的第一项数据,第N项数据为rs(N),N从0开始 n读取数据的方法: %For i= 0 to rs.Fields.Count - 1 Response.Write & rs(i).Name & = & rs(i)Next%n说明:说明:(1)rs(i).Name:读取第i栏的字段表头(i从从0开始)开始)
7、(2)rs(i):读取当前数据记录第i栏的数据内容(i从从0开始)开始) (3)rs.fields.count:读取字段的数目 n例:first03.asp改变当前数据记录的方法nMoveNext方法:将当前数据记录移到下一项。nMovePrevious:移到上一项nMoveFirst:移到第一项nMoveLast:移到最后一项nBOF属性:若为True,表示当前数据记录指针超过了第一项数据记录nEOF:若为True,表示当前数据记录指针超过了最后一项数据记录n例子:Firstdb.aspn % Part I输出“表头名称” For i=0 to rs.Fields.Count-1 Respo
8、nse.Write & rs(i).Name & Next % % Part II输出数据表的“内容” rs.MoveFirst 将目前的数据记录移到第一项 While Not rs.EOF 判断是否过了最后一项 Row = For i=0 to rs.Fields.Count-1 Row = Row & & rs(i) & Next Response.Write Row & rs.MoveNext 移到下一项 Wend %使用字段名称读取数据nrs(“字段名称”)练习n练习练习1:写一网页,打开sample.mdb数据库的“股票行情表”,要求只
9、列出“成交量”大于20000的数据记录。n练习练习2:写一网页,打开sample.mdb数据库的“成绩单”数据表,除了显示“学号、姓名、语文、数学、英文”字段外,还要计算“语文、数学、英文”三科的总分数线,显示成“总成绩字段”。 10-3 定位式的数据读取n要读取第100项数据,怎么办?设置AbsolutePosition属性:rs.absoluteposition=100n定位功能实现:cursor类型设为3n3:adOpenStatic ,启动一个static类型的游标,具有定位功能的,一次打开全部记录,所占的内存较多,浪费系统资源,打开数据表时间也相对较长具备分页浏览功能的网页nPage
10、v1.asp:分页的技巧nPagev2.asp:在地址栏中输入页次nPagev3.asp:页次的浏览nPagev4.asp:增加“输入页次”字段分页的几个重要参数nrs.pagesize:每页显示的记录数nRs.pagecount:总页数nRs.absolutepage:某一页Pagev1.aspn显示记录的某一页Rs.pagesize=10ShowOnePage rs, 1nSub ShowOnePage( rs, Page )n Response.Write n Response.Write n Response.Write 编号编号n For i=0 to rs.Fields.Count
11、-1n Response.Write & rs(i).Name & n Nextn Response.Write n rs.AbsolutePage = Pagen For iPage = 1 To rs.PageSizen Response.Write n RecNo = (Page - 1) * rs.PageSize + iPagen Response.Write & RecNo & n For i=0 to rs.Fields.Count-1n Response.WRITE & rs(i) & n Nextn Response.Write
12、 n rs.MoveNextn If rs.EOF Then Exit Forn Nextn Response.Write nEnd SubPagev2.aspn可输入页码的需要对获取的页数page转换Page=request(“page”)If page” then Page = cint( Page) If Page rs.PageCount Then Page = rs.PageCountElse Page=1End ifPagev3.aspn对“上、下页”的显示方法Myself = Request.ServerVariables(PATH_INFO)%If Page 1 Then 如果
13、不是位于第一页% A HREF=?Page=1第一页 A HREF=?Page=上一页%End If If Page rs.PageCount Then 如果不是位于最后一页% A HREF=?Page=下一页 A HREF=?Page=最后一页Pagev4.aspn带有输入文本框的分页FORM Action= Method=“GET”10-4 数据记录的增添、删除与修改n删除数据记录:首先要将准备删除的数据记录设置成当前数据记录,然后调用rs.delete方法。例子:delete.aspn修改数据记录:修改以后只是把数据写到了缓冲区,必须调用Update方法或改变当前数据记录的位置才真正写入
14、数据库。qrs.(字段名)=新的字段值rs.updaten例子:Modify.aspn增添数据记录:rs.addnew。rs.addnewrs(字段名)=字段值rs.update n例子:addnew.asp10-5 可以进行数据筛选与排序的Select指令nFirstdb.asp替换成select.asp。结果不变。nSQL是“Structured Query Language”结构化查询语言的缩写,是用于对存放在计算机数据库中的数据进行组织、管理和检索的一种工具。n查询是SQL语言的核心,而用于表达SQL查询的Select语句则是功能最强也最为复杂的SQL语句。它从数据库中检索数据,并将查
15、询结果提供给用户。n使用testsel.asp测试select指令基本句型一:Select 字段列表 From 数据表nSelect * from 成绩单注:其中*表示“成绩单”数据表所有字段所构成的列表,所以上面的指令也等于:nSelect 学号,姓名,语文,英文,数学 from 成绩单注:凡是数据表中的字段都可以成为“字段列表”的一员。 字段的顺序可以自定义,不必与数据表中的字段顺序相同。nSelect 字段名1 As 别名1,字段名2 As 别名2 from 成绩单nSelect 字段名1,字段名2,字段名1+字段名2 as 字段名3 from 成绩单nSelect * from 成绩单
16、 where 数学60注:从成绩单中取出数学不及格的同学nSelect * from 成绩单 where 语文=0 or 数学=0 or 英文=0注:取出语文、英文、数学任何一门为0分的学生。基本句型二:Select Fromwhere 条件式Where 条件表达式n关系运算符:、关系运算符:、=、!、!=(不等(不等于,或者用于,或者用“”表示)表示)n逻辑运算符:逻辑运算符:And、OR、NOTn特殊运算符:特殊运算符:q:通配符,表示零或多个字符:通配符,表示零或多个字符q_:通配符,表示任何一个字符:通配符,表示任何一个字符qBetween:定义一个区间范围:定义一个区间范围qIS N
17、ULL:测试字段值是否为空值:测试字段值是否为空值qLike:字符串匹配操作:字符串匹配操作qIN:检查一个字段值是否属于一组之中:检查一个字段值是否属于一组之中qExists:检查一个字段值是否有值:检查一个字段值是否有值n字符串数据字符串数据 下面下面2种写法都正确种写法都正确Select * from 成绩单成绩单 where 姓名姓名=“叶小毛叶小毛”Select * from 成绩单成绩单 where 姓名姓名=叶小毛叶小毛n通配符通配符 %、_%:代表:代表0N个字符个字符Select * from 成绩单成绩单 where 姓名姓名 like 王王%注:查找所有姓王的同学的数据记
18、录。注:查找所有姓王的同学的数据记录。Select * from 成绩单成绩单 where 姓名姓名 like %小小%注:查找姓名中含有注:查找姓名中含有“小小”的数据记录。的数据记录。_:代表一个字符:代表一个字符select * from 成绩单成绩单 where 姓名姓名 like _小小% 选取姓选取姓名中第二个字为名中第二个字为“小小”字的同学字的同学nBetween and Select * from 学生表 where 年龄 between 18 and 20注:列出年龄在18-20之间的学生思考:列出年龄不在18-20之间的学生?nIS NULLSelect 课程名 from
19、 课程表 where 先修课 IS NULL注:列出没有先修课的课程名nINSelect 学号,姓名,性别,院系 from 学生表 where 院系 IN (计算机,国际贸易)注:列出计算机系和国际贸易系学生的学号、姓名、性别、院系如何列出不是电子系,也不是会计系的学生记录?nDISTINCT的作用:避免重复的记录n如:nSelect Distinct 教师名 from 授课表nSelect * from 成绩单 order by 语文注:order by默认的排序方式是由小到大。下面将成绩单中的数据按语文成绩由高到低取出:nSelect * from 成绩单 order by 语文 desc
20、nSelect * from 成绩单 where 语文60 order by 语文注:order by 可以和Where条件式结合,此时,order by 必须放在where条件式的后面。基本句型三:Select Fromorder by 字段列表n级联排序:按顺序列出字段的清单,字段之间用逗号隔开nSelect 入学年份,学号,姓名 from 学生表 order by 入学年份 desc, 学号在程序中组合条件式n以上所举的都是“常数”例子,如果比较的数据是“变量”,那么如何做呢?nV=200 SQL=“select * from 股票行情表 where 收盘价V” set rs=serve
21、r.createobject(“adodb.recordset”) rs.open SQL,conn,3,2n结果是错误的,因为V对程序而言是一个变量,但是对于数据库而言,却是一个不认识的东西。所以必须把V输出为常数,然后串在条件式中,才是正确的。n对于数字 例子:var1.aspqSQL=“select * from 股票行情表 where 收盘价”&Vn对于字符串 例子:var2.aspqSQL=“select * from 股票行情表 where 股票代号=”&V&”n对于日期时间 例子:var3.aspqSQL=“select * from 买卖记录 where
22、 买卖日期=#”&V&”#”SQL的集合函数nCount:统计nMIN:求最小值nMAX:求最大值nAVG:求平均值nSUM:求总和COUNTn用作计数器,统计满足条件的记录数nSelect count(*) as 个数 from 学生表 where 性别=女 and 年龄=19n注:统计19岁以上的女同学人数n练习:列出授课表中有多少位教师nSelect count(Distinct 教师名) as 教师人数 from 授课表n注意:与distinct合用MAX和MINn例:找出年龄最大和最小的学生年龄nSelect Max(年龄) as 最大年龄, Min(年龄) as 最小年龄 from 学生表n例:查询选修“C801”课程的学生最高分nSelect Max(成绩) as 最高分 from 成绩表 where 课程号=C801AVG函数与SUM函数n例:求出所有学生的平均年龄nSelect AVG(年龄) as 平均年龄 from 学生表n例:列出所有学生的年龄总和nSelect SUM(年龄) as 年龄总和 from 学
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 单位装修合同标准文本照
- 短租汽车服务合同
- 出让地抵押合同样本
- 医院员工租赁合同样本
- 耕地农机具买卖合同
- 音响设备租赁合同
- 汽车维修服务合同
- 工业品买卖合同范本规定(16篇)
- 集团月饼采购合同协议
- 门面租赁合同协议租房版
- 部编人教版六年级下册语文全册课内阅读训练(含答案)
- 从龙文化看中华文明的连续性
- 二年级数学上册苏教版第六单元《表内乘法和表内除法(二)》说课稿
- DL∕T 475-2017 接地装置特性参数测量导则
- 山东省济南市2023-2024学年高一下学期期末学习质量检测历史试题
- DL-T5241-2010水工混凝土耐久性技术规范
- 静脉导管常见并发症临床护理实践指南
- 围手术期血糖管理专家共识
- 上肢肘腕关节松动术
- 2024年3月昆明市高三语文三诊一模考试卷附答案解析
- (高清版)DZT 0419.3-2022 矿产资源潜力评价规范(1:250 000)第3部分:成矿规律研究
评论
0/150
提交评论