小酌一杯Derby(JavaDB) - 一个纯Java的数据库

来源:互联网 发布:出老年保健数据 编辑:程序博客网 时间:2024/04/25 06:20

一、Derby简介

Apache DerbyApache软件基金会所研发的开放源码数据库管理系统;由于Derby是一个纯Java程式,因此只需要操作系统支援Java虚拟机,Derby便可执行。Derby官网地址:http://db.apache.org/derby/ ,  关于JavaDB和Derby的问题,只是JavaDB演变的名称的问题,在安装JDK1.6以上的版本都自动带上JavaDB,大家可以在jdk的安装中的sun directory 下找到它。1) bin目录,包含了一些工具脚本和设备环境的脚本;2) demo目录,包含了一些实例程序;3) docs目录,包含了Derby的文档;4) javadoc目录,包含了Derby的API文档;5) lib目录,包含了Derby数据库的jar文件;6) test目录,Derby的一些测试jar包;Derby是特别地为Java环境进行优化,Derby本身不仅是一个纯Java程式,而且Derby在执行用户的SQL程式时,能够把SQL编译成Java bytecode并以系统的Java虚拟机执行。由于SQL程式转成的Java bytecode能被JIT动态翻译,因此Derby可能比传统的数据库管理系统更佳的性能。其他特性包括:
  • 支援 主从架构 或 嵌入 环境
  • 多线程
  • ACID
  • Java数据库连接 (JDBC)
  • 低系统需求:约占 2 MB 的硬盘空间,压缩后更只是600KB
最新的版本是:Derby 10.8.3.0 Release

二、Derby基本操作

1、登陆

在JavaDB\bin 目录下找到 ij.bat批处理文件,进入到数据库管理终端 或 cmd下 java orgapache.derby.tools.ij 
(注:得到相对的包目录下执行,startNetworkServer.bat是指开启derby的网络服务)

2、退出ij

exit;     
断开连接 : disconnect;

3、创建数据库

> connect 'jdbc:derby:testdb;create=true';   // 在当前目录下建立数据库目录 testdb
如果已经建立了数据库 testdb,则提示:警告 01J01:未创建数据库"mydb",而是建立到现有数据库的连接。
connect 'jdbc:derby:testdb'   // 只连接到这个数据库

4、创建表

create table firsttab(number varchar(4),name varchar(10),age int, address varchar(40));

5、插入

Insert into firsttab values('1001','name1',20,'beijing');
Insert into firsttab values('1002','name2',30,'shanghai');

6、查询

select * from firsttab;

7、查看表

show tables;

8、查看表的结构

describe firsttab;

9、删除表

drop table firsttab;

10、删除表中数据

delete form firsttab;

delete from firsttab where ....;

11、更新操作

update firsttab set name='gavin' where number='1001'

三、Derby数据库连接(for java)

Derby有两种JDBC操作数据库的方式

第一种:客户端/服务器模式(B/S模式),是通过网络的连接形式,与传统的jdbc连接 mysql and oracle的方式相同。

第二种:内嵌模式(Embedded模式),是通过文件的形式连接。

1、B/S模式

B/S模式即是使用 IP + 端口号的形式,如果有用户名和密码时,也需要加上。如果你使用过ORACLE,DB2,SQL Server或MySQL,你应该对B/S模式的工作原理相当熟悉。如下图示是B/S的工作原理。

一个独立的Java进程运行作为Derby的网络服务器,通过网络监听客户端的连接。该Derby网络服务器能唯一的访问数据库存储器,并能同时接受多个客户端连接。这就允许多个用户在同一时间通过网络方式访问该关系数据库管理系统。

当不适合使用嵌入式模式进行操作时(例如:你必须运行和管理个别的服务器进程,或许在不同的机器上),当你需要多用户访问数据库时,Derby的客户端-服务器模式能提供一个有效的解决方案。

注意, 连接时需要启动网络连接服务,在/JavaDB/bin/下面,执行 startNetWorkServer.bat


下面是B/S模式的java实现

public void netConnectionMethod() {Connection conn = null;try {String driver = "org.apache.derby.jdbc.ClientDriver";Class.forName(driver).newInstance();conn = DriverManager.getConnection("jdbc:derby://localhost:1527/testdb");Statement st = conn.createStatement();ResultSet rs = st.executeQuery("SELECT * FROM firsttab");while (rs.next()) {System.out.println("序号 : " + rs.getString(1));}rs.close();st.close();conn.close();} catch (InstantiationException e) {e.printStackTrace();} catch (IllegalAccessException e) {e.printStackTrace();} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();}}

2、Embedded模式

Derby引擎是嵌入在你的应用程序里的。当工作在嵌入式模式,你的应用程序访问数据库是直接和专有的。这就意味着其他应用程序不可能在同一时间访问该数据库。嵌入式模式的主要优点是不需要进行网络和服务器设置。因为你的应用程序包含了Derby引擎,使用者并不知道你使用了一个关系数据库。

当使用Derby的嵌入式模式时,并没有复杂的配置和特殊的API需要你去学习。实际上,你仅仅需要做:

A.  确保Derby JARs文件在你的应用程序classpath里

B.  使用嵌入式JDBC驱动

C.  写数据库访问代码到JDBC

这是正确的,Derby根本没有特殊的APIs。只需要为你的应用程序编码到JDBC,然后Derby会为你工作得很好。事实上,如果你已经有了JDBC代码,而想把代码转换到Derby嵌入式模式下运行是十分容易的。

Embedded  模式的工作具体如下图所示:


通过Java应用程序访问内嵌模式Derby数据库时,应用程序有责任需要在程序结束时关闭Derby数据库,如上面代码finally中的

  DriverManager.getConnection("jdbc:derby:;shutdown=true");

shutdown参数用于关闭Derby数据库,如果url中指定了数据库命,则只会关闭指定的数据库,而不会关闭整个Derby数据库。数据库关闭成功时,Derby会抛出一个错误码为XJ015和一个08006的异常表示关闭成功,应用程序可以不处理这两个异常。

下面是B/S模式 的java实现

public void embeddedConnectionMethod() {Connection conn = null;try {Class.forName(DERBY_DRIVER);Properties properties = new Properties();conn = DriverManager.getConnection(DB_URL, properties);Statement stat = conn.createStatement();ResultSet result = stat.executeQuery("SELECT * FROM firsttab");while (result.next()) {System.out.println("序号 : " + result.getInt(1));}result.close();stat.close();conn.close();} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();} finally {try {DriverManager.getConnection("jdbc:derby:;shutdown=true");} catch (SQLException e) {e.getMessage();}}}

3、B/S模式与Embedded模式区别

A. 数据库连接URL的不同;    Embedded模式是以准确地址为基准,B/S模式ip+端口+数据库

B. 应用程序退出时无效关闭Derby数据库;

Embedded模式退出需要关闭数据库

B/S模式Derby数据库做为一个独立运行的数据库,可以被多个应用程序所访问,所以应用程序在运行结束时不应该关闭Derby数据库。

C. 数据库驱动的不同;

Embedded模式使用org.apache.derby.jdbc.EmbeddedDriver,B/S模式使用org.apache.derby.jdbc.ClientDriver


注:再此特别感谢SingLi ,总结的很详细,本文参考的WebSite:http://greatwqs.iteye.com/blog/1147441
原创粉丝点击