利用 ASP 访问数据库的操作 一 建立数据库利用 SQL Server 或 Aceess Foxpro 建立一个数据库文件, 其中可以包含多张数据表, 数据表中可以包含一些记录 二 建立数据源一般说来, 以 ASP 访问数据库使用 ODBC 数据源 ODBC 支持多种类型的数据库, 只不过不同类型的数据库要使用对应的驱动程序负责对数据库的具体操作 因此, 要利用 ASP 技术从远程访问服务器上的数据库, 必须设置数据库的驱动程序, 使远程访问能够激活数据库对应的驱动程序, 从而打开数据库, 执行数据库的查询 修正和删除操作 这里, 我们假设要访问的数据库是 Microsoft Access 2000 平台的数据库文件, 因此我们的服务器上需要安装 Microsoft Access 2000 库文件的驱动程序 其实我们在服务器上安装 Office 2000 时就已经自动安装了 Microsoft Access 2000 的 ODBC 驱动程序, 此时需要我们做的工作就是把数据库文件指定为系统数据源, 并给予数据源名称, 以供 ASP 程序的运行 下面我们以数据库 xssjk.mdb( 学生数据库 ) 为例说明数据源的设置方法 : 在服务器 Windows 2000 Server 的界面下 : 开始 设置 控制面板 管理工具, 选择 数据源 (ODBC) 图标, 打开 ODBC 数据源设置窗口 ; 选择选项卡 系统 DSN, 打开设置系统数据源对话框, 在此对话框中选择 添加 按钮, 系统提示各种形式数据库驱动程序, 此时我们可以选择 Driver do Microsoft Access (*.Mdb) 然后选择 完成 按钮, 启动 Access 2000 数据库文件驱动程序, 并进入 Access 2000 数据源配置窗口 在 Access 2000 数据源配置窗口的 数据源名 : 文字框中输入要定义的数据源名称, 数据源名称可由用户根据需要随意规定 这里我们要把服务器 C 盘 DBASE 目录下的研究生数据库 xssjk.mdb 定义为数据源, 因此我们可以定义数据源名称为 XXYJS 正确地定义了数据源名称后, 单击此对话框上的按钮 选取, 在系统提示出的服务器磁盘目录列表框中选择服务器的 C 盘 DBASE 目录, 并选取文件 xxsjk.mdb 最后对自己的设置 确定 1
这样, 我们已经把 xssjk.mdb 数据库设置为系统数据源, 并命名为 XXYJS, 在以后的远程查询操作中, 我们就可以使用数据源名称 XXYJS 来代表研究生数据库了 三 ASP 中与数据库操作有关的语句 1 说明 ASP 语句一般嵌入在 HTML 语言中, 以 <% 作为标志 也即使说, 所有的 ASP 语句都必须被 <% 括起来 2 建立与数据源的连接: 方法 1: DSNstr= Data Source= 数据源名称 ;password= 数据库密码 cn.connectionstring=dsnstr cn.open 方法 2: cn.open Dsn= 数据源名称 ;uid= 用户名 ;pwd= 数据库密码 3 执行数据库操作方法 1: SQLstr= SQL 语言的数据库操作语句 set rs=server.createobject("adodb.recordset") rs.open SQLstr,cn 方法 2: sql="sql 语言的数据库操作语句 Set Rs=coconn.Execute(sql) 4 循环显示数据表内容 <%if rs.eof then response.write 找不到!!! else <% while not rs.eof <% =rs( 字段名 ) <% rs2.movenext Wend 四 ASP 中与常见的控制语句 1 输出信息 response.write 输出信息 2 读取表单中的信息 2
request.form( 字段名 ) 3 用户在 ASP 程序间传递私有信息 Session( 变量名称 ) 例如 Session( stuid )= 01012018 结束 Session: Session.abandon 4 分支语句 if 条件式 then 语句序列 else 语句序列 5 循环语句 While 条件式循环体语句 wend 五 示例 : 一套完整的 Asp 查询系统 : 表单程序文件 :chaxdata.htm <html> <body bgcolor="#ffffcc" lang=zh-cn link=blue vlink=purple style='tab-interval:21.0pt'> <div class=section1> <p align="center"><b><font size="6" color="#800000" face=" 楷体 _GB2312"> 操作系统 </font></b></p> <hr noshade color="#0000ff"> <p style="line-height: 200%"><b><span style='font-family: 仿宋 _GB2312'> 说明 :</span><span style='font-size:13.5pt; font-family: 仿宋 _GB2312;color:red'> 请您在下面的文字框中输入查阅资料的密码和题目认证序号 注意各类输入前后不要留空格, 然后选择 [ 开始阅读 ] 就可以了 <span lang=en-us><o:p></o:p></span></span></b></p> <form action="/commit/zixv/zxzd.asp" method=post> <p align=center style='text-align:center'><b><span style='font-size:13.5pt; font-family: 仿宋 _GB2312;color:teal'> 密码 : <span lang=en-us><input TYPE="password" NAME="pass"> 题目认证 : <INPUT TYPE="Password" NAME="tmrz"><o:p></o:p></span></span></b></p> <INPUT TYPE="Hidden" NAME="tmlb" value="fff"> <p class=msonormal align=center style='text-align:center'><span lang=en-us style='font-family: 仿宋体 '><INPUT TYPE="submit" VALUE=" 开始阅读 "><INPUT TYPE="reset" VALUE=" 重新设置 "><o:p></o:p></span></p> </form> </body> </html> 文件 :zxzd.asp 该文件应放在可执行目录下 <% DSNstr="Data Source=zxsjk;password=mxl@123456" SQLstr="SELECT * FROM [user] Where usernm ='"+request.form("tmrz")+"' and passwd='"+request.form("pass")+"'" cn.connectionstring=dsnstr 3
cn.open set rs=server.createobject("adodb.recordset") rs.open SQLstr,cn <% if rs.eof then <div align="center"> <center> <P> </P><P> </P> <table border="1" width="500" bordercolorlight="#808000" bordercolordark="#00ffff" bgcolor="#ff9988"> <tr> <td> <p align="center"><font size="5" color="#ff0000"><b> 密码错误!!!</b></font></td> <tr> <td> <p align="center"> 你可能不是本教学班的学生!</td> </table> </center> <% else <% strtmlb=request.form("tmlb") if strtmlb<>rs("grant") then <div align="center"> <center> <P> </P><P> </P> <table border="1" width="500" bordercolorlight="#808000" bordercolordark="#00ffff" bgcolor="#99ccff"> <tr> <td> <p align="center"><font size="5" color="#ff0000"><b> 您的题目认证标志错误!!!</b></font></td> <tr> <td> <p align="center"> 你不能从系统中查到所需资料!</td> </table> </center> <% else SQLstr2="SELECT tmh,tmmc,tmfn,loca,tmlb,tmtype FROM [zixv] Where tmtype='"+strtmlb+"' order by tmh asc" set rs2=server.createobject("adodb.recordset") rs2.open SQLstr2,cn if not rs2.eof then <html> <head> <meta HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=gb_2312-80"> <title> 自学指导资料查阅 </title> </head> <body bgcolor="#ffcc99"> <font FACE=" 黑体 " SIZE="5" COLOR="#ff00ff"><b><P ALIGN="Center"> 自学指导资料查阅 </P></b></captain></FONT> <P ALIGN="Center"><table BORDER="1" BGCOLOR="Red" CELLSPACING="0" width="100%"> <THEAD> <tr> <th BGCOLOR="#c0c3c0" BORDERCOLOR="#000000" width="10%"><font SIZE="3" FACE=" 黑体 " COLOR="Blue"> 题目号 </font></th> <th BGCOLOR="#c0c3c0" BORDERCOLOR="#000000" width="55%"><font SIZE="3" 4
FACE=" 黑体 " COLOR="Blue"> 题目名称 </font></th> <th BGCOLOR="#c0c3c0" BORDERCOLOR="#000000" width="15%"><font SIZE="3" FACE=" 黑体 " COLOR="Blue"> 下载 </font></th> <th BGCOLOR="#c0c3c0" BORDERCOLOR="#000000" width="20%"><font SIZE="3" FACE=" 黑体 " COLOR="Blue"> 类别 </font></th> </THEAD> <TBODY> <% while not rs2.eof <tr VALIGN="TOP"> <td BGCOLOR="Green" BORDERCOLOR="#c0c0c0" width="10%"><font SIZE="3" FACE=" 宋体 " COLOR="#ffffff"><%=rs2("tmh")<br> </font></td> <td BGCOLOR="Green" BORDERCOLOR="#c0c0c0" width="55%"><font SIZE="3" FACE=" 宋体 " COLOR="#ffffff"><%=rs2("tmmc")<br> </font></td> <td BGCOLOR="Green" BORDERCOLOR="#c0c0c0" width="15%"><font SIZE="3" FACE=" 宋体 " COLOR="#ffffff"> <a href="/zixv/<%=rs2("loca")/<%=rs2("tmfn")" OnClick="window.status='Open Document, Please waiting...';return true" OnMouseOver="window.status='Mouse is Overing...';return true" target="_blank"> 下载资料 </a><br> </font></td> <td BGCOLOR="Green" BORDERCOLOR="#c0c0c0" width="20%"><font SIZE="3" FACE=" 宋体 " COLOR="#ffffff"><%=rs2("tmlb")<br></font></td> <% rs2.movenext Wend cn.close </TBODY> <TFOOT> </TFOOT> </table></p> </font> </body> </html> 5