【java实例】自己写的mysql数据库管理系统————MANAGER_FOR_MYSQL-1.0

    学习java一年之久,一直没有写什么较大的项目,大约一个星期前,所用的mysql管理软件navucat,提示试用期已到,心中无限苍凉,细分析,觉得根据已有的java知识,完全可以自己设计一款适合自己的mysql管理软件,起名为MANAGER_FOR_MYSQL,于是开始自己的mysql管理软件设计之路。
    对于设计的成果,可参看上一篇博文所介绍,文末提供了源代码以及jar可运行java程序供参考,下文主要介绍一下设计过程。
        

第一章 概述

第一节 序言

    开放源代码数据库管理系统(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代码,不会影响已经建立的数据库。

第二节相关理论

一、JAVA 与JDBC

    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 的语法,也可以执行数据库任务。

二、C/S

   在网络连接模式中,有一种传统的网络连接模式,即客户机/服务器网,Client/Server。在客户机/服务器网络中,服务器是网络的核心,而客户机是网络的基础,客户机依靠服务器获得所需要的网络资源,而服务器为客户机提供网络必须的资源。

C/S它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到 Client端和Server端来实现,降低了系统的通讯开销。虽然现在B/S模式冲击着C/S,但C/S依旧有其用武之地。首先,应用服务器运行数据负荷较轻。最简单的C/S体系结构的数据库应用由两部分组成,即客户应用程序和数据库服务器程序。二者可分别称为前台程序与后台程序。运行数据库服务器程序的机器,也称为应用服务器。一旦服务器程序被启动,就随时等待响应客户程序发来的请求;客户应用程序运行在用户自己的电脑上,对应于数据库服务器,可称为客户电脑,当需要对数据库中的数据进行任何操作时,客户程序就自动地寻找服务器程序,并向其发出请求,服务器程序根据预定的规则作出应答,送回结果,应用服务器运行数据负荷较轻。其次,数据的储存管理功能较为透明。在数据库应用中,数据的储存

  • 8
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
Java 的 SWT 中,要使表格(Table)中的数据可以复制,您需要为表格添加复制功能的相关代码。以下是一个示例代码,演示如何实现表格数据的复制功能: ```java import org.eclipse.swt.SWT; import org.eclipse.swt.dnd.*; import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Table; import org.eclipse.swt.widgets.TableColumn; import org.eclipse.swt.widgets.TableItem; public class TableCopyExample { public static void main(String[] args) { Display display = new Display(); Shell shell = new Shell(display); shell.setLayout(new FillLayout()); // 创建表格 Table table = new Table(shell, SWT.BORDER | SWT.FULL_SELECTION); table.setHeaderVisible(true); // 添加表格列 TableColumn column1 = new TableColumn(table, SWT.NONE); column1.setText("Column 1"); TableColumn column2 = new TableColumn(table, SWT.NONE); column2.setText("Column 2"); // 添加表格项 for (int i = 0; i < 10; i++) { TableItem item = new TableItem(table, SWT.NONE); item.setText(new String[] { "Data " + (i + 1) + ", 1", "Data " + (i + 1) + ", 2" }); } // 设置表格的复制剪贴板操作 table.addListener(SWT.KeyDown, event -> { if (event.stateMask == SWT.CTRL && event.keyCode == 'c') { StringBuilder sb = new StringBuilder(); TableItem[] selection = table.getSelection(); for (TableItem item : selection) { for (int i = 0; i < table.getColumnCount(); i++) { sb.append(item.getText(i)).append("\t"); } sb.append("\n"); } // 将复制的数据放入剪贴板 if (sb.length() > 0) { TextTransfer textTransfer = TextTransfer.getInstance(); Clipboard clipboard = new Clipboard(display); clipboard.setContents(new Object[] { sb.toString() }, new Transfer[] { textTransfer }); clipboard.dispose(); } } }); // 调整表格列宽 column1.pack(); column2.pack(); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) { display.sleep(); } } display.dispose(); } } ``` 这个示例代码创建了一个带有两列的表格,并添加了一些数据。通过按下 `Ctrl+C` 键,可以将选中的表格数据复制到剪贴板中,您可以在其他应用程序中粘贴这些数据。 请注意,这个示例只提供了基本的复制功能,如果您需要更复杂的功能,比如支持表格中的格式、富文本等,请参考 SWT 的更高级特性和相应的库。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值