Apache Derby是一个完全用java编写的数据库,Derby是一个Open source的产品,基于Apache License 2.0分发。
Apache Derby非常小巧,核心部分derby.jar只有2M,所以既可以做为单独的数据库服务器使用,也可以内嵌在应用程序中使用。Cognos 8 BI的Content Store默认就是使用的Derby数据库,可以在Cognos8的安装目录下看到一个叫derby10.1.2.1的目录,就是内嵌的10.1.2.1 版本的derby。
-
中文名
- Derby 含 义
- java编写的数据库
-
目 标
- 开放源码数据库 主要特点
- 程序小巧
Derby发展历史
编辑
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 通用数据。
Derby主要特点
编辑
程序小巧,基础引擎和内嵌的JDBC驱动总共大约2MB。
基于Java、JDBC和SQL标准。
提供内嵌的JDBC驱动,你可把Derby嵌入到基于Java的应用程序中。
支持客户端/服务器模式。
安装、布置和使用简单。
Derby使用技巧
编辑Derby配置环境变量
建立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
Derby创建数据库
打开命令行,进入想要放置数据库的目录,我的是: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;
Derby在程序中使用
在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 * from firsttable"
);
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
|