1、Derby数据库简介java
一、Derby的发展史及特性概述
mysql
Derby是一个开源的,100%由Java开发的关系数据库,随着Java平台的普及Derby也收到了sql
愈来愈多的关注。Derby的前身是美国IBM公司的ColudScape。2004年4月,IBM公司将数据库
CloudScape的数据库捐献给了Apache软件基金会,并将其改名为Derby,apache
接着SUN也为Derby捐献了一个团队。不一样的是,在JavaSE6.0中,SUN将其命名为JavaDB。服务器
所以,CloudScape、Derby和JavaDB只是该项目在不一样时期的不一样名称而已。网络
一提起关系数据库,总会让人以为安装烦琐,空间占用很大。然而Derby却不是这样,并发
不用安装,能够直接使用。同时,附带的Derby也只占用了JavaSE6.0中不到10MB的空间。oracle
千万不要认为Derby的功能会很弱,其所有支持SQL92标准以及许多SQL99的扩展,而且编辑器
提供了事务、崩溃恢复、并发链接等大型数据库的特性,管理几十GB的数据时依然轻松自如,
速度很快。
同时,因为Derby是由纯java开发的,所以也与生俱来具备了java的跨平台性,能够很好地
工做在各类操做系统上。另外,derby不但能够像传统数据库那样以C/S的方式工做,
也支持嵌入式的工做方式。
二、JavaSE 6.0 中derby的目录结构
默认是安装路径
"lib"目录中的几个jar文件
derby.jar--------包含了一些使用derby数据库时的所必须类,例如derby数据库的JDBC驱动类。
derbytools.jar-提供了一些实用derby数据库的工具,例如用来管理derby数据库的命令行工具。
derbyclient.jar-提供了一些开发derby数据客户端所必须的类,经过使用该jar包中的类,
能够开发出对网络模式下derby数据库服务器访问的客户端程序。
derbynet.jar----为网络模式下的derby数据库服务器提供支持的类。
2、管理工具ij
通常状况下每种数据库系统都会提供管理工具,如mysql的命令行客户端,oracle的sql*plus等。
derby也不例外,专门提供了一个功能很是强大的命令行工具----ij。
一、准备工做
使用该工具以前,首先须要作一些准备工做,主要是将ij工具须要的jar包路劲添加进classpath环境变量,
以及设置一个名称为DERBY_INSTALL的环境变量,步骤以下:
①修改/增长classpath环境变量(我这里是用户环境变量)
变量名:classpath
变量值:C:\Program Files\Sun\JavaDB\lib\derbytools.jar;C:\Program Files\Sun\JavaDB\lib\derby.jar
若是是修改classpath环境变量,不要忘记加分号。
提示:根据本身机器中java db的安装状况进行设置。
②增长DERBY_INSTALL环境变量
变量名:DERBY_INSTALL
变量值:C:\Program Files\Sun\JavaDB
提示:根据本身机器中java db的安装状况进行设置。
完成了上述步骤后,就完成了使用ij命令行工具的准备工做。为了验证准备工做成功,
ij可以正常工做,在命令行提示符窗口(cmd)中输入以下命令
java org.apache.derby.tools.sysinfo
若是准备工做的设置没有问题,cmd中会显示java系统的不少信息,以下图所示
二、简单使用
ij是derby自带的一个功能强大的数据库管理工具,能够进行不少数据库管理的操做,包括建立数据库,
启动/关闭数据库,执行SQL脚本等。完成准备工做后,就能够启动并使用ij工具了。
在cmd中输入以下命令启动ij工具,java org.apache.derby.tools.ij运行状况以下图所示:
下面分别介绍几个经常使用的ij命令,以下所列:
①建立以及链接数据库
使用ij建立以及链接指定数据库命令命令的语法格式以下:
connect 'jdbc:derby:<数据库路径>[;create=True/False]';
数据库路劲指的是指定数据库在磁盘上存放的位置,例如“E:\roway”。另外,路径也可使用相对路径,
例如"roway",此路径表示当前执行目录下的roway子目录,若当前执行目录为“E:\”则实景路径为“E:\roway”。
方括号的内容是可选的,也就是说能够不写,若不写至关于"create=False"。
"create=False"表示仅链接已经存在的数据库,而"create=True"表示若数据库不存在则建立数据库。
提示:上面介绍的链接和建立数据库的命令,是用于derby的嵌入式工做模式的,
用于网络状况下的命令将在后面介绍。
例如,下面给出了一个在E盘下roway目录中建立数据库的命令
connect 'jdbc:derby:e:/roway;create=True';
完成了数据库的建立和链接后,就可使用其余命令或运行SQL脚本对数据库进行操做了。
说明:第一次不存在数据库的时候使用"create=True"参数来建立并链接数据库,
之后就可使用"create=False"参数仅链接数据库了。
②运行SQL语句
③运行SQL脚本
上面介绍了在ij中直接输入执行SQL语句,在操做简单的状况下很好用,若是操做复杂直接进行输入
就很不方便了。所以,ij中还容许用户使用run命令执行指定的SQL脚本,基本命令格式以下:
run '<SQL脚本文件的路径>';
在文本编辑器中输入以下SQL脚本,并保存为derby.sql脚本文件,例如“E:/derby.sql”.
[sql] view plaincopy
create table students(
id numeric(20),
name varchar(30),
age numeric(6)
);
insert into students values(10001,'Aa',10);
insert into students values(10002,'Bb',20);
insert into students values(10003,'Cc',30);
select * from students;
链接前面建立的数据库,并使用run命令执行"derby.sql"脚本文件,执行状况以下图所示:
④其余经常使用命令
除了前面介绍的几种比较重要的命令外,还有一些其余经常使用的命令,例如关闭数据库链接等,
disconnect;-----------------------断开数据库链接
Exit;---------------------------------退出ij 工具
3、Derby数据库的嵌入式应用
一、嵌入式derby的工做原理
在嵌入式工做模式中访问derby数据库的java应用程序与derby的数据库引擎工做在同一个JVM中,
不像别的数据库(如oracle)的数据库链接时链接到JVM以外的数据库引擎中。这样作的优势是,
省去了数据库软件的安装、数据源的配置等步骤,随着java应用程序的启动数据库也启动工做,
特别适合进行单机小软件或测试程序的开发。
但须要注意的是,嵌入式工做模式中应用程序访问数据库的链接是专有的,这就意味着其余
应用程序不可能在同一时刻访问该数据库。
二、嵌入式derby应用的开发步骤
进行嵌入式derby应用的开发,与一般的JDBC数据库开发并无很大的区别,基本步骤仍是
加载数据库驱动、建立数据库链接、经过链接操做数据库,只是在细节稍有不一样。
①加载数据库驱动
须要链接的是derby数据库,须要加载derby数据库的jdbc驱动类,位于"lib"目录下的derby.jar文件中。
在运行程序时须要将derby.jar文件的路径添加到classpath路径中。
[java] view plaincopy
//加载嵌入式derby的JDBC驱动类
Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
说明:网络模式derby的jdbc驱动类不是这个,在后面会介绍。
②数据库链接字符串
成功地加载了数据库驱动类以后能够经过链接字符串来获取数据库链接了,
下面给出了链接字符串的基本格式:
jdbc:derby:<数据库路径>[;create=True/False]
另外,要注意的是因为介绍的derby工做在嵌入式模式,所以在应用程序退出以前应该关闭数据库。
关闭嵌入式的derby数据库也是使用链接字符串,下面给出了语法格式。
jdbc:derby:;shutdown=True
[java] view plaincopy
//链接指定的derby数据库
Connection conn = DriverManager.getConnection("jdbc:derby:e:/roway;create=False","","");
//关闭已经链接的数据库
DriverManager.getConnection("jdbc:derby:;shutdown=True");
提示:在关闭数据库成功后,getConnection()方法将抛出异常来进行通知。
③操做数据库
对derby数据库进行操做所采用的代码和访问其余数据库的彻底相同,
也是使用经过数据库链接获取的Statement或PreparedStatement来执行指定的SQL语句。
说明:从上述3个步骤的介绍中额能够看出,以嵌入式方式访问derby数据库与访问其余数据库基本相同,
想把使用其余数据库的应用移植到derby上市很是容易的。
三、使用嵌入式derby的简单案例
提示:使用嵌入式derby数据库进行开发和使用其余数据库从编写代码的角度没有太大的不一样,
但省去了安装与配置数据库的麻烦,这在特定的状况下将很是有用。
4、Derby数据库的网络模式应用
derby数据库不但能够经过嵌入式模式工做,与其余的数据库相同,也能够工做在网络模式下
同时为多个应用程序服务,处理来自不一样JVM的数据库操做请求。
一、网络模式derby的工做原理
若是使用过其余的一些大型数据库,例如oracle、db2等,那么应该对数据库的网络
工做模式(c/s模式)的原理至关熟悉。
在这种模式下derby与其余数据库同样做为一个独立的服务器工做在网络上,等待来自其余
java应用程序的链接请求。这种模式中derby能够同时为不一样的java应用程序服务,处理来自不一样JVM
的数据库操做请求,也就是说同一时刻能够有多个应用程序访问同一个derby数据库。
说明:当不适合采用嵌入式进行操做时,例如应用程序与数据库不在同一台机器上,
或者数据库须要多用户并发访问时,就能够采用网络模式的的derby。
二、操做网络模式的derby
接下来介绍如何对网络模式下的derby进行操做,主要包括以网络模式启动derby
以及使用ij工具链接网络模式的derby。
①以网络模式启动derby
使用网络模式操做derby数据库前,首先要以网络模式启动derby数据库服务器,
下面给出了启动命令的基本格式:
java org.apache.derby.drda.NetworkServerControl start [-h <host> [-p <port>]]
NetworkServerControl是系统提供的一个用于启动derby服务器的类,位于derbynet.jar文件中。
所以须要将derbynet.jar文件路径添加到系统的classpath环境变量中。
方括号中为可选参数,"-h <host>"用来指定主机,"-p <port>"用来指定端口号,
默认的主机为localhost,默认的端口号为1527。
例如,下面给出了一个启动derby数据库服务器工做在本机1527端口的命令。
java org.apache.derby.drda.NetworkServerControl start -h localhost -p 1572
当成功启动derby数据库的网络服务后,能够从网路中的其余机器或本机来对该机器中的derby数据库
进行操做了。须要特别注意的是,在执行网路操做的过程当中,cmd窗口不能关闭,一旦关闭则将断开网路服务。
②使用ij工具链接网络模式的derby
当derby数据库的网路服务启动后,可使用ij工具进行链接和操做,
下面给出了ij中链接网络模式derby的名称格式。
connect 'jdbc:derby://<服务器主机地址>:<服务器端口号>/<数据库路径>[;create=True|False]';
提示:使用上述命令链接derby数据库服务器以前首先须要将derbyclient.jar文件路径添加到系统的
classpath环境变量中,
例如,下面的命令链接上了上面启动的derby数据库服务。
connect 'jdbc:derby://localhost:1572/E:/roway';
若是上述命令在ij中成功执行,则与指定数据库的链接成功创建,接着就可使用各类命令对所链接的
数据库进行操做了。对网络derby数据库进行操做的命令与嵌入式derby彻底相同。
三、开发启动derby网络服务的程序
实际应用中,不但能够经过前面介绍的命令来启动的derby数据库的网路服务,也能够经过本身开发的
java程序来启动derby数据库的网络服务。
从前面的介绍中能够发现,经过命令启动derby数据库的网络服务须要使用
org.apache.derby.drda.NetworkServerControl类。一样,本身开发程序启动derby数据库的网络服务也须要
使用这个类,有兴趣的能够自行查阅API。
四、使用网络模式derby的简单案例
客户端链接网络derby服务器须要的JDBC驱动类org.apache.derby.jdbc.ClientDriver