一、Derby介绍:Derby数据库是一个纯用Java实现的内存数据库,属于Apache的一个开源项目。由于是用Java实现的,所以可以在任何平台上运行;另外一个特点是体积小,免安装,只需要几个小jar包就可以运行了。
Derby数据库有两种运行模式:
       1) 内嵌模式。Derby数据库与应用程序共享同一个JVM,通常由应用程序负责启动和停止,对除启动它的应用程序外的其它应用程序不可见,即其它应用程序不可访问它;
       2) 网络模式。Derby数据库独占一个JVM,做为服务器上的一个独立进程运行。在这种模式下,允许有多个应用程序来访问同一个Derby数据库。
在Apache上,Derby有4种发布包,这里以bin发布包为例。bin发布包中含有包含了执行derby数据库工具、设置derby数据库环境的脚本文件、Demo、jar文件等。

       二、Derby安装:需要在Apache Derby官网上下载Derby得压缩包,然后解压,得到以下几个目录文件夹:

               1) bin目录,包含了一些工具脚本和设备环境的脚本;
               2) demo目录,包含了一些实例程序;
               3) docs目录,包含了Derby的文档;
               4) javadoc目录,包含了Derby的API文档;
               5) lib目录,包含了Derby数据库的jar文件;
               6) test目录,Derby的一些测试jar包;

           在解压好你的Derby之后,就需要开始配置了(也就是安装,由于Derby下载解压之后,没有可执行的比如.exe或者.mis可执行文件,所以Derby只需要手动配置系统的环境变量即可),比如,我将下载的Derby解压到E:java/Derby目录下,就可以进行简单的配置了(可以在cmd命令行里面配置,也可以通过界面配置环境变量)。

                   1、通过界面配置环境变量:

建立DERBY_HOME,值:E:java/Derby

Path加入:%DERBY_HOME%\bin

CLASSPATH加入:%DERBY_HOME%\lib\derby.jar;%DERBY_HOME%\lib\derbyclient.jar;%DERBY_HOME%\lib\derbytools.jar;%DERBY_HOME%\lib\derbynet.jar

        2、通过命令行设置:

               set DERBY_HOME=E:java/Derby

                将DERBY_HOME\bin目录添加到PATH环境变量中:

                set path=%DERBY_HOME%\bin;%PATH%

           这样可以简化你稍后在命令行中的输入,否则你每次都必须使用脚本的全路径或者你必须到DERBY_HOME\bin目录中才能执行脚本。
最后需要Derby的jar包添加到classpath环境变量中,在DERBY_HOME%\bin目录中提供了几个脚本用于设置classpath,以简化你手工在classpath中添加jar包的麻烦:1) setEmbeddedCP。当使用内嵌模式来运行Derby时,可以使用该脚本来设置。该脚本将derby.jar和derbytools.jar添加到环境变量中;2) setNetworkServerCP。当使用网络模式来运行Derby时,用该脚本来设置Derby服务端的classpath变量。该脚本将derbynet.jar添加到环境变量中;3) setNetworkClientCP。当使用网络模式来运行Derby时,用该脚本来设置Derby客户端的classpath变量。该脚本将derbyclient.jar和derbytools.jar添加到环境变量中。

                3、查看是不是设置成功:

                       在命令行中,输入sysinfo查看derby是不是正确配置,如果配置成功,则会出现如下的部分信息:

               -------- Derby 信息 --------

               E:\JavaDataBase\db-derby-10.10.1.1-bin\lib\derby.jar] 10.10.1.1 - (1458268)

               E:\JavaDataBase\db-derby-10.10.1.1-bin\lib\derbytools.jar] 10.10.1.1 - (1458268


               E:\JavaDataBase\db-derby-10.10.1.1-bin\lib\derbynet.jar] 10.10.1.1 - (1458268)

               E:\JavaDataBase\db-derby-10.10.1.1-bin\lib\derbyclient.jar] 10.10.1.1 - (145826

         到此,derby数据库就基本安装成功。

三、derby的使用:

       a:这里我将自己的数据库建立在E:\JavaDataBase\Data下。

       1、打开数据连接:

               我们跳转到E:\JavaDataBase\Data这个目录下,输入ij,将会进入connect 'jdbc:derby:Stu;create=true';(执行这个命令,将会检查你是不是又Stu这个数据库,如果没有,就会自动创建)

               执行connect 'jdbc:derby:Stu';将会在有这个数据库的情况下,会与Stu这个数据库建立连接。不会自动创建。

       2、建表:在建立了数据库之后,我们开始建立Stutable这个学生表:create table Stutable(id int primary key,name varchar(20));建立一个表;(也可以将这些增加删除修改的命令些在一个.sql文件里面,然后通过run 'sql文件全路径'命令运行)

       3、插入数据:insert into Stutable values(1,'张三');

       4、查看数据:select * from Stutable;

       5、修改数据:update Stutable set name='李四' where id=1;

       6、删除数据:delete from stutable where id=1;

       7、断开连接:disconnect;

       8、退出ij:exit;

       b:启动derby网络数据库。

       与上述内嵌模式的连接启动方式差不多,首先,运行Derby的bin文件夹下的startNetworkServer来启动网络数据库。

       1、连接网络数据库:与内嵌数据库连接几乎一样,connect 'jdbc:derby://loalhost:1527/数据库名;create=true';

       2、其余的操作就和内嵌的数据库操作一样。

  四、在java中怎么使用连接

   首先要导入Derby的jar包:derby.jar

 1、 在Java应用程序中访问Derby数据库
使用Java代码访问Derby数据库与访问其它数据库的区别如下:
1) JDBC驱动的不同;
2) 数据库连接URL的不同;
3) 在访问内嵌模式数据库时,需要显示关闭数据库。
下面分别实例访问内嵌模式和网络模式Derby数据库的代码
1) 访问内嵌模式Derby数据库
String driver = “org.apache.derby.jdbc.EmbeddedDriver”;
String url = “jdbc:derby:firstdb;create=true”;
Connection conn;
try {
Class.forName(driver);
conn = DriverManager.getConnection(url);
}catch(Exception e) {
……
}finally {
……
DriverManager.getConnection("jdbc:derby:;shutdown=true");
}
建立好连接后,其它的数据操作,如查询、更新数据都和其它数据库一样,这里不详述。有一点需要注意,通过Java应用程序访问内嵌模式Derby数据库时,应用程序有责任需要在程序结束时关闭Derby数据库,如上面代码finally中的
DriverManager.getConnection("jdbc:derby:;shutdown=true");
shutdown参数用于关闭Derby数据库,如果url中指定了数据库命,则只会关闭指定的数据库,而不会关闭整个Derby数据库。数据库关闭成功时,Derby会抛出一个错误码为XJ015和一个08006的异常表示关闭成功,应用程序可以不处理这两个异常。
2) 访问网络模式Derby数据库
网络模式和内嵌模式的不同出在于:
A. 数据库连接URL的不同;
B. 应用程序退出时无效关闭Derby数据库;
C. 数据库驱动的不同;
String driver = “org.apache.derby.jdbc.ClientDriver”;
String url = “jdbc:derby: //localhost:1527/firstdb;create=true”;
Connection conn;
try {
Class.forName(driver);
conn = DriverManager.getConnection(url);
}catch(Exception e) {
……
}
由于网络模式下,Derby数据库做为一个独立运行的数据库,可以被多个应用程序所访问,所以应用程序在运行结束时不应该关闭Derby数据库。

       2、 使用derbyrun.jar
通过derbyrun.jar也可以使用上面提到的sysinfo、ij、dblook三个脚本的功能,在使用derbyrun.jar前,除了DERBY_HOME环境变量外,你必须显示设置好classpath环境变量,可以通过上面提到的setEmbeddedCP、setNetworkServerCP、setNetworkClientCP几个脚本来设置,具体使用哪个脚本取决于你如何使用Derby数据库。
可以通过java –jar %DERBY_HOME%\lib\ derbyrun.jar来运行derbyrun中的工具:
1) 使用sysinfo。java –jar %DERBY_HOME%\lib\ derbyrun.jar sysinfo
2) 使用ij。java –jar %DERBY_HOME%\lib\ derbyrun.jar ij
3) 使用dblook。java –jar %DERBY_HOME%\lib\ derbyrun.jar dblook