WEB程序设计


第一章:WEB程序发展历史
第二章:WEB程序工作原理
第三章:主流WEB程序介绍
  ASP技术(微软推出的基于COM组件以Vbscript,Jscript为脚本语言服务器端程序)
ASP(Active Server Pages)是Web服务器端的开发环境,ActiveX 技术的一种。 利用它可以产生运行动态的、交互的、高性能的服务应用程序。
优点:学习简单,编写容易 。
缺点:执行效率一般,安全性不高。
  PHP技术(完全开放源码)
优点:可运行在WIN 和 UNIX,LINUX平台下,完全免费,执行效率高适合中小型网站系统。
缺点:技术支持差,配置环境困难,代码不规范,学习相对困难。
  JSP技术(Sun公司开发基于JAVA的服务器端程序)
    优点:可运行在WIN 和 UNIX,LINUX平台下,技术支持强大,安全型高,执行效率高,跨平台好,适合超大型网站系统和数据库系统。
     缺点:学习困难,资料少
  CGI(Common Gateway Interface 公共网关接口)
   优点:可运行在WIN 和 UNIX,LINUX平台下,支持多种低级语言如C/C++,安全型最高,跨平台好。
     缺点:编写困难,执行效率最低。
第四章:VB Script脚本入门讲解
VBScript语句是一种基于VB的一种脚本语言,主要用于WEB服务器端的程序开发,我们这里只介绍一些简单的语句,主要是操作数据库的几种常见的语句。
A定义变量dim语句
  dim a,b
  a=10
  b=”ok!”
注意:定义的变量可以是数值型,也可以是字符或者其他类型的

B简单的控制流程语句
  1. If 条件1 then
      语句1
elseif 条件2 then
      语句2
else
      语句3
endif
  2.while 条件
    语句
  wend
  3.for count=1 to n step m
  语句1
  exit for
  语句2
next

第五章:结构化数据库入门讲解
SQL: Structured Quevy Language(结构化查询语言)的缩写.
DBMS:DATA BASE MANAGE SYSTEM(数据库管理系统)的缩写

常见简单的结构化数据库:access
常见的DBMS: MS SQL SERVER ,MYSQL
DBMS与普通结构化数据库的区别: DBMS更加安全高效,DBMS不允许直接访问数据库文件,必须通过其管理系统来访问相关数据库,能够支持大容量的并发访问。
SQL参考手册
    SQL是Structured Quevy Language(结构化查询语言)的缩写。SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言。在使用它时,只需要发出“做什么”的命令,“怎么做”是不用使用者考虑的。SQL功能强大、简单易学、使用方便,已经成为了数据库操作的基础,并且现在几乎所有的数据库均支持SQL。
  ##1    二、SQL数据库数据体系结构
      SQL数据库的数据体系结构基本上是三级结构,但使用术语与传统关系模型术语不同。在SQL中,关系模式(模式)称为“基本表”(base table);存储模式(内模式)称为“存储文件”(stored file);子模式(外模式)称为“视图”(view);元组称为“行”(row);属性称为“列”(column)。名称对称如^00100009a^:
  ##1    三、SQL语言的组成
      在正式学习SQL语言之前,首先让我们对SQL语言有一个基本认识,介绍一下SQL语言的组成:
      1.一个SQL数据库是表(Table)的集合,它由一个或多个SQL模式定义。
      2.一个SQL表由行集构成,一行是列的序列(集合),每列与行对应一个数据项。
      3.一个表或者是一个基本表或者是一个视图。基本表是实际存储在数据库的表,而视图是由若干基本表或其他视图构成的表的定义。
      4.一个基本表可以跨一个或多个存储文件,一个存储文件也可存放一个或多个基本表。每个存储文件与外部存储上一个物理文件对应。
      5.用户可以用SQL语句对视图和基本表进行查询等操作。在用户角度来看,视图和基本表是一样的,没有区别,都是关系(表格)。
      6.SQL用户可以是应用程序,也可以是终端用户。SQL语句可嵌入在宿主语言的程序中使用,宿主语言有FORTRAN,COBOL,PASCAL,PL/I,C和Ada语言等。SQL用户也能作为独立的用户接口,供交互环境下的终端用户使用。
  ##1    四、对数据库进行操作
      SQL包括了所有对数据库的操作,主要是由4个部分组成:
      1.数据定义:这一部分又称为“SQL  DDL”,定义数据库的逻辑结构,包括定义数据库、基本表、视图和索引4部分。
      2.数据操纵:这一部分又称为“SQL  DML”,其中包括数据查询和数据更新两大类操作,其中数据更新又包括插入、删除和更新三种操作。
      3.数据控制:对用户访问数据的控制有基本表和视图的授权、完整性规则的描述,事务控制语句等。
      4.嵌入式SQL语言的使用规定:规定SQL语句在宿主语言的程序中使用的规则。
      下面我们将分别介绍:
  ##2    (一)数据定义
      SQL数据定义功能包括定义数据库、基本表、索引和视图。
      首先,让我们了解一下SQL所提供的基本数据类型:(如^00100009b^)
      1.数据库的建立与删除
      (1)建立数据库:数据库是一个包括了多个基本表的数据集,其语句格式为:
      CREATE   DATABASE  <数据库名>  [其它参数]
      其中,<数据库名>在系统中必须是唯一的,不能重复,不然将导致数据存取失误。[其它参数]因具体数据库实现系统不同而异。
      例:要建立项目管理数据库(xmmanage),其语句应为:
      CREATE   DATABASE  xmmanage
      (2) 数据库的删除:将数据库及其全部内容从系统中删除。
      其语句格式为:DROP   DATABASE  <数据库名>
      例:删除项目管理数据库(xmmanage),其语句应为:
      DROP   DATABASE  xmmanage
      2.基本表的定义及变更
      本身独立存在的表称为基本表,在SQL语言中一个关系唯一对应一个基本表。基本表的定义指建立基本关系模式,而变更则是指对数据库中已存在的基本表进行删除与修改。
      (1)基本表的定义:基本表是非导出关系,其定义涉及表名、列名及数据类型等,其语句格式为:
      CREATE   TABLE[<数据库名>.]<表名>
      (<列名>   数据类型  [缺省值]  [NOT  NULL / NULL]
      [,<列名>   数据类型  [缺省值]  [NOT  NULL / NULL]]......
      [,UNIQUE  (列名[,列名]......)]
      [,PRIMARY   KEY(列名)]
      [,FOREIGN   KEY(列名[,列名]......)REFERENCE <表名>(列名[,列名]......)]
      [,CHECK(条件)]  [其它参数])
      其中,〈数据库名〉.]指出将新建立的表存放于该数据库中;
      新建的表由两部分组成:其一为表和一组列名,其二是实际存放的数据(即可在定义表的同时,直接存放数据到表中);
      列名为用户自定义的易于理解的名称,列名中不能使用空格;
      数据类型为上面所介绍的几种标准数据类型;
      [NOT  NULL/NULL]指出该列是否允许存放空值,SQL语言支持空值的概念,所谓空值是“不知道”或“无意义”的值,值得注意的是数据“0”和空格都不是空值,系统一般默认允许为空值,所以当不允许为空值时,必须明确使用NOT  NULL;
      [,UNIQUE]将列按照其规定的顺序进行排列,如不指定排列顺序,则按列的定义顺序排列;
      [PRIMARY   KEY]用于指定表的主键(即关系中的主属性),实体完整性约束条件规定:主键必须是唯一的,非空的;
      [,FOREIGN  KEY  (列名[,列名]......)  REFERENCE<表名>(列名[,列名]......)]是用于指定外键参照完整性约束条件,FOREIGN  KEY指定相关列为外键,其参照对象为另外一个表的指定列,即使用REFERENCE引入的外表中的列,当不指定外表列名时,系统将默认其列名与参照键的列名相同,要注意的是:使用外键时必须使用参照,另外数据的外键参照完整性约束条件规定:外键的值要么与相对应的主键相同,要么为空值(具体由实现系统不同而异)
      [,CHECK]用于使用指定条件对存入表中的数据进行检查,以确定其合法性,提高数据的安全性。
      例:要建立一个学生情况表(student)
      CREATE  TABLE  student  //创建基本表student
      (st_class  CHAR(8),// 定义列st_class班级,数据类型为8位定长字符串
      st_no  CHAR(10)  NOT  NULL,//定义列st_no学号,类型为10位定长字符串,非空
      st_name  CHAR(8) NOT  NULL,//定义列st_name姓名,类型为8位定长字符串,非空
      st_sex CHAR(2),//定义列st_sex性别,类型为2位定长字符串
      st_age SMALLINT,//定义列st_age年龄,类型为短整型
      PRIMARY  KEY (st_no))//定义st_no学号为主键。
      例:要建立课程设置表(subject)
      CREATE  TABLE  subject//创建基本表subject
      (su_no  CHAR(4) NOT  NULL,// 定义列su_no课号,类型为4位定长字符串,非空
      su_subject CHAR(20) NOT  NULL,// 定义列su_subject课程名,类型为20位定长字符串,非空
      su_credit  INTEGER,// 定义列su_credit学分,类型为长整数
      su_period  INTEGER,//定义列su_period学时,类型为长整数
      su_preno CHAR(4),//定义列su_preno先修课号,类型为4位定长字符串
      PRIMARY  KEY(su_no))//定义su_no课号为主键。
      例:要建立学生选课表(score)
      CREATE TABLE score  //创建基本表score
      (st_no  CHAR(10),//定义列st_no学号,类型为10位定长字符串
      su_no  CHAR(4),//定义列su_no课号,类型为4位定长字符串
      sc_score  INTEGER  NULL,//定义列sc_score,类型为长整形,可以为空值
      FOREIGN  KEY (st_no) REFERENCE  student,//从表student中引入参照外键st_no,以确保本表与表student的关联与同步
      FOREIGN  KEY (suno) REFERENCE  subject)//从表subject中引入参照外键su_no,以确保本表与表subject的关联与同步
      (2)基本表的删除:用以从数据库中删除一个基本表及其全部内容,其语句格式为:
      DROP TABLE[<数据库名>.]表名
      例如:将上面建立的表都删除
      DROP TABLE  student,subject,score
      (3)基本表的修改:在基本表建立并使用一段时间后,可能需要根据实际要求对基本表的结构进行修改,即增加新的属性或删除属性。
      增加属性的语句格式为:
      ALTER TABLE [<数据库名>.]表名 ADD
      (<列名> 数据类型 [缺省值] [NOT  NULL / NULL]
      [,<列名> 数据类型[缺省值][NOT  NULL / NULL]]......
      [,UNIQUE (列名[,列名]......)]
      [,PRIMARY  KEY(列名)]
      [,FOREIGN  KEY(列名[,列名]......) REFERENCE  <表名>(列名[,列名]......)]
      [,CHECK(条件)][其它参数])
      例如:在基本表student中加入列stborn出生日期,数据类型为DATE,且不能为空值
      ALTER  TABLE  student  ADD  (stborn  DATE  NOT  NULL)
      删除属性的语句格式为:
      ALTER  TABLE  [<数据库名>.]表名  DROP
      ( <列名>  数据类型 [缺省值][NOT  NULL / NULL]
      [,<列名>  数据类型 [缺省值][NOT  NULL / NULL]]......)
      例如:将基本表student中的列st_age删除
      ALTER  TABLE student  DROP (st_age)
      3.视图定义与删除
      在SQL中,视图是外模式一级数据结构的基本单位。它是从一个或几个基本表中导出的表,是从现有基本表中抽取若干子集组成用户的“专用表”。这种构造方式必须使用SQL中的SELECT语句来实现。在定义一个视图时,只是把其定义存放在系统的数据中,而并不直接存储视图对应的数据,直到用户使用视图时才去求得对应的数据。
      (1)视图的定义:定义视图可以使用CREATE  VIEW语句实现,其语句格式为:
      CREATE  VIEW  视图名 AS SELECT语句
      从一个基本表中导出视图:
      例:从基本表student中导出只包括女学生情况的视图
      CREATE  VIEW  WOMANVIEW  AS //创建一个视图WOMANVIEW
      SELECT  st_class,st_no,st_name,st_age //选择列st_class,st_no,st_name,st_age显示
      FROM  student //从基本表student引入
      WHERE st_sex=‘女’//引入条件为性别为“女”,注意字符变量都使用单引号引用
      从多个基本表中导出视图:
      例如:从基本表student和score中导出只包括女学生且分数在60分以上的视图
      CREATEVIEW  WOMAN_SCORE  AS //定义视图WOMANSCORE
      SELECT  student.st_class,student.st_no,student.st_name,student.st_age,score.sc_score //有选择性显示相关列
      FROM  student.score //从基本表student和score中引入
      WHERE  student.st_sex=‘女’AND   score.sc_score>=60  AND  student.st_no=score.st_no  //选择条件:性别为“女” 且分数在60分以上。并使用st_no将两表联系起来。
      以后如果进行这一视图的应用,则只需使用语句
      SELECT * FROM WOMAN_SCORE //其中“*”为通配符,代表所有元素
      (2)视图的删除:用于删除已不再使用的视图,其语句格式如下:
      DROP  VIEW  视图名
      例:将上面建立的WOMAN_SCORE视图删除
      DROP  VIEW  WOMAN_SCORE
      4.索引的定义与删除
      索引属于物理存储概念,而不是逻辑的概念。在SQL中抛弃了索引概念,直接使用主键概念。值得一提的是,有些关系DBMS同时包括索引机制和主键机制,这里我们推荐使用主键机制,因为它对系统资源占用较低且效率较高。
      (1)索引的定义:索引是建立在基本表之上的,其语句格式为:
      CREATE [UNIQUE] INDEX  索引名  ON
      [<数据库名>.]表名(列名 [ASC/DESC][,列名 [ASC/DESC]]......)
      这里,保留字UNIQUE表示基本表中的索引值不允许重复,若缺省则表示索引值在表中允许重复;DESC表示按索引键降序排列,若缺省或ASC表示升序排列。
      例:对基本表student中的st_no和st_age建立索引,分别为升序与降序,且索引值不允许重复
      CREATE  UNIQUE  INDEX  STINDEX  ON//创建索引STINDEX
      student(st_no ASC,st_age DESC)//对student中的st_no和st_age建立索引
      (2)索引的删除:
      DROP  INDEX  索引名
      例:删除上面建立的索引STINDEX
      DROP  INDEX  STINDEX
  ##2    (二)数据查询
      SQL是一种查询功能很强的语言,只要是数据库存在的数据,总能通过适当的方法将它从数据库中查找出来。SQL中的查询语句只有一个:SELECT,它可与其它语句配合完成所有的查询功能。SELECT语句的完整语法,可以有6个子句。完整的语法如下:
      SELECT  目标表的列名或列表达式集合
      FROM 基本表或(和)视图集合
     [WHERE条件表达式]
     [GROUP BY列名集合
     [HAVING组条件表达式]]
     [ORDER BY列名[集合]…]
      整个语句的语义如下:从FROM子句中列出的表中,选择满足WHERE子句中给出的条件表达式的元组,然后按GROUPBY子句(分组子句)中指定列的值分组,再提取满足HAVING子句中组条件表达式的那些组,按SELECT子句给出的列名或列表达式求值输出。ORDER子句(排序子句)是对输出的目标表进行重新排序,并可附加说明ASC(升序)或DESC(降序)排列。
      在WHERE子句中的条件表达式F中可出现下列操作符和运算函数:
      算术比较运算符:<,<=,>,>=,=,<>。
      逻辑运算符:AND,OR,NOT。
      集合运算符:UNION(并),INTERSECT(交),EXCEPT(差)。
      集合成员资格运算符:IN,NOT  IN
      谓词:EXISTS(存在量词),ALL,SOME,UNIQUE。
      聚合函数:AVG(平均值),MIN(最小值),MAX(最大值),SUM(和),COUNT(计数)。
      F中运算对象还可以是另一个SELECT语句,即SELECT语句可以嵌套。
      上面只是列出了WHERE子句中可出现的几种主要操作,由于WHERE子句中的条件表达式可以很复杂,因此SELECT句型能表达的语义远比其数学原形要复杂得多。
      下面,我们以上面所建立的三个基本表为例,演示一下SELECT的应用:
      1.无条件查询
      例:找出所有学生的的选课情况
      SELECT st_no,su_no
      FROM score
      例:找出所有学生的情况
      SELECT*
      FROM student
      “*”为通配符,表示查找FROM中所指出关系的所有属性的值。
      2.条件查询
      条件查询即带有WHERE子句的查询,所要查询的对象必须满足WHERE子句给出的条件。
      例:找出任何一门课成绩在70以上的学生情况、课号及分数
      SELECT UNIQUE student.st_class,student.st_no,student.st_name,student.st_sex,student.st_age,score.su_no,score.score
      FROM student,score
      WHERE score.score>=70 AND score.stno=student.st_no
      这里使用UNIQUE是不从查询结果集中去掉重复行,如果使用DISTINCT则会去掉重复行。另外逻辑运算符的优先顺序为NOT→AND→OR。
      例:找出课程号为c02的,考试成绩不及格的学生
      SELECT st_no
      FROM score
   &nbssp;  WHERE su_no=‘c02’AND score<60
      3.排序查询
      排序查询是指将查询结果按指定属性的升序(ASC)或降序(DESC)排列,由ORDER BY子句指明。
      例:查找不及格的课程,并将结果按课程号从大到小排列
      SELECT UNIQUE su_no
      FROM score
      WHERE score<60
      ORDER BY su_no DESC
      4.嵌套查询
      嵌套查询是指WHERE子句中又包含SELECT子句,它用于较复杂的跨多个基本表查询的情况。
      例:查找课程编号为c03且课程成绩在80分以上的学生的学号、姓名
      SELECT st_no,st_name
      FROM  student
      WHERE stno IN (SELECT  st_no
                      FROM   score
                      WHERE  su_no=‘c03’ AND score>80 )
      这里需要明确的是:当查询涉及多个基本表时用嵌套查询逐次求解层次分明,具有结构程序设计特点。在嵌套查询中,IN是常用到的谓词。若用户能确切知道内层查询返回的是单值,那么也可用算术比较运算符表示用户的要求。
      5.计算查询
      计算查询是指通过系统提供的特定函数(聚合函数)在语句中的直接使用而获得某些只有经过计算才能得到的结果。常用的函数有:
      COUNT(*)    计算元组的个数
      COUNT(列名) 对某一列中的值计算个数
      SUM(列名)   求某一列值的总和(此列值是数值型)
      AVG(列名)   求某一列值的平均值(此列值是数值型)
      MAX(列名)   求某一列值中的最大值
      MIN(列名)   求某一列值中的最小值
      例:求男学生的总人数和平均年龄
      SELECT COUNT(*),AVG(st_age)
      FROM student
      WHERE st_sex=‘男’
      例:统计选修了课程的学生的人数
      SELECT COUNT(DISTINCT st_no)
      FROM score
      注意:这里一定要加入DISTINCT,因为有的学生可能选修了多门课程,但统计时只能按1人统计,所以要使用DISTINCT进行过滤。
  ##2    (三) 数据更新
      数据更新包括数据插入、删除和修改操作。它们分别由INSERT语句,DELETE语句及UPDATE语句完成。这些操作都可在任何基本表上进行,但在视图上有所限制。其中,当视图是由单个基本表导出时,可进行插入和修改操作,但不能进行删除操作;当视图是从多个基本表中导出时,上述三种操作都不能进行。
      1.数据插入
      将数据插入SQL的基本表有两种方式:一种是单元组的插入,另一种是多元组的插入。
      单元组的插入:向基本表score中插入一个成绩元组(100002,c02,95),可使用以下语句:
      INSERT INTO score(st_no,su_no,score) VALUES(‘100002’,‘c02’,95)
      由此,可以给出单元组的插入语句格式:
      INSERT INTO表名(列名1[,列名2]…) VALUES(列值1[,列值2]…)
      其中,列名序列为要插入值的列名集合,列值序列为要插入的对应值。若插入的是一个表的全部列值,则列名可以省略不写如上面的(st_no,su_no,score)可以省去;若插入的是表的部分列值,则必须列出相应列名,此时,该关系中未列出的列名取空值。
      多元组的插入:这是一种把SELECT语句查询结果插入到某个已知的基本表中的方法。
      例如:需要在表score中求出每个学生的平均成绩,并保留在某个表中。此时可以先创建一个新的基本表stu_avggrade,再用INSERT语句把表score中求得的每一个学生的平均成绩(用SELECT求得)插入至stu_avggrade中。
      CREATE TABLE stu_avggrade
      (st_no  CHAR(10) NOT  NULL,//定义列st_no学号,类型为10位定长字符串,非空
      age_grade SMALLINT  NOT  NULL )// 定义列age_grade平均分,类型为短整形,非空
      INSERT INTO stu_avggrade(st_no,age_grade)
      SELECT st_no,AVG(score)
      FROM   score
      GROUP  BY  st_no //因为要求每一个学生所有课程的平均成绩,必须按学号分组进行计算。
      2.数据删除
      SQL的删除操作是指从基本表中删除满足WHERE<条件表达式>的记录。如果没有WHERE子句,则删除表中全部记录,但表结构依然存在。其语句格式为:
      DELETE  FROM表名[WHERE  条件表达式]
      下面举例说明:
      单元组的删除:把学号为100002的学生从表student中删除,可用以下语句:
      DELETE FROM student
      WHERE st_no=‘100002’//因为学号为100002的学生在表student中只有一个,所以为单元组的删除
      多元组的删除:学号为100002的成绩从表score中删除,可用以下语句:
      DELETE FROM  score
      WHERE st_no=‘100002’//由于学号为100002的元组在表score中可能有多个,所以为多元组删除
      带有子查询的删除操作:删除所有不及格的学生记录,可用以下语句
      DELETE FROM student
      WHERE st_no IN
     (SELETE st_no
      FROM score
      WHERE score<60)
      3.数据修改
      修改语句是按SET子句中的表达式,在指定表中修改满足条件表达式的记录的相应列值。其语句格式如下:
      UPDATE 表名 SET  列名=列改变值[WHERE  条件表达式]
      例:把c02的课程名改为英语,可以用下列语句:
      UPDATE subject
      SET su_subject=‘英语’
      WHERE su_no=‘c02’
      例:将课程成绩达到70分的学生成绩,再提高10%
      UPDATE score
      SET score=1.1*score
      WHERE score>=70
      SQL的删除语句和修改语句中的WHERE子句用法与SELECT中WHERE子句用法相同。数据的删除和修改操作,实际上要先做SELECT查询操作,然后再把找到的元组删除或修改。
 
第六章:ASP入门讲解
A. ASP标识符
<%
asp语句
%>
B. ASP 内置对象讲解
    response对象:服务器端向客户端发送的信息对象,包括直接发送信息给浏览器,重新定向URL,或设置cookie值.
    request对象:客户端向服务器提出的请求.
    session对象:作为一个全局变量,在整个站点都生效,一般用于保存加密信息.
server对象:提供对服务器上方法和属性的访问. 
(a) response对象的一般使用方法
    比如:
        <%
        resposne.write("hello, welcome to asp!")
        %>
    在客户端浏览器就会看到  hello, welcome to asp! 这一段文字
      <%
    response.Redirect("www.sohu.com")
      %>
    如果执行这一段,则浏览器就会自动连接到 “搜狐” 的网址
  关于response对象的用法还有很多,大家可以研究研究
   request对象的一般使用方法
比如客户端向服务器提出的请求就是通过request对象来传递的
列如 :你在申请邮箱的所填写的个人信息就是通过该对象来将
      你所填写的信息传递给服务器的
比如:这是一段表单的代码,这是提供给客户填写信息的,填写完了按
      “提交”传递给request.asp文件处理后再存入服务器数据库
    <form name="form1" method="post" action="request.asp">
      <p>
      <input type="text" name="user">
      </p>
      <p>
      <input type="text" name="pass">
      </p>
      <p>
      <input type="submit" name="Submit" value="提交">
      </p>
</form>
那么request.asp该如何将其中的信息读入,在写入数据库,在这里就要用到
request对象了,下面我们就来分析request.asp的写法
<%
  dim name,password    (定义user和password两个变量)
  name=request.form(“user”)  (将表单中的user信息传给变量name)
  password=request.form(“pass”) (将表单中的pass信息传给变量password)
%>

C. ASP数据库简单操作教程
    <1>.数据库连接(用来单独编制连接文件conn.asp)
  <%
  dim db_name
  db_name="/bbs/db1/user.mdb"
Set conn = Server.CreateObject("ADODB.Connection")
  conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath(db_name)
  %>
Server.MapPath(db_name)用来将db_name的相对路径转换成服务器绝对路径
(用来连接bbs/db1/目录下的user.mdb数据库)
<2>显示数据库记录
  原理:将数据库中的记录一一显示到客户端浏览器,依次读出数据库中的每一条记录
        如果是从头到尾:用循环并判断指针是否到末      使用: not rs.eof
        如果是从尾到头:用循环并判断指针是否到开始    使用:not rs.bof
       
        <!--#include file=conn.asp-->    (包含conn.asp用来打开bbs/db1/目录下的user.mdb数据库)
        <%
          set rs=server.CreateObject("adodb.recordset")  (建立recordset对象)
          sqlstr="select * from message"  ---->(message为数据库中的一个数据表,即你要显示的数据所存放的数据表)
          rs.open sqlstr,conn,1,3        ---->(表示打开数据库的方式)
          rs.movefirst                    ---->(将指针移到第一条记录)
          while not rs.eof                ---->(判断指针是否到末尾)
          response.write(rs("name"))      ---->(显示数据表message中的name字段)
          rs.movenext                    ---->(将指针移动到下一条记录)
          wend                            ---->(循环结束)
------------------------------------------------------       
          rs.close
          conn.close                    这几句是用来关闭数据库
          set rs=nothing
          set conn=nothing
-------------------------------------------------------
        %>
        其中response对象是服务器向客户端浏览器发送的信息
<3>增加数据库记录
  增加数据库记录用到rs.addnew,rs.update两个函数
        <!--#include file=conn.asp-->    (包含conn.asp用来打开bbs/db1/目录下的user.mdb数据库)
        <%
          set rs=server.CreateObject("adodb.recordset")  (建立recordset对象)
          sqlstr="select * from message"  ---->(message为数据库中的一个数据表,即你要显示的数据所存放的数据表)
          rs.open sqlstr,conn,1,3        ---->(表示打开数据库的方式)
          rs.addnew                      新增加一条记录
          rs("name")="xx"                将xx的值传给name字段
          rs.update                      刷新数据库
------------------------------------------------------       
          rs.close
          conn.close                    这几句是用来关闭数据库
          set rs=nothing
          set conn=nothing
-------------------------------------------------------         
                   
        %>
<4>删除一条记录
  删除数据库记录主要用到rs.delete,rs.update
    <!--#include file=conn.asp-->    (包含conn.asp用来打开bbs/db1/目录下的user.mdb数据库)
        <%
          dim name
          name="xx"
          set rs=server.CreateObject("adodb.recordset")  (建立recordset对象)
          sqlstr="select * from message"  ---->(message为数据库中的一个数据表,即你要显示的数据所存放的数据表)
          rs.open sqlstr,conn,1,3        ---->(表示打开数据库的方式)
-------------------------------------------------------     
          while not rs.eof
          if rs.("name")=name then
            rs.delete
            rs.update            查询数据表中的name字段的值是否等于变量name的值"xx",如果符合就执行删除,
          else                  否则继续查询,直到指针到末尾为止
            rs.movenext
          emd if
          wend
------------------------------------------------------
------------------------------------------------------       
          rs.close
          conn.close                    这几句是用来关闭数据库
          set rs=nothing
          set conn=nothing
-------------------------------------------------------
        %>
<5>关于数据库的查询
  (a) 查询字段为字符型
      <%
      dim user,pass,qq,mail,message
      user=request.Form("user")
      pass=request.Form("pass")
      qq=request.Form("qq")
      mail=request.Form("mail")
      message=request.Form("message")
      if trim(user)&"x"="x" or trim(pass)&"x"="x" then    (检测user值和pass值是否为空,可以检测到空格)
        response.write("注册信息不能为空")
      else
      set rs=server.CreateObject("adodb.recordset")
      sqlstr="select * from user where user='"&user&"'"    (查询user数据表中的user字段其中user字段为字符型)
      rs.open sqlstr,conn,1,3
      if  rs.eof then
        rs.addnew
        rs("user")=user
        rs("pass")=pass
        rs("qq")=qq
        rs("mail")=mail
        rs("message")=message
        rs.update
        rs.close
        conn.close
        set rs=nothing
        set conn=nothing
        response.write("注册成功")
        end if
      rs.close
      conn.close
      set rs=nothing
      set conn=nothing
      response.write("注册重名")
      %>
  (b)查询字段为数字型
      <%
      dim num
      num=request.Form("num")
      set rs=server.CreateObject("adodb.recordset")
      sqlstr="select * from message where id="&num  (查询message数据表中id字段的值是否与num相等,其中id为数字型)
      rs.open sqlstr,conn,1,3
      if not rs.eof then
      rs.delete
      rs.update
      rs.close
      conn.close
      set rs=nothing
      set conn=nothing
      response.write("删除成功")
      end if
      rs.close
      conn.close
      set rs=nothing
      set conn=nothing
      response.write("删除失败")
      %>
       通过以上的几句代码我们就将表单中的数据读进来了,接下来我们要做的就是将
信息写入数据库了,写入数据库的方法上面都介绍了,这里就不一一复述了。
上机练习
 设计一个个人留言本(ASP+ACCESS)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值