在ASP中访问ACEESS数据库.ppt_第1页
在ASP中访问ACEESS数据库.ppt_第2页
在ASP中访问ACEESS数据库.ppt_第3页
在ASP中访问ACEESS数据库.ppt_第4页
在ASP中访问ACEESS数据库.ppt_第5页
已阅读5页,还剩117页未读 继续免费阅读

下载本文档

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

文档简介

1 第9章数据库的使用 9 1结构化查询语言SQL9 2用Access建立一个数据库文件9 3搭建DSN桥梁9 4访问数据库中的数据9 5在客户端访问数据库9 6用Command对象改善查询习题 2 9 1结构化查询语言SQL SQL一词实际上是 StructuredQueryLanguage 结构化查询语言的缩写 SQL是用于对存放在计算机数据库中的数据进行组织 管理和检索的一种工具 SQL是一种特定类型的数据库 关系数据库 而控制这种数据库的计算机程序就是DBMS 数据库管理系统 譬如 SQLServer Oracle Sybase DB2等等 当用户想要检索数据库中的数据时 需要通过SQL语言发出请求 接着DBMS对该SQL请求进行处理并检索所要求的数据 最后将其结果返回给用户 此过程被称为数据库查询 这也就是数据库查询语言这一名称的由来 3 SQL不是C COBOL和FORTRAN那种完整的计算机语言 SQL既没有用于条件测试的If语句 也没有用于程序分支的Goto语句以及循环语句For或Do 9 1 1查询语句Select查询是SQL语言的核心 而用于表达SQL查询的Select语句则是功能最强也是最为复杂的SQL语句 它从数据库中检索数据 并将查询结果提供给用户 例9 3 这一次 做一个稍微复杂一点的查询 如果要列出S表中年龄大于和等于24的所有女性的姓名 工资 电话和居住地区 并且按工资排序 可用下面的Select语句实现 语法格式 4 Select数据项1 数据项2 From表名 Where条件表达式 OrderBy排序选项 GroupBy汇总查询 Having子句 功能 从数据库表中检索出满足条件表达式要求的数据项 说明 1 Select子句列出所有要求Select语句检索的数据项 它放在Select语句开始处 指定此查询要检索的字段 这些数据项通常用选择项表示 即一组用 隔开的选择项 按照从左到右的顺序 每个选择项产生一列的查询结果 一个选择项可能是以下项目 1 字段名 标识From子句指定表中的字段 如果字段名作为选择项 则SQL直接从数据库表中每行取出该列的值 再将其放在查询结果的相应行中 5 2 常数 指定在查询结果的每行中都放上该值 3 SQL表达式 说明必须将要放入查询结果中的值按表达式的规定进行计算 2 From子句列出包含所要查询数据的表 它由关键字From后跟一组用逗号分开的表名组成 每个表名都代表一个包括该查询要检索数据的表 这些表称为此SQL语句的表源 因为查询结果都源于它们 3 Where子句告诉SQL只查询某些行中的数据 这些行用搜索条件描述 4 OrderBy子句将查询结果按一列或多列中的数据排序 如果省略此子句 则查询结果将是无序的 添加ASC属性以升序 从小到大 排列 DESC属性以降序 从大到小 排列 6 5 GroupBy子句指定汇总查询 它不是对每行产生一个查询结果 而是将相似的行进行分组 再对每组产生一个汇总结果 6 Having子句告诉SQL只产生由GroupBy得到的某些组的结果 和Where子句一样 所需要的组也用一个搜索条件指定 注意 在这里使用的条件表达式与VBScript中用比较运算符组成的表达式是一致的 7 SQL不仅能进行数据库的查询 还可以对数据库中的数据进行修改和更新 而且更改数据库内容的SQL更简单 不过 对于一个DBMS来说 数据更新所造成的风险大大超出了数据查询 数据库管理系统必须在更改期内保护所存储的数据的一致性 确保有效的数据进入数据库 数据库必须保持一致性 DBMS还必须协调多用户的并行更新 以确保用户和他们的更改不至于影响其他用户的作业 所以 使用修改和更新语句时 一定要小心 8 9 1 2插入语句InsertInto语法格式 InsertInto表名 col1 col2 Values value1 value2 功能 向一个表中加入新的数据行 例9 4 将张驰作为一个新的成员加入表S中 InsertIntoS xm xb nl gz dh dz Values 张驰 男 28 4500 8888 北京 Insert语句还可以将多行数据添加到目标表中去 在这种形式的Insert语句中 新行的数据值不是在语句正文中明确地指定的 而是语句中指定的一个数据库查询 添加的值来自已经存在的表中 看下面的例子 9 例9 5 如果要把2000年12月30日之前产生的订单编号 Num 日期 Date 和数目 Amount 从A表拷贝到另一个名为B的表中去 可用下面的语句 InsertintoB Num Date Amount SelectNum Date AmountFromAWhereDate 30 12 2000 9 1 3更新语句Update下面介绍Update的用法 Update语句用于更新表中选定行的一列或多列的值 要更新的目标表在语句中定义 Set子句则指定要更新哪些列并计算它们的值 Update语句总是包含Where语句 因为Update语句比较危险 所以你必须明确地认识到Where语句的重要性 Where语句被用来指定需要更新的行 10 语法格式 Update表名Set字段名1 value1 字段名2 value2 Where条件功能 用value值更改选定的表中已经存在的字段的数据 例9 6 这是一个简单的Update语句 可将表C中客户名为slp的客户的信贷值更新为10万并将他的ID变更为99 UpdateCSetcredit 100000 00 id 99Wherename slp 11 例9 7 如果要将表C中客户ID为80 90 100 120客户的信贷值更新为20万 状态值为021 可用下列语句 UpdateCSetcredit 200000 00 state 021WhereIDin 80 90 100 120 Where字段名in 数据集合 表示查询 字段名 的值为 数据集合 中的所有记录 例如 上例中 字段名 为ID ID的值为80 90 100 120 SQL处理Update语句的过程是逐行搜索所指定的表 更新满足搜索条件的记录 跳过不满足搜索条件的记录 12 9 1 4删除语句Delete语法格式 Deletefrom表名Where条件功能 从一个表中删除数据行 例9 8 从表D中删除ID为99的所有行的记录 DeletefromDWhereID 999 1 5创建表语句CreatetableSQL语言可以分为两大部分 数据定义语言和数据操纵语言 以上介绍的是数据操纵语言的Select语句 下面介绍数据定义语言 它是用来创建和修改数据库结构的一种语句 包括Create和Drop语句 13 语法格式 Createtable表名 字段名1数据类型 NOTNULL 字段名2数据类型 NOTNULL 字段名3数据类型 NOTNULL 功能 建立一个给定字段的表 例9 9 下面的语句创建一个具有字段name字符型30位 amout数值型8位 id数值型4位的表B CreateTableB nameCHAR 30 amoutNUMBER 8 idNUMBER 4 虽然Createtable比前面介绍的语句难理解一些 但仍然很直观 它将表B赋予一个新表 并指定表中三列的名称和数据类型 表被建立后就可以添入数据了 可用下面的语句输入数据 14 InsertIntoB name amout id Values zhangchi 100 1 9 1 6删除表语句Droptable如果 你觉得不再需要保存某个表的数据信息 则可用Droptable语句将该表及其所包含的所有数据从数据库中删除掉 语法格式 Droptable表名功能 删除一个表 例9 10 如果要删除表B可使用下面的语句 DroptableB 15 9 2用Access建立一个数据库文件 如果你已经安装有Access软件 可单击Windows2000的 开始 程序 MicrosoftAccess 菜单 启动Access 可看到如图9 1所示的对话框 在MicrosoftAccess对话框中 选择 空Access数据库 然后单击 确定 按钮 打开 文件新建数据库 对话框 如图9 2所示 单击 新建文件夹 图标 会弹出图9 3所示对话框 16 图9 1 17 图9 2 18 图9 3 19 在图9 3所示 新文件夹 对话框中输入你取的名称 如 mydb 然后单击 确定 按钮 将返回 文件新建数据库 对话框 但路径已经改变 如图9 4所示 图9 4 20 在 文件新建数据库 对话框的 文件名 框中输入你要建的数据库的名字 如 mydb1 然后单击 创建 按钮 即可打开 数据库窗口 如图9 5所示 图9 5 21 双击 通过输入数据创建表 将打开 表 窗口如图9 6所示 在这里可输入你要保存的数据 在 字段1 上右击选择 重命名列 可输入 姓名 同样可将 字段2 改写为 年龄 字段3 改写为 工资 字段4 改写为 电话 字段5 改写为 地址 字段6 改写为 出生日期 并填写相应的数据 如图9 7所示 22 图9 6 23 图9 7 24 如果这次的数据都输入完了 可单击MicrosoftAccess的窗口的 文件 保存 菜单 将出现 另存为 对话框 如图9 8所示 在 表名称 栏中填写你的表名称如 S1 然后单击 确定 按钮 会出现一个icrosoftAccess的提示对话框 如图9 9所示 图9 9提示你应该定义一个主关键字 单击 是 按钮 将会直接为你增加一个ID字段 如图9 10所示 图9 10中所示的 表 窗口已经显示出你定义的表名 S1 也可看到ID字段自动输入的数值1 2 至此 一个Access表S1就建好了 你可单击MicrosoftAccess窗口右上角的按钮 关闭MicrosoftAccess窗口 结束建表的工作 如果你要向表S1输入数据 可直接打开表S1继续输入的工作 25 图9 8 26 图9 9 27 图9 10 28 9 3搭建DSN桥梁 先来说明什么是ODBC ODBC是一种访问数据库的方法 只要系统中有相应的ODBC驱动程序 任何程序就可以通过ODBC操纵数据库 比如系统中有Access的ODBC驱动程序 那么即使你没有Access软件 也可以在你的ASP程序中间对一个Access的数据库进行加 删 改记录的操作 而且根本不用知道这个数据库是放在哪里 只要写出SQL语句 ODBC驱动程序就会帮你做一切事情 29 用ODBC时 经常见到DSN这个名词 DSN DateSourceName 即数据源名称 在给ODBC驱动程序传SQL指令时 即是用DSN来告诉它到底操作的是哪一个数据库 如果数据库的平台变了 比如改用了SQLServer的数据库 只要其中表的结构没变 就不用改写程序 只要重新在系统中配置DSN就行了 由此可见 DSN是应用程序和数据库之间的桥梁 要通过ODBC访问数据库 前提就是必须配置好DSN 即架好桥梁 一个DSN必须包含如下一些信息 DSN的名字 就是给这座桥取个名字 当程序访问数据库时 给系统传的就是这个名字 而不是数据库的实际名称 ODBC驱动程序类型 只有指出驱动程序类型 在操作数据库时 系统才会知道调哪个ODBC驱动程序来服务 30 数据库 必须指定这座桥到底连接的是哪个数据库 但不同的数据库系统指定数据库名字的方法有些不同 这座桥是架在系统之中的 所以Windows95 98提供了一个工具来完成这件事 即控制面板中的32位ODBC 或Windows2000 NT中 控制面板 管理工具 的用户DSN 系统DSN 文件DSN 一般要用系统DSN 因为这样可以让所有在该系统上操作的人都能使用这个DSN 1 单击Windows95 98 开始 设置 控制面板 打开 控制面板 窗口 如图9 11 a 所示 或Windows2000 NT中 控制面板 管理工具 如图9 11 b 所示 31 图9 11 a 32 图9 11 b 33 2 双击图标 ODBC数据源 32位 或 数据源 ODBC 将弹出 ODBC数据源管理器 对话框 如图9 12所示 选择 系统DSN 标签 3 在图9 12中单击 添加 按钮 将弹出 创建新数据源 对话框 如图9 13所示 选择 MicrosoftAccessDrive 选项 单击 完成 按钮 将弹出 ODBCMicrosoftAccess安装 对话框 如图9 14所示 34 图9 12 35 图9 13 36 图9 14 37 4 在图9 14中的 数据源 栏中输入你希望指定的DSN名称 如 QL 然后单击 数据库 栏中 数据库 下的 选取 按钮 将打开 选择数据库 对话框 如图9 15所示 在图9 15中先在目录下选择数据库存放的路径 再选择要使用的数据库 例如 C MyDocuments mydb mydb1 mdb 然后单击 确定 按钮就大功告成了 以后可以用 ql 来访问数据库 C myDocuments mydb mydb1 mdb 而不用直接使用文件名 C MyDocuments mydb mydb1 mdb 这样做的好处是 一旦改变了文件名或存放地 就不必一个一个地修改程序中所有该数据库的名称 而只需修改DSN中的配置就可以了 38 图9 15 以上步骤完成后 在ASP程序中即可利用DSN与数据库mydb1 mdb中的表S1建立联系了 39 9 4访问数据库中的数据 9 4 1使用Recordset对象处理结果对于检索数据 检查结果和更改数据库 ADO提供了Recordset对象 正如它的名称所暗示的那样 是对记录的设置 Recordset对象有许多可以使用的特性 可根据不同的查询条件限制 检索并且显示一组数据库文件的记录 Recordset对象还保持查询返回的记录的位置 它返回第一个检索到的记录 但允许你一次一项逐步扫描其他结果 40 根据Recordset对象的指针类型的属性设置 可以滚动和更新记录 指针可以让你在一组记录中定位到特定的项 指针还用于检索和检查记录 然后在这些记录的基础上执行操作 Recordset对象还有一些属性 可用于精确地控制指针的行为 提高检查和更新结果的能力 下面通过例子来看看如何使用Recordset对象 例9 11 查询并显示数据库表中数据的程序 41 姓名为 年龄为 工资为 9 11 asp执行的结果如图9 16所示 42 图9 16 43 语法格式 功能 使用Recordset对象可返回已经建立连接的数据库中的数据 44 说明 第一行是声明rs为建立的Recordset对象的实例 这个语句不能少 第二行是以Recordset对象的Open方法连接并发出数据查询 其中的 数据查询信息 由SQL请求命令语句组成 数据库连接信息 由 DNS 数据源名称 UID 登录名称 PWD 密码 组成 数据源的登录名称和密码可在建立数据源时通过 高级 选项进行设置 登录名称和密码也可以省略不设 第三行 rs 字段名称 确定输出哪些数据字段 45 第四行为Recordset对象的rs close方法 将释放Recordset对象及其相关的对象 但close方法不会将Recordset对象从内存里清除 如果你不再需要这个对象了 要使用setrs nothing 这个语句可以精确地清除这个对象 注意 当打开一个数据库的表时 如果这个表中包含若干条记录 则当前的记录指针指向第一条记录 所以 例子中显示的数据是表S1中的第一条记录的数据 46 例9 12 显示数据库表中所有数据的程序 姓名为 年龄为 工资为 47 图9 17 9 12 asp执行的结果如图9 17所示 可看到在S1中要求的数据都显示了出来 48 这里使用了while wend循环 并使用了Recordset对象的MoveNext方法 将记录指针向下移动一行 下面列出了所创建的RecordSet对象 游标 的一些属性和方法 rs EOF 记录指针在记录的尾部 rs BOF 记录指针在记录的头部 rs Fields Count RecordSet对象的字段总数 rs i Name 第i个字段的名称 i由0算起到rs Fields Count 1 rs i 读取第i个字段的数据 i由0算起到rs Fields Count 1 rs 字段名称 读取指定字段的数据 rs RecordCount 游标中的数据记录总数 49 rs MoveNext 将指针移到下一个记录 rs MovePrev 将指针移到上一个记录 rs MoveFirst 将指针移到第一个记录 rs MoveLast 将指针移到最后一个记录 rs Move n 将指针移到第n个记录 n由0算起 rs MoveNumRecords Start NumRecords 是一个正负数运算式 设定当前记录位置的移动数目 start 是一个可选的项目 用来指定记录起始的标签 rs Close 关闭RecordSet对象 50 9 4 2使用Connection对象1 向数据库插入数据ADO提供了Connection对象 用于建立和管理应用程序和ODBC数据库之间的连接 Connection对象具有各种属性和方法 可以使用它们打开和关闭数据库连接 并且发出查询请求来更新信息 下面的脚本使用Connection对象的Execute方法发出SQLInsert命令向数据库中的表发出查询 该命令并将数据插入到指定的数据库表中 例9 13 将新的数据插入到数据库表文件里的程序 Setcn Server CreateObject ADODB Connection 51 cn Open DSN ql strSQL InsertIntoS1 姓名 年龄 工资 电话 地址 出生日期 Values Jose 34 8000 64455 广州 1960 03 23 cn Execute strSQL 在浏览器中执行9 13 asp文件 在状态栏中出现 完成 后 虽然浏览器窗口中没有内容 但此时打开Access中的数据库mydb1 从S1表中可看出9 13 asp文件中列出的数据都插入表中了 而且每执行一次9 13 asp文件就会向表S1插入一个相同的记录 S1表中是执行了三次的结果 如图9 18所示 52 图9 18 53 从这个例子可以看到数据库mydb1中的S1表被插入了数据 插入的方法总结如下 语法格式 54 功能 在已经建立连接的数据库中插入数据 说明 第一行创建Connection对象的实例 第二行打开数据库连接 其中的 数据库连接信息 与前面Recordset对象的Open方法中的说明相同 第三行为设置的SOL字符串变量 使用了SQL插入数据的语句 第四行用Connection对象的Execute方法 发出结构化查询语言 SQL 查询数据库源并插入数据 其他两行与Recordset对象类似 55 2 更改数据库中的数据除了SQLInsert命令以外 还可以使用SQLUpdate和Delete命令更改和删除数据库信息 用SQLUpdate命令 你可以改变数据库表中各字段的值 看看下面的例子 例9 14 使用Update命令将S1表中每个 姓名 字段包含 Jose 记录的 姓名 字段更改为 王红 的程序 56 图9 19 在浏览器中执行9 14 asp文件 在状态栏中出现 完成 后 可打开Access中的数据库mydb1 从S1表中可以看出 姓名 字段下的 Jose 被改写为 王红 了 如图9 19所示 57 在这个例子中直接在cn Execute后面写了SQL字符串 与上例的效果是一样的 在更改数据时 Update命令会将满足条件的所有记录中的数据进行更改 你要更改个别记录中的字段时可多加一些限制条件 3 删除数据库中的记录要想从数据库表中删除特定的记录 可使用SQLDelete命令 例9 15 使用Delete命令将S1表中 ID 字段为5的记录删除 58 在浏览器中执行9 15 asp文件 在状态栏中出现 完成 后 可打开Access中的数据库mydb1 从S1表中可看出 ID 为5的记录已经被删除了 如图9 20所示 59 图9 20 60 在使用SQLDelete命令时 必须谨慎从事 当使用不带Where子句的Delete命令时 它将删除表中的所有行 一定要包含SQLWhere子句来指定要删除的确切行 4 将对数据库文件的修改结果显示出来可以一起使用Connection对象和Recordset对象 利用Recordset对象的方法和属性就能解决这个问题了 例9 16 在一个文件中使用Connection对象更改数据库中的数据 使用Recordset对象返回数据库更改后的数据 61 62 S1表ID姓名年龄工资 rs MoveNextloop 在浏览器中执行9 16 asp文件 从浏览器中可看出S1表数据更改的结果 如图9 21所示 63 图9 21 64 注意 同时使用Recordset对象时 只有其打开方式中的连接数据库方法有点变化 只需写上cn即可 表示使用Connection对象打开的连接通道 如例子中的语句 rs OpenstrSQL cn5 ConnectionTimeout设置连接超时活动的突然增长可能使数据库服务器变得十分笨拙 大量增加建立数据库连接的时间 结果是 过长的连接延时将降低数据库的性能 用Connection对象的ConnectionTimeout属性 可以限制放弃连接尝试并发出错误消息之前应用程序等待的时间 例如 下面的脚本设置ConnectionTimeout属性 在取消连接尝试之前等待20秒 65 Setcn Server CreateObject ADODB Connection cn ConnectionTimeout 20cn Open DSN ql 默认的ConnectionTimeout属性是30秒 注意 在将ConnectionTimeout属性合并到数据库应用程序之前 一定要确保连接提供程序和数据源支持该属性 6 共享同一个Connection对象通道Connection对象最重要的特色之一就是可供多个Recordset对象共享同一个Connection对象的通道 看下例 66 例9 17 在一个文件中使用Connection对象建立连接通道 多次使用Recordset对象返回数据库中的信息 并将数据信息使用表格显示出来 fori 0tors fields count 1Response Write rs i name nextwhilenotrs EOFResponse Write 67 fori 0tors fields count 1v rs i ifisnull v thenv Response Write CStr v nextrs MoveNextwendResponse Write endsub 68 S1表姓名 年龄和工资S1表姓名 地址和电话 69 在浏览器中执行9 17 asp文件 从浏览器中可看出查询S1表的结果 如图9 22所示 70 图9 22 71 这个例子中的程序命令可分为三部分 第一部分建立了过程t rs 该过程可以传入以Recordset对象实例为参数 并以表格输出该Recordset对象内的所有字段的数据 第二部分建立了Connection对象的实例 并打开了连接到数据库ql的通道 第三部分建立Recordset对象实例rs1和rs2 并进行查询 然后调用过程t rs 用表格输出查询结果 注意 rs fields count表示Recordset对象查询的总字段数目 rs i name可输出Recordset对象查询的第i个字段的名称 利用这两个命令你不用知道数据库表中的结构 即可对数据库进行查询了 本例中还用到了isnull函数 用来判定变量v是否为NULL值 即是否为空 72 9 5在客户端访问数据库 9 5 1在客户端浏览器向数据库添加数据 例9 18 先建立一个输入页面 姓名年龄 73 工资电话地址出生日期将9 18 asp文件修饰一下可建立一个输入页面 执行的结果如图9 23所示 74 图9 23 75 例9 19 编写向数据库插入从输入页面接收到的数据文件 文件名为9 19 asp sz Request Form xm Request Form nl Request Form gz Request Form dh Request Form dz Request Form rq Setobj Server CreateObject ADODB Connection obj Open ql into db InsertIntoS1 姓名 年龄 工资 电话 地址 出生日期 Values sz 76 obj Execute into db obj Close 当在图9 23中填写好数据 单击 提交 按钮后 会看到程序直接执行了9 19 asp文件 你可看到状态栏中出现 完成 这时你再打开表S1 可看到页面上填写的数据已经填写到里面了 如图9 24所示 可以让用户在浏览网页的过程中填写记录了 77 图9 24 78 9 5 2在客户端输入查询条件并显示查询结果为了更清楚 更直接地了解SQL语法在ASP中的应用 先将查询的所有核心过程写成一个名为q的过程 然后利用ASP的服务器端包容功能调用该过程 例9 20 以下是建立q过程的代码 将其保存为q inc文件 并置于虚拟目录asp下 subq inputquery setcn server createobject adodb connection 79 cn open DSN ql setrstemp cn execute inputquery howmanyfields rstemp fields count 1 统计数据库中的列数 80 81 82 此例定义了过程q 在下面几个ASP程序中只要加入想要使用的SQL查询语句 并调用过程q就可以非常方便地得到查询结果 其中 rstemp fields count为要查询的字段的个数 rstemp i name为查询的字段名称 rstemp i 为相应字段的值 例9 21 按地址进行查询 程序文件名为9 21 asp 地址 83 按地址查询的结果 sql Select FromS1Where地址 Request name callq sql 84 在图9 25所示的页面中输入你想查询的人的地址如 广州 单击 查询 按钮后 即可看到查询的结果 如图9 25下方的表格中所示 该程序分为三部分 第一部分建立了输入的界面 第二部分写了SQL查询语句 第三部分写了包含q inc文件的语句 该例子显示了数据库表S1中地址为 广州 的所有记录 85 图9 25 86 注意 在写接收到的字符串时一定要这样写 Request name 在Request name 的外面包围了三种符号 最里面是 然后是双引号 最后是单引号 例9 22 按姓名进行模糊查询 姓名 inputtype reset value 复原 87 name B2 按姓名查询的结果 88 在图9 26所示的页面中输入你想查询的人的姓名或姓 如 张 单击 查询 按钮后 即可看到所有姓张的人的记录 如图9 26下方表格中所示 在这里使用了SQLWhere选项中的like条件表达式 在like后面的字符表达式中可包含通配符 代表一个或一串任意字符 89 图9 26 90 例9 23 按年龄和地址进行组合查询 本程序文件名为9 23 asp 年龄 91 地址 按年龄和地址查询的结果 92 Request nl and地址 Request dz callq sql 93 在图9 27所示的页面中输入你想查询的人的年龄和地址 如 20 和 北京 单击 查询 按钮后 可看到所有大于等于20岁并且地址为 北京 的人的记录 如图9 27所示 在例子中使用了SQLWhere选项中的条件表达式 年龄 Request nl and地址 Request dz 编写一个页面 将可以进行的输入和查询列在一个页面上 如下例 94 图9 27 95 例9 24 一个简单动态网站的主页程序 本程序文件名为9 24 asp 输入和查询的总页面这是 好朋友 网站 欢迎你光临 如果你想成为 好朋友 中的一员 96 请到这里填写资料 你想按 姓名 查询好朋友 可单击这里你想按 地址 查询好朋友 可单击这里你想按 年龄和地址 查询好朋友 可单击这里 97 图9 28 98 9 6用Command对象改善查询 ADO的Recordset对象用来记录由数据库所取得的数据库的对象 Connection对象则是提供客户端应用程序与数据库的联络管道 而Command对象所担任的是整个应用程序系统的 信息传递 角色 它对数据库提出数据查询信息 告诉数据库 请为我搜索某个表中的数据 搜索某个字段中的数据 搜索的数据应该满足什么条件 把这些满足符合要求的数据分别存放在Recordset对象内然后返回到浏览器上 99 通过Command对象 可以像用Connection对象和Recordset对象那样执行查询 惟一的不同在于用Command对象可以在数据库源上准备 编译查询条件 而且可以反复使用一组不同的值来发出查询 这种方式的编译查询的优点是 可以最大程度地减少向现有查询重复发出修改的请求所需的时间 另外 还可以在执行之前通过查询的可变部分的选项 使SQL查询保持局部未定义 下面还是通过例子来说明 9 6 1用Command对象向数据库插入数据 例9 25 先建立一个为题库中输入数据的程序页面 只要根据表S2的结构将9 18 asp修改一下即可 本程序文件名为9 25 asp 100 为管理信息系统课程准备题库年份题型1 填空题 101 2 单选题3 判断题4 多选题5 简述题6 论述题7 设计题题号题目内容标准答案 102 103 9 25 asp文件建立的输入页面如图9 29所示 当你在图9 29中填写好数据 单击 提交 按钮后 你会看到直接执行了9 26 asp文件 接着在状态栏中会出现 完成 这时你再打开表S2可看到页面上填写的题目已经填写到题库里面了 104 图9 29 105 例9 26 用Command对象向数据库插入从输入页面 图9 29 接收到的数据 本程序文件名为9 26 asp Setcm Server CreateObject ADODB Command Setcn Server CreateObject ADODB Connection cn Open ql Setcm ActiveConnection cncm CommandText InsertIntoS2 年份 题型 序号 题目 标准答案 学生解答 Values 106 cm CommandType 1cm Parameters Appendcm CreateParameter 年份 200 25 cm Parameters Appendcm CreateParameter 题型 200 25 cm Parameters Appendcm CreateParameter 序号 200 25 cm Parameters Appendcm CreateParameter 题目 200 25 cm Parameters Appendcm CreateParameter 标准答案 200 255 cm Parameters Appendcm CreateParameter 学生解答 200 255 cm 年份 Request nf cm 题型 Request tx cm 序号 Request th cm 题目 Request nr 107 cm 标准答案 Request dan cm 学生解答 Request jd cm Execute 这个例子的功能就是将接收到的数据插入到数据库文件中 这个问题在9 19 asp中已经解决了 这里只是用来说明使用Command对象 以及使用Command对象插入数据的优越性 从这个例子可总结出使用Command对象的方法如下 语法格式 108 109 功能 使用Command对象可对已经建立连接的数据库中的数据进行灵活的查询并可返回数据 说明 第1行和最后一行为asp语句开始和结束的标志 第2行是声明cm为Command对象的实例 这个语句不能少 第3行是采用Command对象的ActiveConnection属性来设定Command对象与Connection通道的连接关系 当然 你要先用Connection对象建立与数据库的连接通道 如例9 26中的语句 cn Open q1 就是采用Connection对象的Open方法打开数据源 ql 也可直接使用下面的语句直接建立与数据库的链接 110 第4行cm CommandText 数据查询信息 其中的 数据查询信息 由SQL语句 数据库表文件名称或子程序组成 如例9 26中的语句 INSERTINTOS2 年份 题型 序号 题目 标准答案 学生解答 VALUES 为SQL语句 第5行 cm CommandType 数字 指定第4行中 数据据查询信息 的类型 数字为1表示为SQL语句 可省略 数字为2表示为数据库表文件名称 数字为4表示子程序名称 数字为8表示未知的请求信息类型 指定 数据查询信息 的类型可加快查询的速度 111 第6行cm Parameters Appendcm CreateParameter name type direction size value 增加一个Parameter对象到Parameter集合上 Parameter集合包含所有的Parameter对象 使用Parameter集合来存取Parameter对象 类似于使用Field集合来存取Recordset对象 其中的参数说明如下 name可选参数 是一个说明Parameter名称的字符串 可以作为该Parameter对象名称 Type参数类型 可选参数 参数值为200表示字符串值 132表示用户定义的变量 20表示8字节长的整数 14表示固定精度的数值 129表示ASCII字符串 6表示货币单位 8字节长 7表示日期类型值 133表示编码为 yyyymmdd 的日期类型 134表示编码为 hhmmss 的时间类型 135表示编码为 yyyymmddhhmmss 的日期时间类型 112 direction可选参数 控制Parameter对象的读写模式 参数值为1允许数据输入至该参数当中 表示可传送数据到数据库服务器上 2允许数据输出至该参数当中 表示用来得到Command对象执行操作后数据库服务器的输出值 3允许数据输入 输出至该参数当中 表示用来传送数据给数据库服务器及从数据库服务器上接收信息 4允许从

温馨提示

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

评论

0/150

提交评论