七种武器之碧玉刀txt:帮忙解释这个ASP程序的含义

来源:百度文库 编辑:高校问答 时间:2024/05/05 18:50:07
<%@ language=JScript %>
<!--#include file="adojavas.inc" -->
<%
conn = Server.CreateObject("ADODB.Connection");
conn.Open("driver={Microsoft Access Driver (*.mdb)};dbq=" + Server.MapPath("szg.mdb"));

rs = Server.CreateObject("ADODB.Recordset");

sql = "黑名单";

rs.Open(sql, conn, adOpenStatic);
//参数解析
QueryString =Request("button_sc")(1);
if (QueryString.substring(6,7) == "0")
{
ok = QueryString.substring(7,8);
}
else
{
ok = QueryString.substring(6,8);
}
ok=parseInt(ok);
RecNo =ok;
PageNo = (RecNo-1) / 10 + 1;
PageNo=parseInt(PageNo);
Response.Write("<h1><center>考分详细信息</center></h1>");
Response.Write("<body bgcolor=beige>");
if (!(0==RecNo))
{
rs.AbsolutePosition=RecNo;
szg="<h2>" + rs.Fields(1).Value + "同志的信息如下:</h2>学号是:" + rs.Fields(0).Value;
szg=szg + "<br>GRE考分为:" + rs.Fields(2).Value + "<br>TOEFL的考分为:" + rs.Fields(3).Value;
Response.Write(szg);
}
Response.Write("</body>");
%>
我要的是“每一句”的含义。麻烦了!谢谢!

1、<%@ language=JScript %>
声明使用的语言为JS
2、<!--#include file="adojavas.inc" -->
调用adojavas.inc文件
3、<%
conn = Server.CreateObject("ADODB.Connection");
conn.Open("driver={Microsoft Access Driver (*.mdb)};dbq=" + Server.MapPath("szg.mdb"));
ASP与ACCESS连接,DRIVER那句是ACCESS的驱动,SZG.MDB是数据库名称
4、rs = Server.CreateObject("ADODB.Recordset");
sql = "黑名单";
rs.Open(sql, conn, adOpenStatic);
打开数据库
//参数解析
5、QueryString =Request("button_sc")(1);
调取button_sc的值不赋给变量QueryString
6、if (QueryString.substring(6,7) == "0")
{
ok = QueryString.substring(7,8);
}
else
{
ok = QueryString.substring(6,8);
}
以上是如果传过来的字符串的第6-7位是-的话则把第7-8位赋给OK变量,否则则把第6-8位赋给OK变量
7、ok=parseInt(ok);
对OK变量进行数值整数转换
8、RecNo =ok;
将OK值赋给RecNo
9、PageNo = (RecNo-1) / 10 + 1;
对RecNo进行计算操作,减1除10后加1
10、PageNo=parseInt(PageNo);
再次对OK变量进行数值整数转换
11、Response.Write("<h1><center>考分详细信息</center></h1>");
Response.Write("<body bgcolor=beige>");
1号字体居中显示并定义了下面字的颜色
12、if (!(0==RecNo))
如果取得的RecNo的值不等于0,则进行{}之间的操作
{
13、rs.AbsolutePosition=RecNo;
取得第RecNo条记录的资料
14、 szg="<h2>" + rs.Fields(1).Value + "同志的信息如下:</h2>学号是:" + rs.Fields(0).Value;
szg=szg + "<br>GRE考分为:" + rs.Fields(2).Value + "<br>TOEFL的考分为:" + rs.Fields(3).Value;
以上是两次赋值操作,将姓名、学号、考分、总分字段及相关文字赋给szg变量
14、Response.Write(szg);
写出szg变量
}
15、Response.Write("</body>");
HTML结束语
16、%>
JS结束语
----------------------------
一、Request 对象

   可以使用 Request 对象访问任何基于 HTTP 请求传递的所有信息,包括从 HTML 表格用 POST 方法或 GET 方法传递的参数、cookie 和用户认证。Request 对象使您能够访问客户端发送给服务器的二进制数据。

   Request 的语法 :

   Request[. 集合 | 属性 | 方法 ]( 变量 )

   在这里作者将挑选一些常用的对象语法进行分析

   1、Form

   Form 集合通过使用 POST 方法的表格检索邮送到 HTTP 请求正文中的表格元素的值。

   语法

   Request.Form(element)[(index)|.Count]

   参数

   element 指定集合要检索的表格元素的名称。

   index 可选参数,使用该参数可以访问某参数中多个值中的一个。它可以是 1 到 Request.Form(parameter).Count 之间的任意整数。

   Count 集合中元素的个数

   Form 集合按请求正文中参数的名称来索引。Request.Form(element) 的值是请求正文中所有 element 值的数组。通过调用 Request.Form(element).Count 来确定参数中值的个数。如果参数未关联多个值,则计数为 1。如果找不到参数,计数为 0。要引用有多个值的表格元素中的单个值,必须指定 index 值。index 参数可以是从 1 到 Request.Form(element).Count 中的任意数字。如果引用多个表格参数中的一个,而未指定 index 值,返回的数据将是以逗号分隔的字符串。

这个ASP程序好像不全,还有SQL语句不清楚。
这个程序大致作用是:
1. 用ADO方式建立一个Access数据库szg.mdb的连接[1-7行];
2. 根据sql字符串中的SQL查询语句创建一个ADO记录集[Recordset)[8-9行];
3. 执行一个特定条件的查询,并判断是否查询到所要的信息[10-20行];
4. 根据查询结果设定页面,给出“考分详细信息”表头并居中布局,给出信息并标注页号,而后设定页面的颜色[21-25行];
5. 判断查询结果不为0后生成页面信息。ACCESS数据库szg.mdb内一个表的第2字段的值作为XX同志学号,第3字段的值作为GRE考分,第4字段的值作为TOEFL的考分[26-34行];

这个ASP程序未给出SQL语句(sql="黑名单"),所以不知道打开了szg.mdb数据库中的那一个表(是否就是“黑名单”),同时好象还少了几行程序。
由于水平有限就这能做这样的讲解了。

<%@ language=JScript %>
//指定ASP的语言是JScript
<!--#include file="adojavas.inc" -->
//包含一个adojavas.inc的文件
<%
conn = Server.CreateObject("ADODB.Connection");
//刨建一个用来和数据库联结的对象
conn.Open("driver={Microsoft Access Driver (*.mdb)};dbq=" + Server.MapPath("szg.mdb"));
//用这个联结打开一个数据库szg.mdb,从而构成一个该联结的实例
rs = Server.CreateObject("ADODB.Recordset");
//同样,建一个记录集对象
sql = "黑名单";
//一个SQL语句,不过好象是错误的,正确的应该是这样的,sql="select * from 黑名单"具体怎么样具体考虑
rs.Open(sql, conn, adOpenStatic);
//用上一个记录集对象,通过已经建立的联结,打开一个记录集,构成一个相应的记录集实例
//参数解析
QueryString =Request("button_sc")(1);
//从前台的form表单中接收“button_sc”对象的值,后面的那个(1)是不应该存在的,我写过和看过许多ASP程序,都没有见过这样的表示

//后面的是逻辑表示,你应该可以看得懂的。并且楼上有一高手已经说得很清楚了。呵呵,祝你好运
if (QueryString.substring(6,7) == "0")
{
ok = QueryString.substring(7,8);
}
else
{
ok = QueryString.substring(6,8);
}
ok=parseInt(ok);
RecNo =ok;
PageNo = (RecNo-1) / 10 + 1;
PageNo=parseInt(PageNo);
Response.Write("<h1><center>考分详细信息</center></h1>");
Response.Write("<body bgcolor=beige>");
if (!(0==RecNo))
{
rs.AbsolutePosition=RecNo;
szg="<h2>" + rs.Fields(1).Value + "同志的信息如下:</h2>学号是:" + rs.Fields(0).Value;
szg=szg + "<br>GRE考分为:" + rs.Fields(2).Value + "<br>TOEFL的考分为:" + rs.Fields(3).Value;
Response.Write(szg);
}
Response.Write("</body>");
%>
1、<%@ language=JScript %>
声明使用的语言为JS
2、<!--#include file="adojavas.inc" -->
调用adojavas.inc文件
3、<%
conn = Server.CreateObject("ADODB.Connection");
conn.Open("driver={Microsoft Access Driver (*.mdb)};dbq=" + Server.MapPath("szg.mdb"));
ASP与ACCESS连接,DRIVER那句是ACCESS的驱动,SZG.MDB是数据库名称
4、rs = Server.CreateObject("ADODB.Recordset");
sql = "黑名单";
rs.Open(sql, conn, adOpenStatic);
打开数据库
//参数解析
5、QueryString =Request("button_sc")(1);
调取button_sc的值不赋给变量QueryString
6、if (QueryString.substring(6,7) == "0")
{
ok = QueryString.substring(7,8);
}
else
{
ok = QueryString.substring(6,8);
}
以上是如果传过来的字符串的第6-7位是-的话则把第7-8位赋给OK变量,否则则把第6-8位赋给OK变量
7、ok=parseInt(ok);
对OK变量进行数值整数转换
8、RecNo =ok;
将OK值赋给RecNo
9、PageNo = (RecNo-1) / 10 + 1;
对RecNo进行计算操作,减1除10后加1
10、PageNo=parseInt(PageNo);
再次对OK变量进行数值整数转换
11、Response.Write("<h1><center>考分详细信息</center></h1>");
Response.Write("<body bgcolor=beige>");
1号字体居中显示并定义了下面字的颜色
12、if (!(0==RecNo))
如果取得的RecNo的值不等于0,则进行{}之间的操作
{
13、rs.AbsolutePosition=RecNo;
取得第RecNo条记录的资料
14、 szg="<h2>" + rs.Fields(1).Value + "同志的信息如下:</h2>学号是:" + rs.Fields(0).Value;
szg=szg + "<br>GRE考分为:" + rs.Fields(2).Value + "<br>TOEFL的考分为:" + rs.Fields(3).Value;
以上是两次赋值操作,将姓名、学号、考分、总分字段及相关文字赋给szg变量
14、Response.Write(szg);
写出szg变量
}
15、Response.Write("</body>");
HTML结束语
16、%>
JS结束语

<%@ language=JScript %>
//指定ASP的语言是JScript
<!--#include file="adojavas.inc" -->
//包含一个adojavas.inc的文件
<%
conn = Server.CreateObject("ADODB.Connection");
//刨建一个用来和数据库联结的对象
conn.Open("driver={Microsoft Access Driver (*.mdb)};dbq=" + Server.MapPath("szg.mdb"));
//用这个联结打开一个数据库szg.mdb,从而构成一个该联结的实例
rs = Server.CreateObject("ADODB.Recordset");
//同样,建一个记录集对象
sql = "黑名单";
//一个SQL语句,不过好象是错误的,正确的应该是这样的,sql="select * from 黑名单"具体怎么样具体考虑
rs.Open(sql, conn, adOpenStatic);
//用上一个记录集对象,通过已经建立的联结,打开一个记录集,构成一个相应的记录集实例
//参数解析
QueryString =Request("button_sc")(1);
//从前台的form表单中接收“button_sc”对象的值,后面的那个(1)是不应该存在的,我写过和看过许多ASP程序,都没有见过这样的表示

//后面的是逻辑表示,你应该可以看得懂的。并且楼上有一高手已经说得很清楚了。呵呵,祝你好运
if (QueryString.substring(6,7) == "0")
{
ok = QueryString.substring(7,8);
}
else
{
ok = QueryString.substring(6,8);
}
ok=parseInt(ok);
RecNo =ok;
PageNo = (RecNo-1) / 10 + 1;
PageNo=parseInt(PageNo);
Response.Write("<h1><center>考分详细信息</center></h1>");
Response.Write("<body bgcolor=beige>");
if (!(0==RecNo))
{
rs.AbsolutePosition=RecNo;
szg="<h2>" + rs.Fields(1).Value + "同志的信息如下:</h2>学号是:" + rs.Fields(0).Value;
szg=szg + "<br>GRE考分为:" + rs.Fields(2).Value + "<br>TOEFL的考分为:" + rs.Fields(3).Value;
Response.Write(szg);
}
Response.Write("</body>");
%>

我想你也是高手吧 何必在这里发帖子,
应该到CSDN.net里弄,
好象文中有几处错误,
sql=@"sql语句";
rs.open(conn,sql,adOpenStatic);
Request.QueryString["变量"].tostring();
此外:Request传过来的应是string 类型的怎么会有PageNo = (RecNo-1) / 10 + 1;语句