第一章 概述 第一节 序言 开放源代码数据库管理系统(DBMS)逐渐受到人们的关注,并已经成功地应用到多种系统之中,MySQL是其中比较出色的一个。它具有功能强、使用简便、管理方便、运行速度快、安全可靠性强等优点,用户可利用许多语言编写访问MySQL数据库的
第一章 概述
开放源代码数据库管理系统(DBMS)逐渐受到人们的关注,并已经成功地应用到多种系统之中,MySQL是其中比较出色的一个。它具有功能强、使用简便、管理方便、运行速度快、安全可靠性强等优点,用户可利用许多语言编写访问MySQL数据库的程序。现在很多的网站、企业局域网和个人资料库都是用MySQL作为后台数据库,足以表明现在MySQL广泛的应用。并且MySQL具有很多重要特征:
(1)使用核心线程的完全多线程,意味着它 能很容易地利用多CPU;
(2)具有C、C++、Eiffel、Java、Parl、PHP、 Python和TCL等多种语言的API;
(3)可运行在多种不同的平台上:
(4)利用一个优化的一遍扫描多重联结能够 快速地进行联结:
(5)在查询的SELECT和WHERE部分,支 持全部运算符和函数;
(6)全面支持SQL的GR0uP BY和ORDER BY 子旬,支持聚合函数COUNT()、c0uNT (DISTINCT)、AVG()、STD()、SUM ()、MAX() 和MIN(); (7)支持ANSI SQL的LEFT OUTER JOIN 和ODBC语法;
(8)有一个非常灵活且安全的权限和口令系 统,允许基于主机的认证,而且口令是安全的,因 为当与一个服务器连接时,所有口令传送被加密。
但MySQl安装之后主要使用命令行界面进行数据库操纵和管理,很多用户在Windows环境中一直使用图形用户界面(GUI)来操作和管理数据库,对命令行方式可能不习惯,而很多新手 更是觉得MySQL不容易掌握.为了方便用户对 MySQL数据库进行管理,现在早就有一些MySQL图形化用户管理工具,但这些工具功能参差不齐,各有特色,目前流行的主要有以下几种:
(1)MySQL Workbench是一款图形化的数据库设计工具,它在一个开发环境中集成了SQL的开发,管理,数据库设计,创建以及维护。它是 fabFORCE.net旗下DBDesigner 4的继承者,并替代了MySQL GUI Tools Bundle。
(2) 用于MySQL的Navicat既是一个数据库管理器同时还是一个开发工具。它适用于从3.21以上的任何MySQL数据库服务器,并且支持包括触 发器,存储过程,函数,事件,预览和用户管理在内的绝大多数最新的MySQL功能。
(3) Sequel Pro用于管理MySQL数据库(本地或在Internet上)。您可以使用它来添加删除数据库和表,修改字段和索引,预览和过滤表的内容,添加编辑删除 行,执行自定义查询,转储表或整个数据库。
(4) HeidiSQL是一款免费的开源客户端,由德国程序员Ansgar Becker开发,同时还得到了一些Delphi贡献者的帮助。用户必须通过许可证书创建一个会话登陆本地或远程MySQL服务器,才可以使用 HeidiSQL管理数据库。通过这个会话,用户可以管理所链接的MySQL服务器的MySQL数据库,并在完成之后断开。它的功能集足够应付绝大多数常见和高级数据库,表,数据记录选项,但是目前还处于积极的开发中,以求能实现MySQL前端的所有功能。
(5) PhpMyAdmin是一款免费的软件工具,采用PHP编写,用于在线处理MySQL管理。PhpMyAdmin支持多种MySQL操作,最常用的 操作包括管理数据库,表,字段,关系,索引,用户,权限。同时还允许您直接执行SQL语句。 MySQL是一个快速的客户机/服务器结构 的SQL数据库管理系统,由一个服务器守护程序 mysqld及很多不同的客户程序和库组成 虽然它 不是开放源代码产品,但可以自由使用。由于其 功能强大、灵活性好、应用编程接口丰富以及系 统结构精巧,从而受到广大软件用户的青睐。
由此可见,MySQL的GUI管理工具各有特色,并且有的工具不是开源的,要收取一定费用,有的对平台要求较高,迁移性较差,而我们将基于java语言构建一个GUI management for mysql,来实现对MySQL数据库的操作与管理,首先java是一种比较纯粹的面向对象语言,其次它是跨平台的,在windows下的代码完全不用修改即可在其他系统比如unix,linux下面运行,这样就可以实现管理工具的跨平台性;另外进一步可以实现开源软件,拓展其功能与特性,又可以根据自己的习惯与喜好,修改代码,得到适合与自己的数据库管理工具;重要的是根据MySQL的特性实现C\S的特点,利于数据的独立性,修改GUI代码,不会影响已经建立的数据库。
JDBC(Java Data Base Connectivity , java数据库连接)[3]是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC为工具/数据库开发人员提供了一个标准的API,据此可以构建更高级的工具和接口,使数据库开发人员能够用纯 Java API 编写数据库应用程序。
对于不同厂商数据库,程序员只需用JDBC API写一个程序,便可向相应数据库发送SQL调用。同时,将Java语言和JDBC结合起来使程序员不必为不同的平台编写不同的应用程序,只须写一遍程序就可以让它在任何平台上运行,这也是Java语言“编写一次,处处运行”的优势。
Java 具有坚固、安全、易于使用、易于理解和可从网络上自动下载等特性,是编写数据库应用程序的杰出语言。所需要的只是 Java应用程序与各种不同数据库之间进行对话的方法。而 JDBC 正是作为此种用途的机制。
JDBC 扩展了 Java 的功能。例如,用 Java 和 JDBC API 可以发布含有 applet 的网页,而该 applet 使用的信息可能来自远程数据库。企业也可以用 JDBC 通过 Intranet 将所有职员连到一个或多个内部数据库中(即使这些职员所用的计算机有 Windows、 Macintosh 和UNIX 等各种不同的操作系统)。随着越来越多的程序员开始使用Java 编程语言,对从 Java中便捷地访问数据库的要求也在日益增加。
JDBC 是个"低级"接口,也就是说,它用于直接调用 SQL 命令。在这方面它的功能极佳,并比其它的数据库连接 API 易于使用,但它同时也被设计为一种基础接口,在它之上可以建立高级接口和工具。高级接口是"对用户友好的"接口,它使用的是一种更易理解和更为方便的 API,这种API在幕后被转换为诸如 JDBC 这样的低级接口。
在关系数据库的"对象/关系"映射中,表中的每行对应于类的一个实例,而每列的值对应于该实例的一个属性。于是,程序员可直接对 Java 对象进行操作;存取数据所需的 SQL 调用将在"掩盖下"自动生成。此外还可提供更复杂的映射,例如将多个表中的行结合进一个 Java 类中。
随着人们对 JDBC 的兴趣日益增涨,越来越多的开发人员一直在使用基于 JDBC 的工具,以使程序的编写更加容易。程序员也一直在编写力图使最终用户对数据库的访问变得更为简单的应用程序。例如应用程序可提供一个选择数据库任务的菜单。任务被选定后,应用程序将给出提示及空白供填写执行选定任务所需的信息。所需信息输入应用程序将自动调用所需的SQL 命令。在这样一种程序的协助下,即使用户根本不懂 SQL 的语法,也可以执行数据库任务。
在网络连接模式中,有一种传统的网络连接模式,即客户机/服务器网,Client/Server。在客户机/服务器网络中,服务器是网络的核心,而客户机是网络的基础,客户机依靠服务器获得所需要的网络资源,而服务器为客户机提供网络必须的资源。
C/S它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到 Client端和Server端来实现,降低了系统的通讯开销。虽然现在B/S模式冲击着C/S,但C/S依旧有其用武之地。首先,应用服务器运行数据负荷较轻。最简单的C/S体系结构的数据库应用由两部分组成,即客户应用程序和数据库服务器程序。二者可分别称为前台程序与后台程序。运行数据库服务器程序的机器,也称为应用服务器。一旦服务器程序被启动,就随时等待响应客户程序发来的请求;客户应用程序运行在用户自己的电脑上,对应于数据库服务器,可称为客户电脑,当需要对数据库中的数据进行任何操作时,客户程序就自动地寻找服务器程序,并向其发出请求,服务器程序根据预定的规则作出应答,送回结果,应用服务器运行数据负荷较轻。其次,数据的储存管理功能较为透明。在数据库应用中,数据的储存管理功能,是由服务器程序和客户应用程序分别独立进行的,前台应用可以违反的规则,并且通常把那些不同的(不管是已知还是未知的)运行数据,在服务器程序中不集中实现,所有这些,对于工作在前台程序上的最终用户,是“透明”的,他们无须过问(通常也无法干涉)背后的过程,就可以完成自己的一切工作。
MySQL是一个开放源码的小型关联式数据库管理系统,开发者为瑞典MySQL AB公司。目前MySQL被广泛地应用在Internet上的中小型网站中 。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。2008年1月16号MySQL AB被Sun公司收购。而2009年,SUN又被Oracle收购。就这样如同一个轮回,MySQL成为了Oracle公司的另一个数据库项目。MySQL有优良的系统特性:
(1)使用C和C++编写,并使用了多种编译器进行测试,保证源代码的可移植。(2)支持AIX、FreeBSD、HP-UX、Linux、Mac OS、NovellNetware、OpenBSD、OS/2 Wrap、Solaris、Windows等多种操作系统
(3)为多种编程语言提供了API。这些编程语言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等。
(4)支持多线程,充分利用CPU资源
(5)优化的SQL查询算法,有效地提高查询速度
(6)既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中。
(7)提供多语言支持,常见的编码如中文的GB 2312、BIG5,日文的Shift_JIS等都可以用作数据表名和数据列名。
(8)提供TCP/IP、ODBC和JDBC等多种数据库连接途径。
(9)提供用于管理、检查、优化数据库操作的管理工具。
(10)支持大型的数据库。可以处理拥有上千万条记录的大型数据库。
(11)支持多种存储引擎。
该系统主要依靠Java语言中的swing、swt的界面设计包及其JDBC连接MySQL数据库来实现,java技术成熟稳定,技术上完全可行。
该系统开发成本低,所需开发时间、人力均较少、使用常规设计软件、辅助工具即可实现,所需资料文档较易获得,查阅相关资料方便。
第三章 需求分析
第一节系统开发目标系统开发的目标是完成对于MySQL数据库客户端GUI的设计及功能实现。系统功能是:(1)实现对数据库的操纵及管理的基本功能:连接远程或本地MySQL数据库,创建、删除数据库,创建、编辑、删除表及视图、索引,表的查询等(2)实现常规软件的新建、保存、另存为、退出、基本配置等功能。用户可以使用简单的界面操作实现对本地或远程的MySQL数据库进行操作以及相应的的查询操作。
相应的功能需求有以下方面。
(1) 用户通过已有的用户名、密码、数据库名连接远程或本地MySQL数据库。
(2) 通过点击数据库树状图可以查看该数据库中的表的内容,及其字段的约束。
(3) 通过选择当前数据库的下拉列表可以从新连接更新的数据库
(4) 创建、删除数据库。
(5) 选择当前数据库,通过菜单命令及视图、索引。
(6) 通过菜单命令新建文本编辑区、保存、另存为。
(7) 通过菜单命令软件基本配置、软件退出功能。
(8) 选择当前数据库,通过文本编辑区执行SQL定义语言、SQL操纵语言。
(9) 通过文本编辑区进行表的查询操作
(10)状态栏时刻显示软件的所处状态。
执行者为可以连接到MySQL数据库管理用户
MySQL数据库管理的用例通过UML用例图来实现,如图1.。
1、 连接远程或本地MySQL数据库
用例名:连接数据库
入口条件:用户至少拥有一个远程或本地MySQL数据库的访问权限
事件流:用户打开系统或单击连接数据库按钮,系统弹出连接面板,输入IP、port、数据库名、用户名、密码[5],确定后连接相应数据库,当前数据库下拉列表显示数据库名,数据库管理树状列表开始初始化。连接数据库活动图如图2.。
出口条件:数据库管理树状列表初始化完成。
异常事件:网络故障或用户密码数据库名等输入错误。
2、 查看当前数据库表的内容,及其字段的约束
用例名:查看数据库
入口条件:已经连接并树状管理器成功初始化
事件流:用户单击树状管理器的表节点或字段节点,系统连接数据库,在结果显示栏显示数据库内的表的内容,字段的相关约束
出口条件:成功在结果显示栏显示数据库内的表的内容,字段的相关约束
3、 更新数据库当前数据库或连接曾经连接过的数据库
用例名:更新数据库
入口条件:已经连接并树状管理器成功初始化
事件流:用户选择当前数据库的下拉列表中的数据库名,系统重新连接数据库,在结果显示栏显示数据库内的表的内容,字段的相关约束
出口条件:成功在结果显示栏显示数据库内的表的内容,字段的相关约束
4、 创建数据库
用例名:创建、删除数据库
入口条件:已经连接并树状管理器成功初始化
事件流:用户单击创建数据库按钮,系统弹出创建数据库界面,用户输入数据库名,系统创建数据库,并执行更新数据库操作或SQL操作
出口条件: 成功创建数据库。
异常事件:数据库创建失败;数据库已经存在;数据库名中有未识别的字符;SQL语法错误
5、 创建表
用例名:创建数据库
入口条件:已经连接并树状管理器成功初始化
事件流:用户单击创建表按钮,系统弹出创建表界面,用户输入表名,单击新建字段,系统弹出新建字段界面,输入参数,单击完成字段,单击输入记录,系统弹出输入记录界面,单击完成记录,单击完成表的创建,系统创建表,并执行更新数据库操作或SQL操作。
出口条件: 成功创建表。
异常事件:表创建失败;表已经存在;表名中有未识别的字符;表中的参数异常;输入字段类型异常;SQL语法错误。
6、 删除数据库
用例名:创建、删除数据库
入口条件:已经连接并树状管理器成功初始化
事件流:用户单击删除数据库按钮,系统弹出删除界面,用户从下拉列表中选择数据库名或SQL操作
出口条件:删除数据库成功
异常事件:数据库不存在;SQL语法错误
7、 删除表
用例名:删除表
入口条件:已经连接并树状管理器成功初始化,选中所要删除的表
事件流:用户单击删除表按钮,系统弹出删除界面提示,确定后,系统删除相应的表或SQL操作
出口条件:删除表成功
异常事件:表未选中;SQL语法错误
8、 新建文本区
用例名:新建文本区
入口条件:已经连接并树状管理器成功初始化
事件流:用户单击新建文本按钮,系统弹出界面提示是否保存先前界面,若保存,则执行保存指令,否,则系统将文本区置空。
出口条件:出现新文本区
9、 配置软件
用例名:软件基本配置
入口条件:系统启动
事件流:用户单击软件配置按钮,系统弹出配置界面若保存,系统执行相应配置。
出口条件:系统根据配置成功变化
10、 执行SQL语言功能
用例名:执行SQL
入口条件:已经连接并树状管理器成功初始化
事件流:用户在文本输入合法的SQL语句,点击更新、查询按钮,系统执行相应操作
出口条件:成功执行SQL语言
异常事件:SQL语法错误异常事件:SQL语法错误
第四章 系统设计
通过对系统的分析,得出的类图。
对于每一个类的具体描述如表1.
表 1.主要类的描述 |
||
所在包名 |
类名 |
功能描述 |
connection |
ConnectData |
合法性检验,连接数据库 |
ConnectMysql |
重新连接当前数据库 |
|
MyTree |
数据库树图管理器初始化 |
|
QueryTable |
显示查询后的表格 |
|
SummitQuery |
执行SQL查询语言 |
|
SummitUpdate |
执行SQL更新语言 |
|
dbmanager |
Manager |
主类,初始化主界面 |
MyTreeCellRenderer |
定义初始化树的节点 |
|
editorAppInterface |
OpenFile |
打开文件 |
SaveFile |
保存文件 |
|
SaveText |
保存当前编辑区 |
|
error |
MyError |
自定义出错显示 |
global |
Gframe |
定义界面状态 |
Global |
定义全局变量 |
|
guiAppInterface |
AddApp |
添加字段 |
AddDataApp |
输入记录 |
|
DbApp |
创建数据库 |
|
DeleteApp |
删除字段 |
|
EditApp |
编辑字段 |
|
FieldApp |
字段界面 |
|
LoginApp |
登录连接数据库 |
|
TableApp |
创建表 |