已阅读5页,还剩44页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第8章数据库访问 本章主要内容 8 1Recordset对象8 2Command对象8 3综合示例 在利用Connection对象和一个数据库建立起连接后 接下来 就可以使用ADO的Recordest对象访问数据表的记录了 创建Recordset对象创建Recordset对象有两种方法 其一是利用Connection对象的Execute方法返回的查询结果自动创建 其二是用Server CreateObject方法直接创建 1 利用Connection对象的Execute方法返回的查询结果自动创建 8 1Recordset对象 例8 1 查询并显示学生表中的数据 ASP程序代码如下 学号 姓名 性别 出生日期 8 1Recordset对象 在这个例子中 先创建了一个Connection对象实例Conn 然后通过Conn的Execute方法执行SQL查询语句 返回一个记录集合 赋值给Recordset对象的实例rs 最后从rs中读出了学生表中的第一条记录信息 用这种方式得到的Recordset对象实例rs是以只读的方式创建的 它有很多限制 比如只能向下 而不能向上移动记录指针 无法跟踪数据库的变化等 为了能够更灵活地操作Recordset对象记录集合 往往是直接创建Recordset对象 该程序代码执行的结果如下图所示 2 利用Server CreateObject方法直接创建 然后用Recordset对象的Open方法打开记录集合 语法格式 SetRecordset对象名 Server CreateObject ADODB Recordset 例如 8 1Recordset对象 如下图所示 Recordset对象是个记录的集合 是按字段和记录形式构成的二维表 每个Recordset对象包含一个或多个字段 包含一条或多条记录 表示一次对某个或某几个数据表查询的结果 每当数据从数据库中读出来后 系统就会为其提供一个记录指针 默认情况下该指针指向Recordset对象记录集合的第一条记录 在任何时刻 每一个Recordset对象只有一条记录是当前记录 即记录指针所指向的那条记录 只有成为当前记录后 其内容才能被读取 如果要读取其他记录 就必须先移动这个记录指针 8 1Recordset对象 8 1 1Recordset对象的记录指针 游标 Recordset对象的常用属性如下表所示 8 1Recordset对象 8 1 2Recordset对象的常用属性 1 Recordset对象记录集合中的记录除了拥有绝对位置 AbsolutePosition 外 也可以将一定数量的记录分开为不同的数据页 也就是说存在的每一个数据页拥有相同的记录数 PageSize AbsolutePage AbsolutePosition和PageSize有如下关系 AbsolutePage AbsolutePosition PageSize 1 小数点无条件舍去 2 CursorType属性有4个设置值 如下表所示 注意 一旦打开了Recordset对象 就无法再改变CursorType属性 可以通过先关闭Recordset对象 再改变CursorType属性 然后再重新打开Recordset对象的方法有效地改变游标的类型 3 在同时可被多用户修改的数据库应用程序中 必须解决好可能发生的多个用户同时对同一条记录进行操作时的情况 这种情况出现时 数据的完整性就会受到威胁 这是因为一个用户可能会在不自觉地在保存自己所做的修改时覆盖他人的修改 可以通过LockType属性来解决这个问题 其有4个设置值 如下表所示 Recordset对象的常用方法如下表所示 8 1Recordset对象 8 1 3Recordset对象的常用方法 1 Open方法语法格式 Recordset对象名 Open数据来源 CursorType LockType 说明 1 该方法用来建立与数据表的联系 将结果返回到一个Recordset对象记录集合中 2 数据来源一般为数据表名 SQL语句串等 2 Close方法语法格式 Recordset对象名 Close说明 该方法用来关闭Recordset对象实例并释放其所占的内存空间 8 1 3Recordset对象的常用方法 3 定位记录指针在Recordset对象记录集合中用于记录指针定位的常用方法有MoveFirst MoveLast MoveNext和MovePrevious 语法格式 Recordset对象名 方法说明 1 除了MoveNext以外 其他的方法都需要设置CursorType属性为1 2 记录指针移动到EOF时 如果继续向下移动 就会出错 记录指针移动到BOF时 如果继续向上移动 也会出错 因此 移动记录指针前要先使用BOF和EOF判断是否达到了Recordset对象记录集合的开始和结尾 3 MoveNext方法速度最快 如果仅仅是按照顺序读取记录 建议使用该方法 8 1 3Recordset对象的常用方法 例8 2 查询并显示学生表中的所有数据 ASP程序代码如下 学号 姓名 性别 出生日期 其执行结果如下图所示 可以看到学生表中的数据全都显示出来了 这个例子里使用了Do Loop循环 并在循环体内使用了Recordset对象的MoveNext方法 每循环一次 就将记录指针向下移动一行 直到Recordset对象记录集合的最后一条记录 4 操作数据库 1 新增记录 AddNew语法格式 Recordset对象名 AddNew 字段名数组 字段值数组 说明 参数省略时为增加一条空记录 且记录指针指向该空纪录 可以对其各个字段赋值 但不会写入数据库 写入要有Update方法 例如 新增一条 学号 为 0941101 其他字段为空的记录rs AddNew 学号 0941101 新增一条 学号 姓名 性别 出生 分别为 0941102 李宏 男 1992 5 18 的记录方法一 rs AddNewArray 学号 姓名 性别 出生 Array 0941102 李宏 男 1992 5 18 方法二 rs AddNewrs 学号 0941104 rs 姓名 李宏 rs 性别 男 rs 出生 1992 5 18 rs Update 8 1 3Recordset对象的常用方法 2 删除记录 Delete语法格式 Recordset对象名 Delete说明 该方法的作用是删除当前记录 一般是做了删除标记 只有执行了Update方法后 该记录的信息才真正从数据库中删除 3 更新记录 Update语法格式 Recordset对象名 Update 字段名数组 字段值数组 说明 该方法参数的作用与AddNew方法的相同 不同之处在于Update方法为更新当前记录而不是新增记录 参数省略时 将自动更新以前的操作 如新增 将数据存入数据库 4 取消数据更新 CancelUpdate语法格式 Recordset对象名 CancelUpdate说明 该方法的作用是撤销AddNew或Delete方法的效果 利用RecordSet对象的属性和方法可以完全操作一个数据库 理论上只要SQL语句可以完成的操作 利用RecordSet对象的属性和方法都可以实现 但这两者是有区别的 使用RecordSet对象的属性和方法操作数据库与使用SQL语句操作数据库最大的不同在于 SQL语句每次可操作多条记录 而RecordSet对象的属性和方法只能操作 当前记录 所以当要删除或修改多条记录时 必须利用MoveFirst MoveLast MoveNext MovePrevious AbsolutePosition等方法及属性来设置 当前记录 然后调用删除或修改方法 并借助循环语句才能完成 显然 两者在执行效率上也存在着很大的差异 因此 在实际的应用中 使用RecordSet对象的属性和方法来操作数据库的情况很少见 大部分都是在RecordSet对象中直接使用SQL语句来操作数据库 例8 3 就是一个在RecordSet对象中直接使用SQL语句来操作数据库的例子 8 1Recordset对象 8 1 3Recordset对象的常用方法 例8 3 为学生表构建一个记录删除页面 完成该任务需要两个ASP程序文件 例8 3 a asp和例8 3 b asp 例8 3 a asp程序代码如下 学生记录删除页面删除标记学号姓名性别出生日期班级 name Del test 例8 3 b asp程序代码如下 Alert 记录删除已经完成 Location href 例8 3 a asp 在浏览器地址栏中输入http 127 0 0 1 例8 3 a asp 首先显示学生表中的全部记录 通过第一列的单选按钮 选择要删除的记录 运行效果如下图所示 当选择了某个记录后 单击 提交 按钮 即可删除此条记录 执行效果如下图所示 每个Recordset对象都包含一个字段集合Fields 它存储了数据表中的全部字段 Fields集合中的每一列 从第0列开始 也就是数据表中的每一个字段 对应一个Field对象 事实上 Recordset对象的每一行都属于一个Fields集合 而Fields集合的每一项都是一个Field对象 如下图所示 8 1Recordset对象 8 1 4Field对象及其常用属性 Field对象的常用属性如下表所示 8 1Recordset对象 8 1 4Field对象及其常用属性 说明 1 字段名的获取方法如下 rs i Name或rs Fields i Name 2 字段值的获取方法如下 rs 字段名 rs Fields 字段名 或rs i rs Fields i rs i Value rs Fields i Value 如果需要读取当前Recordset对象记录集合中字段的数量 可以使用如下代码 FieldCount Rs Fields Count在获得Recordset对象记录集合中字段的数量后 即可根据索引来读取当前记录的某个或某几个字段的名称 数据类型 长度等信息 程序代码如下所示 Rs Fields i NameRs Fields i ValueRs Fields i TypeRs Fields i AttributesRs Fields i DefinedSize上述代码中的索引变量i从 0 开始 步长为 1 持续累加 直到i为 FieldCount 1 为止 便依次可以获得Recordset对象记录集合的所有相关信息 包括字段和记录 例8 4 用表格的形式显示学生表中的全部字段名称和所有记录 ASP程序代码如下 rs i Name next fori 0tors Fields Count 1 输出表的内容 记录 Response Write rs i Value nextResponse Write rs MoveNextloop 运行效果如下图所示 数据表中存储的数据记录可能有成千上万条 如果一次全部显示出来会既浪费时间又不便于查看 而如果能想办法实现数据的分页显示 就能很好地解决这个问题 下面将结合具体的程序示例介绍怎样实现数据的分页显示 首先编写一个自定义过程 用于实现数据的分页输出 该过程的第一个参数rs是Recordset对象的实例 第一个参数page用来控制显示第几页 自定义过程displayOnePage的程序代码如下 Response Write fori 0tors Fields Count 1Response Write rs i Name next 将page参数赋值给AbsolutePagers AbsolutePage page 8 1Recordset对象 8 1 5实现数据的分页显示 循环显示数据表的内容 记录 forxPage 1tors PageSizeResponse Write RecordNo page 1 rs PageSize xPagefori 0tors Fields Count 1Response Write rs i Value nextResponse Write rs MoveNextifrs EOFthenexitfornextResponse Write EndSub 该过程代码中的PageSize用来确定循环的次数 也就是要显示多少条记录 例如 设PageSize 6 page 2 这时 由于AbsolutePage page 所以当前的记录为第 2 1 6 1 7条 然后循环6次 输出显示从第7到第12条的记录 也就是第2页的记录 下例这段代码通过调用displayOnePage过程来实现记录的分页显示 例8 5 调用displayOnePage过程显示学生表的第1页的记录 ASP程序代码如下 显示学生表第1页的记录 该例中 displayOnePage过程的第2个调用参数为1 又因为PageSize 2 所以程序执行后会显示 学生表 第1页的有关记录 即 学生表 的前两条记录 执行效果如下图所示 例8 6 对上例的程序进行修改 使其具有翻页的功能 ASP程序代码如下 显示学生表的记录 实现翻页功能rs PageCountthenpage rs PageCountendifdisplayOnePagers page 1thenResponse Write 第一页 Response Write 上一页 endififpagers PageCountthenResponse Write 下一页 Response Write 最后一页 endif 页数 在该程序中 每次执行都要读取page的值 然后作为参数传递给displayOnePage过程 该程序的执行结果如下图所示 例8 7 对上例的程序再进行修改 使其除具有翻页功能外 还能够显示指定的页面 ASP程序代码如下 显示学生表的记录 实现翻页及指定跳转页面功能rs PageCountthenpage rs PageCountendifdisplayOnePagers page 1thenResponse Write 第一页 Response Write 上一页 endififpagers PageCountthenResponse Write 下一页 Response Write 最后一页 endif 跳转到第页页数 该程序主要是添加了一个文本框 用于输入要显示的页号 Recordset Connection和Command是ADO内置的3个主要对象 其中Connection对象的主要功能是建立与数据库的连接 Command对象的主要功能是向数据库传送SQL语句的执行请求 Recordset对象的主要功能是建立数据库查询结果的记录集合 本节之前 没有讲解Command对象 我们一样可以轻松地向数据库传送SQL语句的执行请求 主要有以下几种方法 1 执行SQL的Select语句 实现数据查询 并将查询结果存到Recordset对象中 Setrs Conn Execute Select语句 2 执行SQL的Insert Delete或Update语句 实现数据操作 Conn ExecuteSQL的数据操作语句 3 先建立Recordset对象 再执行SQL语句 Setrs Server CreateObject ADODB Recordset rs OpenSQL语句 Conn 8 2Command对象 其中 前两种方法是利用Connection对象来执行SQL语句 而第三种方法则是利用Recordset对象来执行SQL语句 显然 没有Command对象也一样可以执行SQL语句 Command对象在SQL语句的执行方面具有强大的功能 它不仅能够将一般的SQL语句送往数据库服务器 还能够传送带有参数的SQL语句 更重要的是还可以传送存储过程 在数据库端 预置的SQL程序 但当Command对象执行SQL的Select语句时 返回的Recordset对象记录指针只能向下移动 如果希望记录指针能够上下移动 那就必须使用Recordset对象的Open方法来打开数据表 创建Command对象语法格式 SetCommand对象名 Server CreateObject ADODB Command 8 2Command对象 Command对象的几个重要属性和方法如下 1 ActiveConnection属性 定义Command对象的连接信息 这个属性一般指向一个当前打开的Connection对象实例 2 CommandText属性 为SQL语句 数据表名或者存储过程的名字 3 CommandType属性 优化数据提供者的执行速度 通过CommandText属性中所定义的命令类型 数据提供者就不用花时间去分析是何种类型的数据 如下所示 AdCmdText 代表数字1 表示处理的是一个SQL语句 AdCmdTable 代表数字2 表示处理的是一个数据表 AdCmdStoredProc 代表数字4 表示处理的是一个存储过程 4 Execute方法 执行CommandText的SQ
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 资源化利用项目土建施工方案
- 铜矿开采现场作业流程优化方案
- 铅锌资源循环再生利用项目施工方案
- 波兰公务员考试试题及答案
- 白山市公务员考试价格试题及答案
- 开发区南部污水处理厂项目技术方案
- 农村生活污水治理工程申请报告
- 水厂迁建工程商业计划书
- 十五五规划纲要:油气行业绿色低碳转型政策
- 2026年蔬菜种植公司办公用品库存与补充管理制度
- 报批报建流程
- 音标表48个国际音标发音教学视频
- 2024年度人工智能数据采集与算法优化服务合同3篇
- 部编版高中语文必修下册第二单元检测卷(含答案)
- 异构网络编址技术-洞察分析
- 四川省射洪市射洪中学校2024-2025学年七年级上学期期中考试地理试题
- 多层SBS改性沥青卷材屋面防水施工方案
- 湖南省娄底市2024-2025学年高二数学上学期期中试题
- DG-TJ 08-2397-2022 市域铁路结构安全保护技术标准
- 淮安市房屋租赁合同范本
- NB-T35026-2022混凝土重力坝设计规范
评论
0/150
提交评论