通用网页查询函数的设计与应用(1)
从本学科出发,应着重选对国民经济具有一定实用价值和理论意义的课题。课题具有先进性,便于研究生提出新见解,特别是博士生必须有创新性的成果通用网页查询函数的设计与应用(1) 摘要:本文首先介绍了通用网页查询函数的设计思想,并给出了全部源代码及其应用。 关键词:数据库 WWW Internet ASP 计算机网络 1. 引言 随着人们对信息化潮流的逐渐认识,各种信息在Internet上的发布和检索就变得非常的重要。特别是使用B/S模式的信息发布和检索,由于它的简单性、灵活性,越来越得到了广泛的应用。现在,经常被人们采用的B/S模式的开发工具有ASP、PHP、JSP等,这些开发工具简单易学、功能强大,为各种信息在Internet上的发布和检索提供了强有力的帮助。但是,随着信息量的逐渐爆炸,如果仍然采用针对特定发布信息设计专用程序的传统办法的话,显然将导致信息发布的效率非常地低。为此,笔者研究了一种通用信息发布与检索的技术方案,使用这套方案,将极大地减轻开发者的工作量,节约成本。本文介绍的便是这套技术方案中的一个非常重要的组成部分基于ASP的通用网页查询函数的设计与应用。 . 通用网页查询函数的设计 通用网页查询函数的功能主要是:根据调用者提供的各种参数,在后台数据库管理系统中进行检索,最后将检索结果以二维数组的形式返回给调用者。为了实现上述功能,实现该函数的主要思想是:根据调用者提供的各种参数,生成对应的SQL语句,接下来与后台数据库管理系统建立连接、提取数据、断开连接,最后将检索结果以二维数组的形式返回给调用者。该函数的输入参数有:后台数据库管理系统的代号(如0代表SQLServer、1代表VFP等)、数据源名、表名(可以是单表,也可以是多表连接)或视图名、all/distinct关键字、top关键字、字段名数组、where条件、group by子句/order by字句、检索结果存放的二维数组名等。该函数的返回值为逻辑型,True代表查询过程中未出现错误,否则,若为False说明查询过程中出现了错误。下面给出经调试过的通用网页查询函数的源代码。function data_getting(param_database_code,param_dsn_name,param_table_name,param_all,param_top,param_field_names(),ByRef data(),param_condition,param_other,ByRef rcount,ByRef fcount,ByRef fieldsname() on error resume next '生成查询语句 if param_all=true then query="select " else query="select distinct " end if query=query+param_top+" " if param_field_names(0)="*" then '查询全部字段 query=query+" * " else d_g_i=0 fcount=0 for each item in param_field_names if param_field_names(d_g_i)"" then query=query+param_field_names(d_g_i)+"," fcount=fcount+1 '记录集列数 end if d_g_i=d_g_i+1 next end if query=left(query,len(query)-1)+" from "+param_table_name '去掉最后一个逗号(全部字段:去掉空格) if len(param_condition)>0 then query=query+" where "+param_condition end if if len(param_other)>0 then query=query+" "+param_other end if '打开记录集 set conntemp=("") =param_dsn_name Set rstemp=("") =conntemp if param_database_code=0 then 代表后台数据库是SQLSERVER =3 =1 else if param_database_code=1 then 代表后台数据库是VFP =1 =1 else 代表后台数据库是其它数据库管理系统(代码略) end if =query 判断查询过程中是否出现错误 if >0 then data_getting=false rcount=0 else 如果查询过程中未出现错误,将查询结果存放到指定的二维数组中 rcount= '记录集行数 if rcount=0 then data_getting=true else data_getting=true if param_field_names(0)="*" then '查询全部字段 fcount= end if ReDim data(rcount-1,fcount-1),fieldsname(fcount-1) for d_g_i=1 to rcount for d_g_j=1 to fcount data(d_g_i-1,d_g_j-1)=trim(d_g_j-1).value) if d_g_i=1 then fieldsname(d_g_j-1)=(d_g_j-1).name end if next next end if end if set rstemp=nothing set conntemp=nothing end function . 通用网页查询函数的应用 在笔者参与的各类基于Web的数据库应用系统的开发过程中,全部使用了前文给出的通用网页查询函数。利用语句(通用网页查询函数被保存为一个独立的文件data_),在需要进行数据查询的网页中,嵌入该函数,然后在ASP页面只需调用该函数,就能得到希望得到的查询结果,从而大大减轻了编程的工作量,并便于ASP页面的简化和美化。 . 结束语 本文给出的通用网页查询函数,以及笔者开发的其它的一些通用函数(用于执行一系列SQL命令的函数、用于调用数据库端存储过程的函数等),大大减轻了在系统开发过程中的工作量,基本实现了代码复用的目的,希望能给从事数据库应用系统的开发者一些有益的启示。 参考文献:1. 刘福太等译 ASP3高级编程 机械工业出版社000年2. 彭万波等著 ASP开发基础与范例 电子工业出版社002年 课题份量和难易程度要恰当,博士生能在二年内作出结果,硕士生能在一年内作出结果,特别是对实验条件等要有恰当的估计。