Derby数据库是由Apache下的一个开源的DB项目,与其它DB相比,它有如下的优点:
1. 完全用Java实现
2. 支持JDBC及SQL标准
3. 全部文件只有2M左右
4. 提供嵌入式的支持,可以简单地嵌入到其它的Java项目
5. 同时提供网络数据库的功能,可以用C/S方式访问
一、下载
Derby项目的首页为:http://db.apache.org/derby/index.html,大家可以在该网站找到下载路径及相关文档,现在的最新版本为10.5.3.0。
二、安装
Derby下载文件为一个Zip压缩档,只需将该压缩档解压到一个目录(这里用DERBY_HOME代替)即可。
三、本地访问
Derby可以作为一个本地数据库使用,这点就像是Access,下面将介绍如何使用Derby提供的ij工具来建立一个新的DB。
新建一个demo目录,在demo目录下运行:
DERBY_HOME\bin\ij
然后输入
connect'jdbc:derby:myDemo;create=true';
建立一个新的DB名字为myDemo,保存在当前目录,关于ij的用法可以输入help;查看相关帮助。
四、网络访问
在demo目录下,运行
java-jarDERBY_HOME\lib\derbyrun.jarserverstart
这时,Derby服务器已启动成功,默认的端口为1527,打开另外一个Console,运行ij
connect'jdbc:derby://localhost:1527/myDemo';
则可成功的连接到刚才建立的myDemo数据库,为便于下面测试,运行以下语句新建一个test表,并插入两笔数据。
createtabletest(idint,namevarchar(20));
insertintotestvalues(0,'Jack');
insertintotestvalues(1,'Tom');
五、Java代码访问
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class DerbyDemo { static String EMBEDED_DRIVER = "org.apache.derby.jdbc.EmbeddedDriver"; static String NET_DRIVER = "org.apache.derby.jdbc.ClientDriver"; static String DB_NAME = "myDemo"; static String HOST_URL = "//localhost:1527/"; /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Connection conn = null; Statement stmt = null; ResultSet rs = null; try { conn = getNetwrokConnect(); stmt = conn.createStatement(); rs = stmt.executeQuery("select * from test"); while (rs != null && rs.next()) { System.out.println(rs.getString(2)); } } catch (Exception ex) { System.out.println(ex.getMessage()); } finally { try { rs.close(); } catch (Exception e) { } rs = null; try { stmt.close(); } catch (Exception e) { } stmt = null; try { conn.close(); } catch (Exception e) { } conn = null; } } public static Connection getEmbededConnect() { try { Class.forName(EMBEDED_DRIVER); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block throw new RuntimeException(e.getMessage()); } try { return DriverManager.getConnection("jdbc:derby:" + DB_NAME); } catch (SQLException e) { // TODO Auto-generated catch block throw new RuntimeException(e.getMessage()); } } public static Connection getNetwrokConnect() { try { Class.forName(NET_DRIVER); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block throw new RuntimeException(e.getMessage()); } try { return DriverManager.getConnection("jdbc:derby:" + HOST_URL + DB_NAME); } catch (SQLException e) { // TODO Auto-generated catch block throw new RuntimeException(e.getMessage()); } } }
将DerbyDemo保存到demo目录下,运行如下代码编译并运行即可通过网络访问(需按照第四步启动服务器)
javac -cp DERBY_HOME\lib\derbyclient.jar DerbyDemo.java
java -cp .;DERBY_HOME\lib\derbyclient.jar DerbyDemo
使用嵌入式访问只需将main中的getNetwrokConnect改为getEmbededConnect即可。