Apache Derby 项目的目标是构建一个完全用 Java 编程语言编写的、易于使用却适合大多数应用程序的开放源码数据库。可以想像,开发一个数据库并不简单,Apache Derby 数据库也不例外(因为它是个开放源码软件,所以您可以自行查看它)。但是 Derby 项目并不是从零开始的。回到 1996 年,一个叫做 Cloudscape, Inc 的新公司成立了,公司的目标是构建一个用 Java 语言编写的数据库服务器。公司的个发行版在一年之后推出,后来产品的名称变成 Cloudscape。1999 年,Cloudscape, Inc. 被大型数据库厂商 Informix Software, Inc. 收购。
Informix Software 在 2001 年又被 IBM 收购,然后 IBM Cloudscape™ 数据库系统在许多 IBM 的产品中被用作内嵌的数据库引擎。2004 年 4 月,IBM 把 Cloudscape 数据库软件赠送给 Apache 软件基金会,从此 Apache Derby 项目诞生了。
这时,Cloudscape 数据库几乎已经有了 50 万行 Java 代码,所以花了一些时间才正确地把它转换成 Apache Derby 项目。经过孵化期之后,Derby 于 2005 年 7 月正式发布。所以虽然看起来像是新事物,但是 Derby 背后已经开发了几乎十年了。
IBM 继续管理 Cloudscape 数据库,该数据库是从 Apache Derby 源代码构建的。IBM 把 Cloudscape 数据库作为免费下载提供,而且为需要增强信心的客户提供收费的咨询服务。另外,Sun Microsystems 已经宣布它将包含一个修补过的 Apache Derby 版本作为它的 Java 数据库产品。来自 IBM 和 Sun 的强大投入,强化了 Apache Derby 数据库的光明前景。Derby 数据库也符合许多数据库标准,例如 SQL-92 和 JDBC 3.0 版本,所以开始用 Derby 数据库系统开发的应用程序可以容易地移植到其他数据库系统,例如 IBM DB2 通用数据。
2主要特点编辑
程序小巧,基础引擎和内嵌的JDBC驱动总共大约2MB。
基于Java、JDBC和SQL标准。
提供内嵌的JDBC驱动,你可把Derby嵌入到基于Java的应用程序中。
支持客户端/服务器模式。
安装、布置和使用简单。
3使用技巧编辑
配置环境变量
建立DERBY_HOME,值:E:\Java\Joy\derby\db- derby-10.5.3.0-bin\db-derby-10.5.3.0-bin
在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
创建数据库
打开命令行,进入想要放置数据库的目录,我的是:E:\Java\Joy \derby\Derby_data
然后输入ij
将会看到:
ij 版本 10.5
ij>
ij>
接下来就可以创建数据库了。
例:
1、 创建firstdb数据库:
ij> connect 'jdbc:derby:firstdb;create=true';
连接firstdb数据库:
ij> connect 'jdbc:derby:firstdb';
1、 创建firstdb数据库:
ij> connect 'jdbc:derby:firstdb;create=true';
连接firstdb数据库:
ij> connect 'jdbc:derby:firstdb';
查询数据库等操作,只需要输入相应的Sql语句即可。
2、创建一个table:
create table firsttable(id int primary key, name varchar(20));
3、插入数据:
insert into firsttable values(1, 'Hotpepper');
在命令行测试一下:
select * from firsttable;
结果如下:
ID |NAME
——————————–
1 |Hotpepper
——————————–
1 |Hotpepper
断开连接:
ij> disconnect;
退出ij:
ij> exit;
在程序中使用
在Java程序中使用Derby
首先要把相关的Derby jar包加进来(Build Path)。
如果是Maven工程,加入以下依赖
1 2 3 4 5 | < dependency > < groupId >org.apache.derby</ groupId > < artifactId >derby</ artifactId > < version >10.5.3.0</ version > </ dependency > |
把derby-10.5.3.0.jar加进来,如果没有加进来会出现 “java.lang.ClassNotFoundException: org.apache.derby.jdbc.EmbeddedDriver”错误
好了,下面写JAVA代码进行测试:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | importjava.sql.Connection; importjava.sql.DriverManager; importjava.sql.ResultSet; importjava.sql.SQLException; importjava.sql.Statement; publicclassTest{ privatestaticStringdriver= "org.apache.derby.jdbc.EmbeddedDriver" ; privatestaticStringprotocol= "jdbc:derby:" ; StringdbName= "E:\\Java\\Joy\\derby\\Derby_data\\firstdb" ; publicstaticvoidloadDriver(){ try { Class.forName(driver).newInstance(); System.out.println( "Loadedtheappropriatedriver" ); } catch (Exceptione){ e.printStackTrace(); } } publicvoiddoIt(){ Connectionconn= null ; Statements= null ; ResultSetrs= null ; System.out.println( "starting" ); try { conn=DriverManager.getConnection(protocol+dbName+ ";create=true" ); } catch (SQLExceptione){ e.printStackTrace(); } System.out.println(dbName); try { s=conn.createStatement(); rs=s.executeQuery( "select*fromfirsttable" ); while (rs.next()){ System.out.println(rs.getInt( 1 )); System.out.println(rs.getString( 2 )); } } catch (SQLExceptione1){ e1.printStackTrace(); } try { conn.close(); conn= null ; s.close(); s= null ; rs.close(); rs= null ; } catch (Exceptione){ e.printStackTrace(); } } publicstaticvoidmain(String[]args){ Testt=newTest(); loadDriver(); t.doIt(); } } |
OK,完成了。
运行后控制台输出如下信息:
1 2 3 4 5 | Loadedtheappropriatedriver starting E:\Java\Joy\derby\Derby_data\firstdb 1 Hotpepper |