Derby 数据库的应用

一、Derby数据库简介

1、Derby的发展史及特性概述

        Derby是一个开源的,100%由Java开发的关系数据库,随着Java平台的普及Derby也收到了

越来越多的关注。Derby的前身是美国IBM公司的ColudScape。2004年4月,IBM公司将

CloudScape的数据库捐献给了Apache软件基金会,并将其更名为Derby,

接着SUN也为Derby捐献了一个团队。不同的是,在JavaSE6.0中,SUN将其命名为JavaDB。

因此,CloudScape、Derby和JavaDB只是该项目在不同时期的不同名称而已。

        一提起关系数据库,总会让人觉得安装烦琐,空间占用很大。然而Derby却不是这样,

不用安装,可以直接使用。同时,附带的Derby也只占用了JavaSE6.0中不到10MB的空间。

千万不要认为Derby的功能会很弱,其全部支持SQL92标准以及许多SQL99的扩展,并且

提供了事务、崩溃恢复、并发连接等大型数据库的特性,管理几十GB的数据时依然轻松自如,

速度很快。

        同时,由于Derby是由纯java开发的,因此也与生俱来具有了java的跨平台性,可以很好地

工作在各种操作系统上。另外,derby不但可以像传统数据库那样以C/S的方式工作,

也支持嵌入式的工作方式。

2、JavaSE 6.0 中derby的目录结构

       默认是安装路径

"lib"目录中的几个jar文件

derby.jar--------包含了一些使用derby数据库时的所必须类,例如derby数据库的JDBC驱动类。

derbytools.jar-提供了一些实用derby数据库的工具,例如用来管理derby数据库的命令行工具。

derbyclient.jar-提供了一些开发derby数据客户端所必须的类,通过使用该jar包中的类,

        可以开发出对网络模式下derby数据库服务器访问的客户端程序。

derbynet.jar----为网络模式下的derby数据库服务器提供支持的类。

二、管理工具ij

        一般情况下每种数据库系统都会提供管理工具,如mysql的命令行客户端,oracle的sql*plus等。

derby也不例外,专门提供了一个功能非常强大的命令行工具----ij。

1、准备工作

        使用该工具之前,首先需要做一些准备工作,主要是将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系统的很多信息,如下图所示


2、简单使用

        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”.

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 工具

三、Derby数据库的嵌入式应用

1、嵌入式derby的工作原理

        在嵌入式工作模式中访问derby数据库的java应用程序与derby的数据库引擎工作在同一个JVM中,

不像别的数据库(如oracle)的数据库连接时连接到JVM之外的数据库引擎中。这样做的优点是,

省去了数据库软件的安装、数据源的配置等步骤,随着java应用程序的启动数据库也启动工作,

特别适合进行单机小软件或测试程序的开发。

        但需要注意的是,嵌入式工作模式中应用程序访问数据库的连接是专有的,这就意味着其他

应用程序不可能在同一时刻访问该数据库。

2、嵌入式derby应用的开发步骤

       进行嵌入式derby应用的开发,与通常的JDBC数据库开发并没有很大的区别,基本步骤还是

加载数据库驱动、创建数据库连接、通过连接操作数据库,只是在细节稍有不同。

①加载数据库驱动

    需要连接的是derby数据库,需要加载derby数据库的jdbc驱动类,位于"lib"目录下的derby.jar文件中。

在运行程序时需要将derby.jar文件的路径添加到classpath路径中。

//加载嵌入式derby的JDBC驱动类
Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
说明:网络模式derby的jdbc驱动类不是这个,在后面会介绍。

②数据库连接字符串

        成功地加载了数据库驱动类之后可以通过连接字符串来获取数据库连接了,

下面给出了连接字符串的基本格式:

        jdbc:derby:<数据库路径>[;create=True/False]

        另外,要注意的是由于介绍的derby工作在嵌入式模式,因此在应用程序退出之前应该关闭数据库。

关闭嵌入式的derby数据库也是使用连接字符串,下面给出了语法格式。

        jdbc:derby:;shutdown=True

//连接指定的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上市非常容易的。

3、使用嵌入式derby的简单案例

       提示:使用嵌入式derby数据库进行开发和使用其他数据库从编写代码的角度没有太大的不同,

但省去了安装与配置数据库的麻烦,这在特定的情况下将非常有用。

四、Derby数据库的网络模式应用

        derby数据库不但可以通过嵌入式模式工作,与其他的数据库相同,也可以工作在网络模式下

同时为多个应用程序服务,处理来自不同JVM的数据库操作请求。

1、网络模式derby的工作原理

        如果使用过其他的一些大型数据库,例如oracle、db2等,那么应该对数据库的网络

工作模式(c/s模式)的原理相当熟悉。

        在这种模式下derby与其他数据库一样作为一个独立的服务器工作在网络上,等待来自其他

java应用程序的连接请求。这种模式中derby可以同时为不同的java应用程序服务,处理来自不同JVM

的数据库操作请求,也就是说同一时刻可以有多个应用程序访问同一个derby数据库。

        说明:当不适合采用嵌入式进行操作时,例如应用程序与数据库不在同一台机器上,

或者数据库需要多用户并发访问时,就可以采用网络模式的的derby。

2、操作网络模式的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完全相同。

3、开发启动derby网络服务的程序

       实际应用中,不但可以通过前面介绍的命令来启动的derby数据库的网路服务,也可以通过自己开发的

java程序来启动derby数据库的网络服务。

       从前面的介绍中可以发现,通过命令启动derby数据库的网络服务需要使用

org.apache.derby.drda.NetworkServerControl类。同样,自己开发程序启动derby数据库的网络服务也需要

使用这个类,有兴趣的可以自行查阅API。

4、使用网络模式derby的简单案例

      客户端连接网络derby服务器需要的JDBC驱动类org.apache.derby.jdbc.ClientDriver

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值