第五章 通用网关接口 CGI 简介 Htm l Html + CGI Html + asp 网页可以处理动态的信息
区别: –CGI : 程序与 HTML 页面分离,需要通过一定的接口实 现通信 –ASP: 程序与 HTML 页面同一编程 –
上海震旦学院 日期: …………………… ASP: 一个页面 一个 HTML 网页 一个 CGI 程序
第六章 WEB 数据库基础 6.1WEB 数据库基本概念 –access 6.2 WEB 服务器介绍 数据库服务器
6.3 ODBC 、 ADO 与 WEB 数据库 1 了解 ODBC – 一套程序支持 Foxpro – 现要把系统升级到 SQL-server – ?重新编写程序 – 使用 ODBC, 原有的程序不必改变,只需蒋 数据库移植到 sql-server 。
创建和配置 ODBC 数据源 1) 进入 “ 控制面板 ” 设置 2) 打开 “ODBC 数据源 ” 3) 选择 “ 系统 DSN” 4) 单击 “ 添加 ” 5) 选择 “ Microsoft Visual Foxpro Driver” 后, 按 “ 完成 ”
6 完成配置 –Data Source Name : 应用程序访问数据库的名字 –database type : 选择 Free Table –path : Foxpro 数据库的文件名
2 ADO – 理解 ADO 对象 Connection: 代表到数据库源的联接 Recordset: 由数据库查询返回的记录 Field : 字段数据
ASP,ADO,ODBC 数据访问体系结构 ASP 应用程序 ADO ODBC FoxproACCESS SQL SERVER Oracle 数据提供者
ADO -- Active Data Object – 与编程语言无关的访问数据库的一组接口 ODBC -- Open Database Connectivity – 开放数据库连接, 为访问不同的数据库提供了同一的 接口. 使用 ODBC, 你可以连接到 foxpro,sql-server, Oracle, DB2, Sybase ….. SQL -- Structure Query Language – 结构化查询语言, 用于查询, 更新数据库
6.4.1 基础 1 Connection: 代表到数据库源的联接 –Set conn = server.createObject(“ADODB.Connection”) –Conn 新建的一个联接对象 2 Recordset: 由数据库查询返回的记录 –1 ) 连接到 ODBC conn.open "DSN = data_access" –2) set rs_student=Conn.Execute( “ 表名 ”) 3 Field : 字段数据 –Rs_student.fields(“ 字段名 ”).value 6.4 ASP 与数据库访问 student
数据库 表 字段
例题 : –access 数据库 school.mdb – 表 : student.dbf – 字段 : 学号。姓名,性别,出生日期 – 编制 显示数据库中内容的 ASP 程序
ADO SQLServer set conn=Server.CreateObject("ADODB.Connection") dsn="provider=sqloledb;data source=IP 或 server 名 ;initial catalog=DATABASE 名 ;User ID=caller;password=caller" conn.open dsn
学生名单 学号 姓名 <% set Conn = Server.CreateObject("ADODB.Connection") conn.open “DSN=data_access" set rs_student=conn.Execute(“student”) WHILE not rs_student.eof if rs_student(“ 性别 ” ) = ‘ 男 ’ then response.write rs_student(“ 学号 ") & " " & rs_student(“ 姓名 ") & " “ end if rs_student.moveNext Wend Rs_student.close conn.close %>
Recordset 的方法 – 当前纪录的概念 – 移动当前记录方法: moveNext 下一行 movePrevious 上一行 – 判断是否最后一行: Eof True 最后一行 False – 判断是否到了第一行: Bof True 第一行 False – 关闭表 rs_student.close – 关闭连接 conn.close
显示男生的数据 set rs_student=conn.Execute (“ Select 学号,姓名 from student where 性别 =‘ 男 ’ ”)
例题 : –access 数据库 school.mdb – 表 : student.dbf – 字段 : 学号。姓名,性别,出生日期 – 编制 显示数据库中内容的 ASP 程序 从最后一行开始显示
学生名单 学号 姓名 <% set Conn = Server.CreateObject("ADODB.Connection") conn.open “DSN=data_access" set rs_student=conn.Execute(“student”) rs_student.moveLast WHILE not rs_student.Bof response.write rs_student(“ 学号 ") & " " & rs_student(“ 姓名 ") & " " rs_student.movePrevious Wend Rs_student.close conn.close %>
将数据库数据显示在表格中 如何将用户输入的信息存入数据库? Select Insert into 表名(列名 1 ,列名 2…) values ( data1,data2,…) Insert into student( 学号,姓名,性别) values (’09’,’ 赵开 “,” 男 “)
学生名单表 学号 姓名 性别 <% set Conn = Server.CreateObject("ADODB.Connection") conn.open "DSN=data_access" set rs_student = conn.EXECute( "STUDENT") WHILE not rs_student.eof if rs_student(" 性别 ")=" 女 " then response.write " " else response.write " " end if response.write " " & rs_student(" 学号 ") & " " response.write " " & rs_student(" 姓名 ") & " " response.write " " & rs_student(" 性别 ") & " " response.write " " rs_student.moveNext Wend rs_student.close conn.close %>
如何将用户输入的信息存入数据库? 1 将数据插入到表中 –SQL 语句 :Insert into 表名(列名 1 ,列名 2…) – values ( data1,data2,…) 2 在网页中接收数据,并且存储到表中。 –1 )接收用户输入的数据 –2 )存储 数据库联接.execute( SQL 语句 ) WEB 服务器 ASP 网页 数据库服务器浏览器
Insert into student( 学号,姓名,性别) values (’09’,’ 赵开 “,” 男 “) conn.execute( “Insert into student( 学号,姓名,性别) values (’09’,’ 赵开 ‘,’ 男 ‘) ”) 更改数据 Update 表名 set 列名 1 = 值 1 ,列名 2= 值 2 , ….. Where 条件 例:将 02 号学生的姓名改为 “ 张三 ” Update student set 姓名 =“ 张三 ” where 学号 =“02”
<% set conn = server.createobject(“adodb.Connection") conn.open “DNS=data_access" conn.execute( “ insert into student ( 学号,姓名 ) values (‘0901’,’ 赵君 ‘) ") conn.close %>
实例: asp_input.asp 输入数据 asp_input_save.asp 接受输入、并存储到表中 Asp_input.asp: 学号 : 姓名 : 性别 : 男 女
<% no = request.form("no") name = request.form("name") sex = request.form("sex") sql = “insert into student( 学号, 姓名, 性别 ) values (‘” & no & " ’,’ " & name & " ’,’ " & sex & "') " set Conn = Server.CreateObject("ADODB.Connection") conn.open "DSN=data_access" conn.execute( sql ) conn.close response.write ( " 存储完毕! ") %>
作业: 一网页设计 –1 将 student 的数据显示在网页上 –2 将 student 的数据显示在网页的表格上 –3 将 student 的数据显示在网页的表格上,并且女生用红色 背景显示
二 设计一个模拟的购物网站,当一个用户选好商品后, 记录下他的选择。 –1 建立数据库: sale –2 建立表 1 ) 表 ware – 商品名 文本 20 – 人气 数字 整型 – 价格 数字 小数 精度 18 小数 2 2 ) 表 user –Userid 文本 6 –Password 文本 6 3 ) 表 stock –Userid 文本 6 – 商品名 文本 20 – 价格 数字 小数 精度 18 小数 2 – 数量 数字 整型 – 金额 数字 小数 精度 18 小数 2 – 日期 日期 / 时间
3 编写登录网页 lx_login.asp 按登录按钮后,由 lx_login_answer.asp 进行用户检查, 正确的,进入购物网页 ( lx_ware.asp) , 否则显示 “ 用户名或密码错! ” 4 编写用户选购商品的网页 lx_ware.asp – 按 “ 我要购买 ”, 由 lx_ware_answer.asp 接受数 据,并存储
上海震旦购物网站 用户名: 密 码:
XXX 欢迎你来到震旦购物网站 请选择商品: 商品名 价格 人气 网球 20 1 羽毛球 90 2 足球 90 2 采购数量: 按下 ‘ 我要购买 ’ 按钮,记录 采购数据到 stock, 显示 “ 谢谢你的支持! ”
学生表 student 字符 日期 学号 姓名 性别 出生日期 地址 01 蒋 男 aaaaa 02 王 女 bbbbbb 在计算计中画一张表格 – 表设计 Access Xxxxx.mdb 1 启动 access, 建立新的 数据库 school.mdb 2 使用表设计器建立新表(双击) 3 设计结束后,设置主键 4 存储 并且 命名表 (student) Access 简介
二修改表结构 :选中表,右键 — 选 “ 设计视图 ” 三输入数据:选中表,右键 — 选 “ 打开 ” 四 打开已经存在的数据库 五 建立 ODBC 数据源,连接到 school.mdb 1 启动 ODBC 设置 2 选 “ 系统 DSN” 3 选 “ 添加 ” 4 选 “ microsoft access driver “ 5 填写: 数据源名称: DSN_school 选择 数据库: school.mdb
第七章 DHTML 网页上的每一项内容可以被处理: – 文字 – 图形 处理方法: – 移动 – 改变文字颜色、内容等
function chgColor( colors ) window.event.srcElement.style.color=colors window.event.srcElement.style.fontsize="40" end function 上海震旦
购物 上海震旦模拟购物网站 用户名 : 密码 :
<% userid = request.form("userid") password = request.form("password") flag_finduser = 0 ' 是否有此用户标志 set Conn = Server.CreateObject("ADODB.Connection") conn.open "DSN=data_access" set rs_user = conn.execute( "user") WHILE not rs_user.eof if rs_user("userid") = userid and rs_user("password") =password then flag_finduser = 1 end if rs_user.moveNext Wend rs_user.close conn.close if flag_finduser = 1 then session("userid") = userid ' 保存用户名 Response.Redirect( "lx_ware.asp") else response.write " 用户名或密码错! " end if %>
欢迎你来到震 旦购物网站 请选择商品: 商品名 价格 人气 <% set Conn = Server.CreateObject("ADODB.Connection") conn.open "DSN=data_access" set rs_ware = conn.execute( "ware") WHILE not rs_ware.eof response.write " " response.write rs_ware(" 商品名 ") & "/" & rs_ware(" 价格 ") & "/" & rs_ware(" 人气 ") & " " rs_ware.moveNext Wend rs_ware.close conn.close %> 采购数量 :
<% userid = session("userid") warename = request.form("ware") quantity = request.form("quantity") set Conn = server.createObject("ADODB.Connection") conn.open "DSN=data_access" sql = "insert into stock(userid, 商品名, 数量 ) values ('" & userid & "','" & warename & "'," & quantity & ") " conn.execute( sql ) ' 更新人气 sql = “update ware set 人气 = 人气 +1 where 商品名 ='" & warename &"'" conn.execute( sql ) conn.close response.write ( " 存储完毕! ") %>