当前位置:文档之家› 优秀毕业论文基于WEB的通用数据库查询系统设计毕业论文

优秀毕业论文基于WEB的通用数据库查询系统设计毕业论文

上海交通大学本科毕业论文

基于Web 的通用数据库

查询系统设计

学 生: 江 龙

学 号: 707914040045 专 业: 计算机科学与技术(软件) 导 师: 李志鹏

学校代码:

10248

上海交通大学网络教育学院

二OO九年三月

t t

p :/

/w w w .d

r a

g o

n s o f t .n e t .c n

毕业论文声明

本人郑重声明:

1、此毕业论文是本人在指导教师指导下独立进行研究取得的成果。除了特别加以标注和致谢的地方外,本文不包含其他人或其它机构已经发表或撰写过的研究成果。对本文研究做出重要贡献的个人与集体均已在文中作了明确标明。本人完全意识到本声明的法律结果由本人承担。

2、本人完全了解学校、学院有关保留、使用学位论文的规定,同意

学校与学院保留并向国家有关部门或机构送交此论文的复印件和电子版,

允许此文被查阅和借阅。本人授权上海交通大学网络教育学院可以将此

文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或

扫描等复制手段保存和汇编本文。

3、若在上海交通大学网络教育学院毕业论文审查小组复审中,发现本文有抄袭,一切后果均由本人承担(包括接受毕业论文成绩不及格、

缴纳毕业论文重新学习费、不能按时获得毕业证书等),与毕业论文指导

老师无关。

作者签名:

日期: 年 月 日

t t

p :/

/w

w w

.d

r a

g o

n s o f t .n e t .c n

基于Web 的通用数据库查询系统设计

摘 要

在WEB 管理系统的开发中,对数据库的查询操作是最常用、最复杂、最繁琐的一

种。若能针对不同类型的数据库,实现一个“通用”的查询,将会极大提高管理系统的开发效率。

本文力求使用.NET Framework 2.0框架中“用户自定义服务器组件”技术,开

发一种通用的查询报表工具,以实现“组合查询”(支持多种条件组合)、“定制查询表单”(用户可自定义查询表单)、“输入值验证”、“自动分页”、“单/多字段排序”、“多表头”、“可固定表头/表列浏览”、“多种格式查询结果导出”等功能。

关键词:分页优化、数据验证、多表头、通用报表、多格式导出、组合查询

t t

p :/

/w

w w

.d

r a

g o

n s o f t .n e t .c n

The Design of Generic Database Inquiry System

Based On Web

Abstract

During the development of web management system ,database inquiry is the most common, complicated and cumbersome operation. If “generic ” query for different databases is completed, it will greatly improve the efficiency of management systems development.

The paper is striving to develop a general inquiry report tool with technology of the User-defined

Server Components in the framework of .NET Framework 2.0, in order to implement the function of Combination Search(Supporting a wide range of conditions for portfolio), Custom Query Form(Users

can customize the query form), Input Verification, Automatic Paging, Single/Multi-field Sorting,

Derivation, Fixed Header / Table Column Browsing, and Export Query Results in Multiple Formats.

Keyword :Paged -Optimized Inquire 、Data Validation 、Multi-Dimension Table 、Universal

Report Derivation 、Muli-format file Export 、Combination Search Form

t t

p :/

/w

w w

.d

r a

g o

n s o f t .n e t .c n

目 录

第一章 选题背景及设计概述...................................................................................................................1 1.1 选题背景 (1)

1.2 设计功能概述 (1)

1.3 软件环境要求 (2)

1.4 平台逻辑结构...............................................................................................................................3 1.5 论文结构.......................................................................................................................................4 第二章 “通用查询报表”平台分析 .......................................................................................................5 2.1 通用查询模块组成.. (5)

2.2 报表设置管理...............................................................................................................................6 (1) 查询表单 (6)

(2) 所用SQL 定义 (7)

(3) 输出 ......................................................................................................... 7 (4) 其它配制 ................................................................................................... 7 2.3 报表展示.......................................................................................................................................7 (1) 直接输出WEB 查询结果............................................................................... 9 (2) 通用导出模块的实现技术 ............................................................................ 10 第三章 通用报表关键技术理论分析 .. (12)

3.1 .net https://www.doczj.com/doc/0918227393.html, 数据库访问技术 (12)

3.2 通用查询的技术实现 (12)

3.3 查询条件组合技术 (13)

3.4 排序方法.....................................................................................................................................14 3.5 常用分页& Web 分页优化技术. (15)

3.6 查询字段(域)类别定义 .........................................................................................................16 3.7 多表头的处理方法.....................................................................................................................17 3.8 固定WEB Table 表头表列的方法 ............................................................................................18 3.9 数据验证方法.............................................................................................................................21 (1) 类别验证 . (21)

t t

p :/

/w

w w

.d

r a

g o

n s o f t .n e t .c n

(2) 长度验证 ................................................................................................. 21 (3) 值阙验证(范围) ..................................................................................... 21 (4) 正则表达式验证 ........................................................................................ 22 (5) 用户自定义验证 . (22)

第四章 通用报表系统实现的功能测试 .................................................................................................23 4.1 系统字典管理.............................................................................................................................23 4.2 验证规则设置.. (24)

4.3 表信息设置.................................................................................................................................27 4.4 字段情况设置.. (27)

4.5 通用数据库查询报表设置 .........................................................................................................30 4.5.1. 报表设置 . (30)

(1) 查询FORM设置 ..................................................................................... 31 (2) 查询字段设置 . (32)

(3) 所用表/SQL 设置 (34)

4.6 “关联列表”及“动态提示关联对象” (37)

4.7 提示性文本的多值输入及验证 (39)

第五章 结论.............................................................................................................................................40 第六章 参考文献.....................................................................................................................................41 第七章 致谢.............................................................................................................................................42 第八章 附件:部分源代码.....................................................................................................................43 8.1 Grid 初始化源码 ........................................................................................................................43 8.2 输出WEB 结果的Out 函数 (46)

8.3 结果导出到文件源码 (51)

8.4 Form 查询表单源码 (55)

8.5 处理多表头函数 (56)

t t

p :/

/w

w w

.d

r a

g o

n s o f t .n e t .c n

第一章 选题背景及设计概述

1.1 选题背景

随着Internet 技术的兴起,基于B/S (浏览器/服务器)模式的应用系统,已经得到了极大的

普及与发展。在这种结构下,用户可通过WEB 浏览器,随时、随地、个性化地进行浏览操作,无需C/S 软件类烦琐的安装与升级。而这种WEB 方式的后台应用开发,大部分将数据库和WEB 技术(如JavaScript、XML、Html/DHTML、AJAX 等)结合起来。

数据库的类型虽然繁多,如MSSQL、Oracle、DB2、MYSQL,PB 等,但均可通过标准的SQL 进行一些常用的Insert、Select、Update、Delete 等操作,而这些操作中,“查询”则是最常用、

最复杂、最繁琐的一种,它可方便地为浏览者提供个性化的需求服务,因此应用程序的开发中,“查询”操作必不可少。

在https://www.doczj.com/doc/0918227393.html, 2.0中,微软提供了GridView 对象,通过与数据对象(ObjectDataSource)进行

数据捆绑,可以很方便的显示用户需要的数据结果。但应用程序在开发“查询”功能时,往往因

为数据库的类型不同,再加上每个查询的要求不尽同,一般都会针对每个“查询”功能模块,写

不同的获取ObjectDataSource 的源代码,这便在开发的过程中,浪费了大量的人力与时间。另外,GridView 虽然方便显示,但在处理中国常见的多行表头问题、查询参数的录活配制性上,解决起来非常复杂,而且不方便。

1.2 设计功能概述

“通用查询报表系统”即是在GridView 对象的基础上改进而来。它使用Microsoft .NET

Framework 2.0框架中的“用户自定义服务器组件”技术,将Web-Form 查询参数方便的与通用SQL 语句结合起来,并配合定制查询表单、多种格式文件导出等功能于一体。它能针对不同数据库类型,实现一个“通用”又“实用”的查询需求,极大提高管理系统的开发效率。具体功能说

明如下:

z 复杂的组合查询技术。系统为每个查询的字段内置十几种查询方式(如=、Like、<=、>=、

t t

p :/

/w

w w

.d

r a

g o

n s

o f t .n e t .c n

定位、左匹配、右匹配、IN 等),用户亦可依据实际情况,随心所欲进行表达式组合查询设置。

z 查询表单(Form)定制功能。表单定制时中,不仅常用的“查询”、“导出”、“重置”

等功能,还支持“更多”(如果查询的域比较多,则将不常用的“隐含”),并支持提供提示性动态文本、日历、UpDown Text 等Web 控件支持。

z FORM 字段验证规则定制。系统可实现字段类别、值范围、宽度范围、是否为空、正则

表达式或基于用户自定义验证功能。

z 随心所欲的字典管理机制。字典可直接利用SQL 语句或者用户自定义VALUE-TEXT 配对

(或者两者组合),并实现将用户定义的字典与FORM 查询字段进行灵活捆绑,组合成复杂、方便、灵活的查询FORM。

z 针对数据库WEB 显示的分页技术作了优化处理。

z 可处理多表头。用户只需要将报表的字段作分组处理标识,即可实现复杂多变的多表头

报表。

z 可实现固定表头或某些列查看。如果显示的表格特别大,系统可以将表头或者某些列进

行固定,以便在小窗口中窥探大世界。

z 集成数据的导出功能。系统可将结果进行多种格式的报表导出功能,目前支持TEXT、WORD、

EXCEL、SCV 或者DBF 格式。

z 系统可直接对数据库的表结构进行提取,并可依据此结构,通过“向导设置”功能,可

实现快速报表设置。

1.3 软件环境要求

本系统利用Microsoft Visual Studio 2005作为主要开发工具,编程语言为C#,后台数据库为IBM DB2 8.0, Web 服务为IIS 6.0,浏览器推荐使用IE 6.0以上版本。具体的环境要求如下:

1)服务器端:

z 数 据 库:IBM DB2 8.0

z 操作系统:Microsoft Window 2003服务器版(中文) z Web 服务:具IIS 6.0+, .Net Framework 2.0+

2)客户端:

z Microsoft Window Internet Explorer 6.0+

t t

p :/

/w

w w

.d

r a

g o

n s

o f t .n e t .c n

z Window XP,2000,2003 均可

3)开发工具:

z Microsoft Visual Studio 2005 (编程工具)

z Embarcadero Raipd SQL V7.5.2 (数据库工具) z Adobo Photoshop CS3 (界面工具)

z Microsoft Frontpage 2000(HTML 编辑器)

1.4 平台逻辑结构

“通用查询报表”为了安全访问数据库的要求,采用“三层”逻辑结构组成方式,如图1.1:

图1.1 数据库访问的三层结构图

这种模式在逻辑上将应用功能分为三层:客户显示层、业务逻辑层、数据层。客户显示层是

为客户提供应用服务的图形界面(在B/S 中即是最终在Brower 端显示的结果界面)。业务逻辑

层位于显示层和数据层之间,在这个层次中封装了与系统关联的应用模型,并把用户表示层和数

据库代码分开 ,它提供客户应用程序和数据服务之间的联系,主要功能是执行应用策略和封装应用模式,并将封装的模式呈现给客户应用程序。数据层是三层模式中的最底层,它用来定义、

维护、访问和更新数据并管理和满足应用服务对数据的请求。整个平台处理的业务逻辑描述如下:

1)前端,用户使用任何一台能接入Internet/Intranet 的电脑,利用IE 浏览器,访问相关

的WEB 服务。“查询报表系统”能依据用户的需求,将查询结果以WEB 网页的形式或者基于某种格式的文件导出给用户。

2)在业务层上,Web 服务取得用户提交的相关数据,并依据报表的配制要求组成查询SQL,

t t

p :/

/w

w w

.d

r a

g o

n s

o f t .n e t .c n

然后将SQL 提交给“数据库访问中间”服务器。

3)中间件服务器可直接与需要访问的物理数据库连接,将需要访问的需求提交给相关的数据库服务器,然后取得返回的相关数据,并返回给中间件服务器。

4)最后由中间件服务器处理相关数据,反馈给WEB 服务器。WEB 服务器则按报表的相关需求,向用户推送结果数据。

1.5 论文结构

本论文的总体结构如下:

z 第一章主要介绍论文的选题背景、设计功能概述、软件环境开发要求以及平台的逻辑结

构。

z 第二章主要对“通用查询报表”表平台进行分析,含有“模板组成”以及相关的“管理

模块”、“展示模块”说明。

z 第三章主要从技术细节方面来详情描述“通用查询报表”的实现方法,设计到“多表头

的实现方法”、“分页实现及优化方法”、“固定表头表列的方法”、“多种文件格式的导出方法”等内容。

z 第四章主要介绍“通用查询报表”系统的功能测试,具体描述相关的使用方法。 z 第五、六、七章为全文的总结、参考文献、志谢部分。

z 第八章为论文中主要核心源码的附录。

t t

p :/

/w

w w

.d

r a

g o

n s o f t .n e t .c n

第二章 “通用查询报表”平台分析

2.1 通用查询模块组成

“通用查询报表系统”由两大部分组成:“报表管理”模块与“报表展示”模块,如下图2.1

图2.1 通用查询模块组成

报表管理模块又包含:

z 报表设置,通用报表的系统设置功能部分。具体包含的FORM 定制、输出字段配制等。 z 数据字典管理:数据字典主要是为Form 字段/域提供现成的数据,供用户选择。比

如,查询表单中若有一个“省份”的列表,则你可以在字典中建立相关的省份明细,然后将FORM 相关域的字典设置为这个字典ID 即可。

z 验证规则:主要完成用户输入数据的验证合法性工作。系统可以设置长度、类别、

值范围、正则表达式,甚至是用户自定义验证。

z 查询字段域:设置表单域的类别,供以后扩展。

报表展示部分又可分为“普通WEB 查询”功能,这一功能按用户的输入要求,将结果直接展

示在浏览器中。另一个便是将查询要求导出成用户需要的文件,供用户下载到本地。

t t

p :/

/w

w w

.d

r a

g o

n s o f t .n e t .c n

2.2 报表设置管理

整个“报表设置”由四大部分组成,分别是“查询表单”(用于设置表单的组成情况)、“所用SQL 定义”(定义查询中用到的SQL-Select、SQL-Count、SQL-Frame、SQL-Total)、“输出模块”(字义报表输出字段情况)以及“其它配制”四个部分。如图2.2

图2.2 报表设置功能模块

(1) 查询表单

查询表单主要是定义与用户交互时用到的一些WEB 域元素,比如普通的输入文本框、单/多选列表框、提示性文本框、上下滚动输入框、日历、动态单/多选列表框等。为了能提供可选的一些数据方便用户选择,一些有组值的WEB 域元素(如列表框、提示性文件)需要与一些数据

字典进行捆绑。 在输入的数据中,还需要对用户输入的数据的正确性、合法性进行一些验证工作,这便由验

证规则来。Filter 部分则将相关的字段输入值与具体的数据库表字段进行匹配,以便实现某种方式。比如:姓名(对应数据表为Name),如果“精确”查询,可以使用表达式 Name=@name,来进

行过滤。

t t

p :/

/w

w w

.r a

g o

n s o f t t .c n

(2) 所用SQL 定义

所用SQL 定义,表示查询系统所用到的SQL 语句定义。为了方便,目前提供四类SQL,其中Select 与Count 表示必须填写的,它们分别用来完成详情与记录个数的,而Total 表示统计类

SQL,如果报表时需要一并输出合计、个数等内容则需要它。而Frame 表示优化的框架,它主要用于大量数据查询时的一个优化工作。

(3) 输出

输出主要定义报表的输出字段。在这里,可实现报表列的先后顺序、输出列的格式定义、对

齐方式(左、中、右、默认)、是否并列(两行两列内容相同时并成一行)、可否排序、可否导出(可否将列的内容直接导出)、可否小计(是否对此列进行页小计)、列标题定义(若需要输入多表头,可以直接在列标题中用|来进行分组)等要求。另外配合导出功能,还可定义是否固定表头/列等功能。 (4) 其它配制

其它配制主要用于设置数据库的连接、用户自定义的相关脚本等。它主要是配合一些常用操作时,用户自行定义的行为脚本功能。比如有时候,在用户单击某一列时,执行一个脚本,则可以此处进行设置。

2.3 报表展示

系统首先从报表配制中读取WEB-Form 需要的一些配制,并按按相关的要求,生成Web-Form;接着用户依据Web-Form 填写查询的需求,并提交到服务器;此时系统将会对用户输出数据的合法性进行验证,若合法继续下一步,否则要求重新输入。服务器依据提交的内容,组合成系统要求的查询SQL,并交于中间件服务器处理,待取得中间件服务器返回的结果集后,再按用户报表输

出的配制要求,生成用户需要的查询结果或者文件。

图2.3 报表展示的整个过程

t t

p :/w

w w

.d

r a

g o

n s o f t .n e t .c n

处理流程图2.4如下:

图2.4 报表展示流程

上述流程(图2-4)中,主要有“输出WEB 结果”及“导出模块”这两大部分。

t t

p :/

/w

w w

d

r a

g o

n s o .n e t .c n

(1) 直接输出WEB 查询结果

这是一种经常使用的查询方式,它即是将结果直接在用户的Brower 上展示。一般数据比较大,则需要通用分页的方式进行处理,处理流程如下图2.5:

图2.5 输出WEB 查询结果流程

t t

p :/

/w

w

.d

r a

g o

n s o f t e t .c n

(2) 通用导出模块的实现技术

在应用开发的过程中,也经常需要将查询的结果导出成另外一种格式的文件,比如csv 、XML 、txt 等文本格式,甚至于借助于Microsoft Office 能识别标准HTML 格式,也可导伪WORD 、EXCEL 。为了能实现这种通用的导出格式,可以需要定义一种常用的导出格式模板,以便在实际应用中,给用户的需求导出相应的结果。

一般的导出文件,均有几部分组成:

文件头

第1页头

表头 表内容 表尾 第1页尾 ………

第n 页头

表头 表内容

表尾 第n 页尾 文件尾

按昭上述的定义模板方式,如果程序中需要按此模板导出相应的文件,那么操作的流程可以简述如下:

1) 输出文件头

2) 输出第N 页头 3) 输出表头

4) 输出表内容

5) 输出表尾

6) 输出第N 页尾

7) 重复2),直到所有页码输出完毕

8) 输出文件尾

将上述的操作具体化成处理流程,则为(参考图

2.6)

t t

p :/

/w

w w

.d

r a

g o

n s o f t .n e t .c n

图2.6 通用文件导出流程

t t

p :/

/w

.d

r a

g o

n s o f t .n e t .c n

第三章 通用报表关键技术理论分析

本章节主要从“技术理论”方面讨论“通用报表”的具体实现技术细节。此章节将设及到.net

访问数据库技术、通用查询组合方法、分页及优化查询方法、多表头处理方法、WEB 中如何固定TABLE 的表头表列等。

3.1 .net https://www.doczj.com/doc/0918227393.html, 数据库访问技术

.NET 程序使用https://www.doczj.com/doc/0918227393.html, 对象访问数据库,它提供连接式和非连接式两种访问模式。连接式访问时,应用程序与数据库一直保持连接,而不管有没有数据交换。非连接式访问时,只有当应用程

序需要数据时才连接到数据库,数据交换完成后又立刻断开,它可以减少网络流量,因此被.net 推荐使用。

非连接数据库方式访问主要通过Connection、Command、DataReader 等进行数据访问。方法一般如下:

1)利用Connection 对象,与数据库建立连接。

2)建立一个Command 对象,传递相关的SQL 命令/语句

3)若有返回结果,可用DataReader 取得相关值。 4)关闭数据库连接。

如果细分的话,.net 提供了两大类Connection、Command、DataReader 对象,一类MSSQL 专用,如

SqlCommand,SqlConnect,SqlDataReader,另一类通用的(Ole),如

OleDbConnection ,OleDbCommand,OldDBDataRead。

为了实现“通用的数据”查询,当然需要OleDbConnection ,OleDbCommand,OldDBDataRead 对象来实现数据的访问。

3.2 通用查询的技术实现

如果需要对一个/多个表的数据进行查询,无非是传递不同的SQL-Select 命令。而所有的

SQL-Select 查询,都可以归结如下:

Select …… From …… $WHERE$ $ORDERBY$

t t

p :/

/w

w w

.d

r a

g o

n s o f t .n e t .c n

上述$WHERE$表示组成查询的一种条件,而$ORDERBY$表示一种排序方式。

如果将用户输入的一些条件组合成$WHERE$,排序的条件组合成$ORDERBY$,则再代入如上面

的SQL-SELECT 中,则可实现这种通用的查询处理。为此,“通用查询报表系统”引用SQL-Select、SQL-COUNT 伪SQL,分别表示详情SQL、查询结果个数SQL。比如,若对表X (有相关的字段F1,F2),需要查询F1='A', 可以定义相关的SQL 如下:

SQL-Select :

Select F1,F2 from X where F1='A'

SQL-Count:

Select count(1) from X where F1='A'

有了上述的伪SQL 若要实现的通用查询技术,就比较简单了。其操作步骤如下: a. 将用户各种输入参数,按需求组合成$WHERE$ b. 若有排序的要求,组合成$ORDERBY$

c. 再分别将上述参数代入到SQL-COUNT、SQL-SELECT 中,即可得到满足结果个数、结果详

情的相关SQL。

d. 再利用OldDbConnect、OldDataCommand,OldDbDataReader 得到数据的明细,并将结果

进行一并处理,实现分页,导出、排序等WEB 交互功能。

3.3 查询条件组合技术

用户通过Web-Form 中填写相关的查询数据,最终提交到服务器后,都会在相关的伪SQL 中,

AND(与)成$WHERE$。如下一个界面(图3.1):

图3.1 查询界面

上述的一个查询,用户输入的有两个相关值,项目名称(PRJ_NAME),项目分类(PRJ_KIND),

如果我们用@PRJ_NAME,@PRJ_KIND 分别表示上述用户输入的值,那么要组合查询其结果可以处理如下:

$WHERE$=””;

If @PRJ_NAME!=null)

$WHERE$+=”PRJ_NAME like ‘%”+@PRJ_NAME+”%’”;

t t

p :/

/w

w w

.d

r a

g o

n s o f t .n e t .c n

If @PRJ_KIND!=null)

$WHERE$+=”PRJ_KIND=’”+@PRJ_KIND+”’”;

将上述结果归到一般,若有一个一组参数

string[] paraName, 参数名 string[] paraValue, 相关的参数值

string []paraSQL, 相关的匹配方式,如a.prj_kind={0},其中{0}表示需要填写的参数值。

那么处理查询组合SQL 的技术可以写成如下:

$WHERE$=””;

for(int i=0;i

$WHERE$+=String.Format(paraSQL[i],paraValue[i]) + “AND”; }

If($WHERE$!=””) //去掉后面的“AND”

$WHERE$= $WHERE$.substr(0,$WHERE$.Length-4);

3.4 排序方法

排序的方法比较简单,只需要将排序的字段一并用Order By 写在相关的SQL 语句即可。比

如表A,若按F1升,F2降,则相关的SQL 可以如下:

Select * from A order by F1 asc, F2 desc

现在将排序的情况归结到一般,若定义了一个一组排序字段sortFieldExpress ,另外IsDescSort 表示相关的排序方法。

string[] sortFieldExpress, //各个排字段的表达式 Bool[] IsDescSort //排序方法 true 降序 false 升序 null 不排序

那么,实现组合排序可以通过以下伪语句如下:

$ORDERBY$=

For(int i=0;i< sortFieldExpress.Length;i++) If(IsDescSort [i]!=null) {

$ORDERBY$+= sortFieldExpress[i]+(IsDescSort [i]?”Desc”:””)+”,”; }

If($ORDERBY$!=””) //去掉后面的,

$ORDERBY$= $ORDERBY$.substr(0,$WHERE$.Length-1);

t t

p :/

/w

w w

.d

r a

g o

n s o f t .n e t .c n

相关主题
文本预览
相关文档 最新文档