无标题文档
|
|
|
|
|
|
|
|
下一代互联网
  当前位置:EDU首页 > 教育信息化(旧) > 中国教育网络新版 > 技术荟萃 > 软件应用
如何实现多表查询集中处理
http://www.media.edu.cn 2008-08-19 作者:冯驰

学校教学系统网络化已成趋势,教学网站的后台管理模块要实现多个表的操作,其程序之繁琐令多数网管员为之却步。

学校网站的后台管理模块有学生信息表、账户信息表、报名表、课程信息表、教师信息表、教师任课信息表、资金表、资金日志表等等近20个表,管理员在网站维护中要经常浏览、编辑这些表的信息。表结构中的字段名称一般采用英文名称,但显示在网页上,为了增加可读性,我们采用中文的名称,这样不得不为每一个字段在网页上设置一个中文名称与英文名称对应起来。大家都知道,表的结构在一个系统运行过程中难免要进行修改,如增删一个字段或字段的名称、含义发生改变,那么我们的程序必须也要做出相应的修改,这无疑是一件很头疼的事情。 

处理以上问题,以下是一个解决办法:

首先,为每一个表xxx创建一个结构说明表xxx_stru,且每一个结构说明表的结构都一致,都只包含no(编号)、en(英文字段名)、cn(中文含义)、info(备注说明)四个字段。

如一个账户信息表account.dbf

create table     account(                    

account_no                     char(10),

start_time                      date,

cancel_time                    date,

password       char(10),

is_used    char(1),

class_no                       char(6),

user_type       char(1),

suplus     number(7,2),

is_enrolled      char(1),

name       cha(16));

account创建一个结构说明表account_stru.dbf

create table account_str(

no   number(2),

en   varchar2(20),

cn   varchar2(20),

info  varchar2(100));

第二,在结构说明表xxx_stru中填入xxx表中各个字段的编号、英文名称、中文含义、注释。

接上例:即向account_stru.dbf表中插入数据

insert into  account_stru(no,en,cn) values(1,'account_no','帐号');

insert into  account_stru(no,en,cn) values(2,'start_time','开户时间');

insert into  account_stru(no,en,cn) values(3,'cancel_time','注销时间');

insert into  account_stru(no,en,cn) values(4,'password','密码');

insert into  account_stru(no,en,cn,info) values(5,'is_used','是否可用','当出现异常如少钱时禁止');

insert into  account_stru(no,en,cn) values(6,'class_no','班号');

insert into  account_stru(no,en,cn) values(7,'SUPLUS','资金余额');

insert into  account_stru(no,en,cn) values(8,'IS_ENROLLED','是否注册');

insert into  account_stru(no,en,cn) values(9,'NAME','用户姓名');

insert into  account_stru(no,en,cn,info) values(10,'user_type','用户类别','t:教师;p:培训学员;z:自考;h:函授;o:管理员');

第三,将每一个表链接到同一个list.asp列表数据文件,该文件将集中处理每一个表的查询。如:

<a href="list.asp?name=账户信息&tablename=account">账户信息表</a>

<a href="list.asp?name=学生信息&tablename=student">学生信息表</a>

点击每一个链接,则显示一个表的数据。这里通过Get方式传递了nametablename两个变量,其中name变量是为了显示表的中文标题,tablename变量是为了将表的名称传递给list.asp程序的ADO数据库连接语句。

第四,list.asp程序的实现(部分程序)

<%

dim  fldnamearry,i,table,tname,stru,m,dd,fldval

set cn=server.createobject("adodb.connection")

 cnstr=application("oconn")

 cn.open cnstr

读出传递过来的数据:

table=request.querystring(tablename)

tname==request.querystring(name)

‘进行字符串组合,形成结构说明表的名称:

stru=table&"_stru"

‘建立结构说明表记录集

sqlstru="select * from "&stru

set rsstru = Server.CreateObject("ADODB.Recordset")

rsstru.open sqlstru,cn,3,1

'将字段名放入二维数组fldarry

fldnamearry=rsstru.getrows

rsstru.close

set rsstru=nothing

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

rs.cursorlocation=3

‘读出数据表中的数据

sql="select * from "&table

rs.open sql,cn,3,1

‘在页面上显示数据表的结构和数据

response.write "<table border=1 width=100% align=center cellpadding=0 "_

&"cellspacing=0 bordercolor=#006600 bordercolordark=#E8F5F7"_

&" bgcolor=#E8F5F7>"

‘显示表的结构,字段名称用结构说明表中的cn代替:

response.write "<tr align=center>"

for each objfield in rs.fields

for i=0 to ubound(fldnamearry,2)

fldname=trim(ucase(fldnamearry(1,i)))

if objfield.name=fldname then

response.write "<td bgcolor=#dddddd >"&fldnamearry(2,i)&"</td>"

end if

next

next

‘显示表中的数据:

do while not rs.eof

response.write "<tr align=center>"

for each objfield in rs.fields

if isnull(objfield.value) then

response.write "<td><font color=red>未填</font></td>"

else

response.write "<td><font color=blue>"_

&objfield.value&"</font></a></td>"

end if

next

response.write "</tr>"

rs.movenext

loop

response.write "</table>"

end if

%>

以上处理方法,减少了应用程序的数量,进而减少了程序出错的机率及程序维护工作量。而且结构说明表也帮助网站管理员更好地理解各个表的结构定义,利于网站远程教学系统的不断完善和后续开发工作的开展。
                                                         《中国教育网络》06年1-2月刊

页面功能 【字体:   】 【打印】 【关闭】 【联系我们
相关链接
  • 分步式教育资源管理系统的设计和实现
  • 基于Internet的智能导学系统设计
  • 相关链接
  • DVR技术支撑下基于问题的学习
  • 赛尔毕博Blackboard™7.1升级包
  • 相关链接
  • SFlow技术在网络安全管理中的应用
  • 批处理命令瞬间建好考试作业环境
  • 相关链接
  • Authorware流行网络的关键之处
  • 用开源软件构建数字校园
  • 相关链接
  • Excel中一键实现数据分布统计
  • 在excel下利用分类汇总快速统计数据
  • 无标题文档
    主管单位:中华人民共和国教育部  主办单位:教育部科技发展中心  承办单位:中国教育和科研计算机网CERNET
    《中国教育网络》编辑部 京ICP证060236号 联系电话:010-62603869
    建议使用800*600分辨率及Microsoft IE5.0版本以上浏览器
    copyright © 北京赛尔时代传媒文化有限公司 All Rights Reserved