16
数据库的选择 II 第3章 3.1 Hsqldb 致命缺点 Hsqldb 是虽然很好,但是它有一个致命的缺点,就是对数据库所有的操作它都会记录 script 文件下面,而 script 文件又可以通过文本文件等方式打开。这就把数据库所有的信 息都暴露出来了。如图 3-1 所示的 script 文件。 3-1 Hsqldb 表中信息 假如软件对信息保密的要求不高,那可以使用 Hsqldb。如果保密要求高的话,建议用 其他的数据库。 下面给大家介绍另一款比较小巧的数据库,介绍它的主要原因是它在用户的机器上运 行的时候也是不需要安装的(Windows 系列的机器上不需要安装,Linux\Unix 上面没有测 试过,有兴趣的读者可以自行去测试)。 3.2 Access 数据库 3.2.1 Access 简介 Access 是微软公司推出的基于 Windows 的桌面关系数据库管理系统(Relational Database Management SystemRDBMS),是 Office 系列应用软件之一。它提供了表、查询、

第3章 - tup.com.cn · 3.1 Hsqldb致命缺点 Hsqldb 是虽然很好,但是它有一个致命的缺点,就是对数据库所有的操作它都会记录 在script 文件下面,而script

  • Upload
    others

  • View
    10

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 第3章 - tup.com.cn · 3.1 Hsqldb致命缺点 Hsqldb 是虽然很好,但是它有一个致命的缺点,就是对数据库所有的操作它都会记录 在script 文件下面,而script

数据库的选择 II 第 3 章

3.1 Hsqldb 致命缺点

Hsqldb 是虽然很好,但是它有一个致命的缺点,就是对数据库所有的操作它都会记录

在 script 文件下面,而 script 文件又可以通过文本文件等方式打开。这就把数据库所有的信

息都暴露出来了。如图 3-1 所示的 script 文件。

图 3-1 Hsqldb 表中信息

假如软件对信息保密的要求不高,那可以使用 Hsqldb。如果保密要求高的话,建议用

其他的数据库。

下面给大家介绍另一款比较小巧的数据库,介绍它的主要原因是它在用户的机器上运

行的时候也是不需要安装的(Windows 系列的机器上不需要安装,Linux\Unix 上面没有测

试过,有兴趣的读者可以自行去测试)。

3.2 Access 数据库

3.2.1 Access 简介

Access 是微软公司推出的基于 Windows 的桌面关系数据库管理系统(Relational

Database Management System,RDBMS),是 Office 系列应用软件之一。它提供了表、查询、

Page 2: 第3章 - tup.com.cn · 3.1 Hsqldb致命缺点 Hsqldb 是虽然很好,但是它有一个致命的缺点,就是对数据库所有的操作它都会记录 在script 文件下面,而script

第 3 章 数据库的选择 II

51

窗体、报表、页、宏、模块 7 种用来建立数据库系统的对象;提供了多种向导、生成器、

模板,把数据存储、数据查询、界面设计、报表生成等操作规范化;为建立功能完善的数

据库管理系统提供了方便,也使得普通用户不必编写代码,就可以完成大部分数据管理的

任务。

3.2.2 Access 优缺点

Access 的优点如下:

(1)存储方式简单,易于维护管理。

(2)界面友好、易操作。

(3)用户的机器上不用安装。

Access 的缺点如下:

Access 是小型数据库,既然小型就有它的局限性。

(1)数据库过大,一般百 MB 以上(纯数据,不包括窗体、报表等客户端对象)性能

会变差。

(2)记录数过多,单表记录数过百万性能就会变得较差,如果加上设计不良,这个限

度还要降低。

(3)只能运行在 Windows 系统中。

之所以在这里讲解 Access 的主要原因是它在用户的机器上运行的时候是不需要安装

的(Windows 系统),这一点非常重要,因为它使用开发出来的软件摆脱了数据库的约束。

虽然用户的机器上不需要安装,但是开发者的机器上还是要安装的,关于 Access 的安

装,到网络上下载一个安装包,安装就可以了。本章里面的 Access 的介绍是基于 Access 2007

版本来进行介绍的,其他版本的使用也大同小异。

3.2.3 Access 数据库的创建

第一步:运行 Access 程序,选择新建,如图 3-2 所示。

第二步:单击下面的按钮选择数据库路径,如图 3-3 所示。

图 3-2 新建 Access 数据库 图 3-3 选择数据库路径

第三步:在弹出的窗口中选择数据库要保存的路径后,在下面的框里面输入数据库的

名称,保存类型为 mdb(mdb 为 Access 数据库的后 名),之后单击“确定”,如图 3-4

所示。

Page 3: 第3章 - tup.com.cn · 3.1 Hsqldb致命缺点 Hsqldb 是虽然很好,但是它有一个致命的缺点,就是对数据库所有的操作它都会记录 在script 文件下面,而script

绿色软件开发

52

图 3-4 选择数据库文件后 名

单击“确定”按钮后,这时会返回到刚才的选择框,

这时路径和文件名为刚才所选择的路径和新建的文件名,

如图 3-5 所示。

第四步:单击“创建”按钮即可。这时会在刚才保存

的路径里面生成一个“Login.mdb”文件,这个就是刚才建

好的数据库,如图 3-6 所示。

图 3-6 成功创建的数据库

3.2.4 Access 表的创建

单击“创建”→“表设计”,如图 3-7 所示。

图 3-5 数据库文件名

Page 4: 第3章 - tup.com.cn · 3.1 Hsqldb致命缺点 Hsqldb 是虽然很好,但是它有一个致命的缺点,就是对数据库所有的操作它都会记录 在script 文件下面,而script

第 3 章 数据库的选择 II

53

图 3-7 表创建

在弹出的表设计里面设计字段的名称、数据类型等,如图 3-8 所示。注意:字段的名

称不能和 Access 里面 SQL 的关键词一样,否则会报一些很奇怪的错误。

图 3-8 表设计

比如:description(描述),不要简写为 desc。它为 SQL 里面的 desc(降序)关键词重

复。所以建立字段的时候,最好按照 SQL 提供的标准来建立。

设计好之后,单击“保存”按钮,会提示输入框里面输入表的名称后单击“确定”按

钮即可,如图 3-9 所示。

Page 5: 第3章 - tup.com.cn · 3.1 Hsqldb致命缺点 Hsqldb 是虽然很好,但是它有一个致命的缺点,就是对数据库所有的操作它都会记录 在script 文件下面,而script

绿色软件开发

54

图 3-9 表保存

这样表就设计好了,这时会在所有表栏里面出现刚才名称

的表,如图 3-10 所示。

3.2.5 Access 表里面数据的增、删、查、改

Access 数据库增、删、查、改可以直接在数据库界面里面

进行操作。直接打开表在里面进行操作即可。先在表里面增加一条数据,方便 Access 数据

查询工具的介绍,如图 3-11 所示。

图 3-11 表内容显示

3.2.6 Access 数据库密码的设置

数据库的密码设置必须要以“独占的方式打开”才可以设置,其

他的打开方式不能设置数据库的密码。

选择打开数据库,如图 3-12 所示。

选择数据库后,在“打开”按钮的右边的小三角地方单击一下,

就会看到以下的打开方式,选择“以独占方式打开”,如图 3-13 所示。

图 3-10 表显示栏

图 3-12 打开数据库

Page 6: 第3章 - tup.com.cn · 3.1 Hsqldb致命缺点 Hsqldb 是虽然很好,但是它有一个致命的缺点,就是对数据库所有的操作它都会记录 在script 文件下面,而script

第 3 章 数据库的选择 II

55

图 3-13 以独占方式打开

在菜单栏中选择“数据库工具”,然后单击“设置数据库密码”,如图 3-14 所示。

图 3-14 设置数据库密码 1

会弹出一个密码设置框,在密码设置框里面输入密码和验证(确认密码)后单击“确

定”按钮即可。这里设置的密码为“123456”,如图 3-15 所示。

图 3-15 设置数据库密码 2

3.2.7 Access 数据查询工具的介绍

虽然 Access 里面有可以通过 SQL 语句进行数据库操作的功能,但使用起来相当地不

Page 7: 第3章 - tup.com.cn · 3.1 Hsqldb致命缺点 Hsqldb 是虽然很好,但是它有一个致命的缺点,就是对数据库所有的操作它都会记录 在script 文件下面,而script

绿色软件开发

56

方便。所以给大家介绍一款 Access 数据操作的工

具——Access 查询分析器(可在网络上下载,也可

以在本书的光盘里面找)。

安装好后,运行会出现如图 3-16 所示的界面。

“选择新的 Access 数据库”里面选择要进行操

作的数据库(这里选择刚才所建的数据库),之后

单击“打开此文件”按钮即可,如图 3-17 所示。

界面如下,用这个工具来执行 SQL 语句操作

会比较方便,而 Access 自带的 SQL 操作界面则不

是很好用,如图 3-18 所示。

图 3-17 选择数据库 图 3-18 Access 查询分析器

3.2.8 用 JDBC 链接 Access 数据库

新建 Web Project 工程,如图 3-19 所示。

图 3-19 新建 Web Project

建立一个名称为“AccessTest”的工程,如图 3-20 所示。 把刚才建好的数据库 Login.mdb 复制到 WEB-INF 路径下,建立 DataBaseConn.java 类、

AccessTest.java 类工程最终结构如图 3-21 所示。

图 3-16 Access 数据库管理工具

Page 8: 第3章 - tup.com.cn · 3.1 Hsqldb致命缺点 Hsqldb 是虽然很好,但是它有一个致命的缺点,就是对数据库所有的操作它都会记录 在script 文件下面,而script

第 3 章 数据库的选择 II

57

图 3-20 为工程起名 图 3-21 工程最终结构

DataBaseConn.java 的作用:数据库链接类,用于链接指于的数据库。

package util;

import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; /**

* 数据库链接类

*/

public class DataBaseConn { //JDBC驱动

private final static String DRIVER = "sun.jdbc.odbc.JdbcOdbcDriver"; //ACCESS的驱动

private final static String STRUTS="jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=";

//这里的用户名必须和密码一样,即密码设置为什么,用户名就是什么

private final static String USERNAME = "123456"; private final static String PASSWORD = "123456"; public static Connection connection() {

Connection conn = null;

Page 9: 第3章 - tup.com.cn · 3.1 Hsqldb致命缺点 Hsqldb 是虽然很好,但是它有一个致命的缺点,就是对数据库所有的操作它都会记录 在script 文件下面,而script

绿色软件开发

58

try { //获取工程所在的路径 String path = DataBaseConn.class.getResource("").toString(); //找到 WEB-INF路径下面的 Login.mdb

//这里用的是相对路径,软件即使拷贝到用户的机器上也会自动找到数据库的所在路径

String dbPath = STRUTS + path.substring(6, path.length() - 13) +

"Login.mdb";

Class.forName(DRIVER);

//连接数据库

conn = DriverManager.getConnection(dbPath, USERNAME, PASSWORD);

}

catch (SQLException e) {

e.printStackTrace();

}

catch (ClassNotFoundException e) {

e.printStackTrace();

}

return conn; }

}

AccessTest.java 的作用:测试 Access 数据库的链接情况,向数据库中插入数据及查询

数据。

package test;

import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import util.DataBaseConn; /**

* 测试 ACCESS数据库的 JDBC链接的情况

*/

public class AccessTest { /**

* 插入数据

*/

private static void insert() { try {

Page 10: 第3章 - tup.com.cn · 3.1 Hsqldb致命缺点 Hsqldb 是虽然很好,但是它有一个致命的缺点,就是对数据库所有的操作它都会记录 在script 文件下面,而script

第 3 章 数据库的选择 II

59

Statement statement = DataBaseConn.connection().createStatement();

statement.executeUpdate("insert into Login values('2','华夏日记本',

'chinaDiary')");

statement.close();

} catch (SQLException ex) { ex.printStackTrace();

}

} /** * 查询数据 */

private static void select() { try { String sql = "select * from Login";

PreparedStatement pstmt = null; ResultSet rs = null; //获取链接 Connection conn = DataBaseConn.connection(); pstmt = conn.prepareStatement(sql);

rs = pstmt.executeQuery();

while(rs.next()) { System.out.println(rs.getInt("id") + " " + rs.getString

("userName") + " " + rs.getString("password"));

}

} catch (SQLException ex) { ex.printStackTrace();

}

} /**

* 主方法

* @throws InterruptedException

*/

public static void main(String[] args) throws InterruptedException { System.out.println("-----测试 ACCESS数据库的链接情况-----");

//插入数据

insert();

//查询数据

select();

}

}

3.2.9 数据库连接测试

我们现在来测试一下刚才所写的程序 AccessTest.java 中的 insert()和 select()方法,如下

Page 11: 第3章 - tup.com.cn · 3.1 Hsqldb致命缺点 Hsqldb 是虽然很好,但是它有一个致命的缺点,就是对数据库所有的操作它都会记录 在script 文件下面,而script

绿色软件开发

60

图 3-22 所示。

图 3-22 数据库连接测试演示

至此,Access 数据库介绍完毕。

大泽:上面给大家介绍了 Access 数据库,Access 数据库具有小巧、使用起来方便等优点。

而且一般的应用只要不涉及到数据量比较大,选它是一个不错的方案。但是它有

个比较局限的地方,就是只能在 Windows 系统的操作环境下面使用。下面给大家

介绍另一款数据库。

3.3 MySQL 数据库

3.3.1 MySQL 简介

MySQL 是一个小型关系型数据库管理系统,开发者为瑞典 MySQL AB 公司。在其 2008

年 1 月 16 日被 Sun 公司收购。而在 2009 年,Sun 又被 Oracle 收购。MySQL 是一种关联

数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓

库内。这样就增加了速度并提高了灵活性。MySQL 的 SQL“(结构化查询语言)”。SQL 是

用于访问数据库的最常用标准化语言。MySQL 软件采用了 GPL(GNU 通过公工许可证)。

由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为

了降低网站总体拥有成本而选择了 MySQL 作为网站数据库。

与其他的大型数据库如 Oracle、DB2、SQL Server 等相比,MySQL 自有它的不足之处,

Page 12: 第3章 - tup.com.cn · 3.1 Hsqldb致命缺点 Hsqldb 是虽然很好,但是它有一个致命的缺点,就是对数据库所有的操作它都会记录 在script 文件下面,而script

第 3 章 数据库的选择 II

61

如规模小、功能有限(MySQL Cluster 的功能和效率都相对比较差)等,但是这丝毫也没

有降低它受欢迎的程度。对于一般的个人使用者和中小型企业来说,MySQL 提供的功能

已经绰绰有余,而且由于 MySQL 是开放源码软件,因此可以大大降低总体拥有成本。

3.3.2 MySQL 优缺点

MySQL 的优点:

(1)可运行于多种操作系统上面,如 Windows 系统、Linux 等操作系统。

(2)数据储存量大、存储搜索的速度快。

MySQL 的缺点:

(1)虽然说它的体积小,但这是相对于其他大型数据库(如 Oracel)来说的。作为开

发绿色软件来说,MySQL 的体积还是比较大。

(2)操作起来相对 Hsqldb 及 Access 较麻烦。

3.3.3 如何绿色安装及启动 MySQL 数据库

MySQL 一般是要安装的,但是要开发的是绿色软件,要安装的一律不予考虑。但是

MySQL 有个免安装版本,只需要简单处理下,运行几个批处理命令就可以了。

先下载 MySQL 的免费安装版本“mysql-noinstall-5.0.45-win32.zip”,解压后把 MySQL

里面的“my-small.ini”文件重新复制一份并命名为“my.ini”,如图 3-23 所示。

图 3-23 复制文件

下列文件里面的“mysql”就是免安装版的 MySQL,里面的文件结构如图 3-24

所示。

Page 13: 第3章 - tup.com.cn · 3.1 Hsqldb致命缺点 Hsqldb 是虽然很好,但是它有一个致命的缺点,就是对数据库所有的操作它都会记录 在script 文件下面,而script

绿色软件开发

62

图 3-24 免安装版 mysql 文件结构

3.3.4 绿色安装 MySQL 文件制作

新建一个“InstallMysql.bat”文件,输入以下的内容,如图 3-25 所示。这里是用 start

mysqld -install MySQL5.0 --defaults-file="%currPath%\mysql\my.ini"启动 MySQL 服务。其中

%currPath%\mysql\my.ini 为“my.ini”文件所在的路径。

图 3-25 启动 mysql 批处理命令

运行“InstallMysql.bat”后,再刷新服务列表,看到多了一个“MySQL5.0”的服务,

见运行前(见图 3-26)和运行后(见图 3-27)的比较图。这个就是用免费安装版,运行

BAT 文件安装上去的 MySQL 数据库。

图 3-26 运行前服务列表 图 3-27 运行后服务列表

Page 14: 第3章 - tup.com.cn · 3.1 Hsqldb致命缺点 Hsqldb 是虽然很好,但是它有一个致命的缺点,就是对数据库所有的操作它都会记录 在script 文件下面,而script

第 3 章 数据库的选择 II

63

3.3.5 绿色启动 MySQL 文件制作

新建一个“startMysql.bat”文件,输入以下的内容,如图 3-28 所示,这里是用“net start

MySQL5.0”启动 MySQL 服务。

图 3-28 Mysql 启动文件制作

运行“startMysql.bat”后,再刷新服务列表,看到 MySQL5.0 服务已经启动起来了,

如图 3-29 所示。

图 3-29 mysql 服务已启动

3.3.6 绿色停止 MySQL 文件制作

新建一个“stopMysql.bat”文件,输入以下的内容,如图 3-30 所示,这里是用“net stop MySQL5.0”停止 MySQL 服务。

图 3-30 停止 mysql 批处理命令

运行“stopMysql.bat”后,再刷新服务列表,可看到 MySQL5.0 服务已经停止,如图

Page 15: 第3章 - tup.com.cn · 3.1 Hsqldb致命缺点 Hsqldb 是虽然很好,但是它有一个致命的缺点,就是对数据库所有的操作它都会记录 在script 文件下面,而script

绿色软件开发

64

3-31 所示。

3.3.7 绿色卸载 MySQL 文件制作

新建一个“removeMysql.bat”文件,输入以下的

内容,如图 3-32 所示,这里是用“start mysqld-nt remove MySQL5.0”移除 MySQL 服务。

运行“removeMysql.bat”后,再刷新服务列表后,看到 MySQL5.0 服务已经被移除,

如图 3-33 所示。

图 3-32 移除 mysql 服务批处理命令 图 3-33 mysql 服务已移除

以上是用 BAT 命令来安装、启动、停止及移除 MySQL 服务。需要注意的是 MySQL

安装及启动一次就可以了。不用每次开机都要进行这个操作,只需要安装及启动一次后,

以后每次开机的时候,都会自动启动 MySQL 的服务了,这点需要特别注意。当然也可以

在用的时候才安装和启动,不用的时候就把它停止及移除。

3.3.8 用 JDBC 连接 MySQL 数据库

把上面 Access 数据库连接 DataBaseConn.java 代码中的数据库驱动改为以下即可。

//JDBC驱动

private final static String DRIVER = "com.mysql.jdbc.Driver"; //ACCESS的驱动

private final static String STRUTS="jdbc:mysql://localhost:3306/login "; //数据库用户名

private final static String USERNAME = "root"; //数据库密码

private final static String PASSWORD = "123456";

3.3.9 哪一种数据库适合你

小安:上面说了三种数据库,花多眼乱,不好选择呀。让我想起了柏拉图问他的老师苏

格拉底“爱情与婚姻”的故事。博士,这该怎么选择呀?

图 3-31 mysql 服务已停止

Page 16: 第3章 - tup.com.cn · 3.1 Hsqldb致命缺点 Hsqldb 是虽然很好,但是它有一个致命的缺点,就是对数据库所有的操作它都会记录 在script 文件下面,而script

第 3 章 数据库的选择 II

65

大泽:其实,选择那一种数据库是根据你开发软件的需要及需求来选择的。下面的表格

是它们三者之间的比较,可以根据自己的需要来选择。 三种数据库比较图,见表 3-1。

表 3-1 三种数据库优缺点比较表

数据库名称 优点 缺点 适用性

Hsqldb

不用安装,占用磁盘空

间小,只有 700KB 左右,

是一个 JAR 包,只要有

Java 的运行环境,就可

以启动

只能用于中小数据量储

存。数据记录到类似

TXT 文件中,没有经过

加密。数据比较容易 暴露

数据不需要安全,暴露

出来是没有任何问题

的,可以优先考虑此数

据库

Access

用户的机器上也不用安

装,只需要开发的机器

上安装就可以了。占用

空间少,学习上手快

用于中小数据量储存。

SQL 的语法与标准的不

太一样。调试起来比较

麻烦

数据需要一定的安全

性,而且数据量不是十

分庞大的

MySQL

可以储存大数据量,如

果开发的软件的数据量

比 较 大 , 可 以 考 虑

MySQL 数据库。数据的

安全性比前面两者更加

安全

占用磁盘的空间大,绿

色化起来比较麻烦(即

不用安装也可以运行)

数据量比较大,安全性

要求比较高

最后提醒读者,开发的软件里面数据库的选择,是选择 Hsqldb 还是选择 Access。这是

根据软件的需要来定的。