通用网页查询函数的设计与应用
时间:2022-10-08 04:07:00
导语:通用网页查询函数的设计与应用一文来源于网友上传,不代表本站观点,若需要原创文章可咨询客服老师,欢迎参考。
1.引言
随着人们对信息化潮流的逐渐认识,各种信息在Internet上的和检索就变得非常的重要。特别是使用B/S模式的信息和检索,由于它的简单性、灵活性,越来越得到了广泛的应用。现在,经常被人们采用的B/S模式的开发工具有ASP、PHP、JSP等,这些开发工具简单易学、功能强大,为各种信息在Internet上的和检索提供了强有力的帮助。但是,随着信息量的逐渐爆炸,如果仍然采用针对特定信息设计专用程序的传统办法的话,显然将导致信息的效率非常地低。
为此,笔者研究了一种通用信息与检索的技术方案,使用这套方案,将极大地减轻开发者的工作量,节约成本。本文介绍的便是这套技术方案中的一个非常重要的组成部分——基于ASP的通用网页查询函数的设计与应用。
2.通用网页查询函数的设计
通用网页查询函数的功能主要是:根据调用者提供的各种参数,在后台数据库管理系统中进行检索,最后将检索结果以二维数组的形式返回给调用者。
为了实现上述功能,实现该函数的主要思想是:根据调用者提供的各种参数,生成对应的SQL语句,接下来与后台数据库管理系统建立连接、提取数据、断开连接,最后将检索结果以二维数组的形式返回给调用者。
该函数的输入参数有:后台数据库管理系统的代号(如0代表SQLServer、1代表VFP等)、数据源名、表名(可以是单表,也可以是多表连接)或视图名、all/distinct关键字、top关键字、字段名数组、where条件、groupby子句/orderby字句、检索结果存放的二维数组名等。
该函数的返回值为逻辑型,True代表查询过程中未出现错误,否则,若为False说明查询过程中出现了错误。
下面给出经调试过的通用网页查询函数的源代码。
functiondata_getting(param_database_code,param_dsn_name,param_table_name,
param_all,param_top,param_field_names(),ByRefdata(),param_condition,
param_other,ByRefrcount,ByReffcount,ByReffieldsname())
onerrorresumenext
''''生成查询语句
ifparam_all=truethen
query="select"
else
query="selectdistinct"
endif
query=query+param_top+""
ifparam_field_names(0)="*"then''''查询全部字段
query=query+"*"
else
d_g_i=0
fcount=0
foreachiteminparam_field_names
ifparam_field_names(d_g_i)<>""then
query=query+param_field_names(d_g_i)+","
fcount=fcount+1''''记录集列数
endif
d_g_i=d_g_i+1
next
endif
query=left(query,len(query)-1)+"from"+param_table_name''''去掉最后一个逗号(全部字段:去掉空格)
iflen(param_condition)>0then
query=query+"where"+param_condition
endif
iflen(param_other)>0then
query=query+""+param_other
endif
''''打开记录集
setconntemp=server.createobject("ADODB.Connection")
conntemp.ConnectionString=param_dsn_name
conntemp.Open
conntemp.errors.clear
Setrstemp=Server.CreateObject("ADODB.Recordset")
rstemp.ActiveConnection=conntemp
ifparam_database_code=0then‘代表后台数据库是SQLSERVER
rstemp.CursorType=3
rstemp.LockType=1
elseifparam_database_code=1then‘代表后台数据库是VFP
rstemp.CursorType=1
rstemp.LockType=1
else
…‘代表后台数据库是其它数据库管理系统(代码略)
endif
rstemp.Source=query
rstemp.open
‘判断查询过程中是否出现错误
ifconntemp.errors.count>0then
data_getting=false
rcount=0
else
‘如果查询过程中未出现错误,将查询结果存放到指定的二维数组中
rcount=rstemp.recordcount''''记录集行数
ifrcount=0then
data_getting=true
else
data_getting=true
ifparam_field_names(0)="*"then''''查询全部字段
fcount=rstemp.fields.count
endif
ReDimdata(rcount-1,fcount-1),fieldsname(fcount-1)
ford_g_i=1torcount
ford_g_j=1tofcount
data(d_g_i-1,d_g_j-1)=trim(rstemp.fields(d_g_j-1).value)
ifd_g_i=1then
fieldsname(d_g_j-1)=rstemp.fields(d_g_j-1).name
endif
next
rstemp.movenext
next
endif
endif
rstemp.close
setrstemp=nothing
conntemp.close
setconntemp=nothing
endfunction
3.通用网页查询函数的应用
在笔者参与的各类基于Web的数据库应用系统的开发过程中,全部使用了前文给出的通用网页查询函数。利用<!--#includefile="data_getting.inc"-->语句(通用网页查询函数被保存为一个独立的文件data_getting.inc),在需要进行数据查询的网页中,嵌入该函数,然后在ASP页面只需调用该函数,就能得到希望得到的查询结果,从而大大减轻了编程的工作量,并便于ASP页面的简化和美化。
4.结束语
本文给出的通用网页查询函数,以及笔者开发的其它的一些通用函数(用于执行一系列SQL命令的函数、用于调用数据库端存储过程的函数等),大大减轻了在系统开发过程中的工作量,基本实现了代码复用的目的,希望能给从事数据库应用系统的开发者一些有益的启示。
参考文献:
1.刘福太等译ASP3高级编程机械工业出版社2000年
2.彭万波等著ASP开发基础与范例电子工业出版社2002年