Derby数据库
概述
Derby是Apache组织提供一个基于java和SQL的关系数据库管理系统。Derby是用纯java编写和实现的,它可以紧密的嵌入到任何基于Java解决方案应用中。Derby提供两种部署方式:嵌入式和服务器模式。嵌入式:Derby被单个用户的Java应用程序使用,在这种模式下,Derby和应用程序运行在同一个JVM中。Derby对于终端用户几乎是透明的,因为它的启动和终止都是由应用程序来控制,而不需要任何的管理。
服务器模式:Derby由应用程序启动,此时通过用户可以通过网络连接。在这种模式下,Derby运行在服务器主机的JVM中。其他JVM的应用程序通过连接服务器来访问数据库。
下载
下载地址:http://db.apache.org/derby/derby_downloads.html
笔者在这里使用最新版本
derby嵌入式数据库开发简单流程
1. 在db.apache.org/derby页面中download页面下载bin包;
2. 解压缩bin包到一个磁盘中,并在环境变量中设置该路径名称为DERBY_HOME;
3. 将DERBY_HOME中的lib文件夹下两个重要的jar包添加到classpath环境变量中:
%DERBY_HOME%\lib\derby.jar;
%DERBY_HOME%\lib\derbytools.jar;
4. 运行命令行,进入待生成数据库文件夹的位置,准备生成数据库文件(该文件将不依赖于具体的路径,如果不是项目路径,在生成数据库后,也可以直接将数据库文件复制到程序路径下);
5. 进入derby工作模式:
java org.apache.derby.tools.ij
6. 新建数据库:
connect 'jdbc:derby:hxy;create=true';
其中hxy表示新建立数据库的名称,该名称也将作为生成的数据库的文件夹名称出现在当面操作目录下。create属性在数据库文件不存在的情况下是否创建该数据库,默认为false,可以不填写。
7. 创建表格:
create table employee(id integer not null,name varchar(40) not null,primary key(id));
8. 填充数据:
insert into employee values (1, 'John Smith');
9. 查询结果:
select * from employee;
(注意每一个命令都需要用分号结尾,对于没有使用分号结尾的命令,即使使用回车另起一行也不执行,这个行为和mysql的命令行类似。)
10. 退出数据库:
exit;
11. 将数据库文件复制到项目文件夹下(如果直接在项目文件夹下建立,则无需该操作);
12. 在项目中创建访问hxy数据库的java文件:
package org;
import java.sql.*;
public class TableFiller {
private Connection conn = null;
private PreparedStatement insertEmployee = null;
String driverName ="org.apache.derby.jdbc.EmbeddedDriver";
String url ="jdbc:derby:hxy";
public void loadDrivers() throws SQLException,ClassNotFoundException {
Class.forName(driverName);
conn = DriverManager.getConnection(url);
insertEmployee = conn.prepareStatement("INSERT INTO Employee VALUES(?, ?)");
}
public static void main(String args[])throws Exception {
TableFiller tf = new TableFiller();
tf.loadDrivers();
for (int i=1; i<1001; i++) {
String empoloyeeNum = "" + i;
tf.addEmployee(empoloyeeNum, "employee #" + i);
System.out.print("\n" + empoloyeeNum);
}
tf.closeAll();
}
public void addEmployee(String id, String employeeName)throws SQLException {
insertEmployee.setString(1, id);
insertEmployee.setString(2, employeeName);
insertEmployee.executeUpdate();
}
public void closeAll()throws SQLException {
insertEmployee.close();
conn.close();
}
}
该访问方式是通过相对路径的方式,也可以处于安全考虑,将数据文件存储到一个绝对路径下。
13. 进入控制台,验证查询结果,查看是否按照程序执行,插入1000条数据。
注:程序执行后,对于derby数据库的独占就取消,因此可以通过命令行的方式来访问hxy数据库,否则访问会出现无法连接的情况。
暂时就这些心得,随着之后的使用,可能会更加深入介绍derby的其他内容。
Derby eclipse插件安装
安装Derby Plugin到Eclipse:
首先从Derby下载页面 查找最新官方发布的版本(或者需要的版本),下载derby_core_plugin 和 derby_ui_plugin这两个必须的Eclipse插件下载到计算机,并解压缩到Eclipse目录下的plugins文件夹下。注意,压缩包中所有文件可能都默认在plugin文件夹下,所以解压缩後,將得到plugin文件夹(也可能会叫plugin(1))下的所有文件拷贝到eclipse安装目录下的plugin文件夹中。
被拷贝的文件应该是org.apache.derby.core_10.6.2, org.apache.derby.ui_1.1.2, 和 org.apache.derby.plugin.doc_1.1.2这样3个名称的(根据下载选择,版本号会有不同)。
使用Derby同Eclipse:
首先,添加DerbyJava项目。运行Eclipse(如果Eclipse在安装Derby前就开着,请重新启动Eclipse)。在Package Explorer中选择Java项目,右键,依次选择Apache Derby,Add Apache Derby nature.到此,添加Derby完成。
你可以再次在项目上点击右键,Apache Derby,选择sysInfo(Derby System Information),便能在Eclipse的控制台输出中看到Derby系统信息。如下:
在使用hibernate的访问derby的时候,遇到了一个问题,就是如何映射boolean类型的数据呢?
搜索版体半天无果。
原来derby不支持boolean,
来源http://db.apache.org/ddlutils/databases/derby.html
| JDBC Type | Database Type | Additional comments |
| ARRAY | BLOB | Will be read back as BLOB |
| BIGINT | BIGINT |
|
| BINARY | CHAR(n) FOR BIT DATA |
|
| BIT | SMALLINT | Cloudscape/Derby have no native boolean type |
| BLOB | BLOB |
|
| BOOLEAN | SMALLINT | Cloudscape/Derby have no native boolean type |
| CHAR | CHAR |
|
| CLOB | CLOB |
|
| DATALINK | LONG VARCHAR FOR BIT DATA | Will be read back as LONGVARBINARY |
| DATE | DATE |
|
| DECIMAL | DECIMAL |
|
| DISTINCT | BLOB | Will be read back as BLOB |
| DOUBLE | Cloudscape: DOUBLE PRECISION |
|
| FLOAT | Cloudscape: DOUBLE PRECISION | Will be read back as DOUBLE |
| INTEGER | INTEGER |
|
| JAVA_OBJECT | BLOB | Will be read back as BLOB |
| LONGVARBINARY | LONG VARCHAR FOR BIT DATA |
|
| LONGVARCHAR | LONG VARCHAR |
|
| NULL | LONG VARCHAR FOR BIT DATA | Will be read back as LONGVARBINARY |
| NUMERIC | NUMERIC |
|
| OTHER | BLOB | Will be read back as BLOB |
| REAL | REAL |
|
| REF | LONG VARCHAR FOR BIT DATA | Will be read back as LONGVARBINARY |
| SMALLINT | SMALLINT |
|
| STRUCT | BLOB | Will be read back as BLOB |
| TIME | TIME |
|
| TIMESTAMP | TIMESTAMP |
|
| TINYINT | SMALLINT | Will be read back as SMALLINT |
| VARBINARY | VARCHAR(n) FOR BIT DATA |
|
| VARCHAR | VARCHAR |
|

1240

被折叠的 条评论
为什么被折叠?



