apache derby 上手笔记

Apache Derby, 是一个完全由java实现的关系数据库。它的目标是实现一个非常小的数据库,从而你能够很容易的将它嵌入到任何基于java的解决方案中。当然Derby也提供了传统的基于C/S架构的数据库框架。但是Derby对我的最大吸引力任然是其嵌入式数据库方式。

1. 下载及安装
    到http://db.apache.org/derby/derby_downloads.html,根据你的系统是windows或unix/Linux下载相应的版本,然后简单的解压到需要的安装目录即可。本文为例,将其解压到目录: D:/Program Files/Java/db-derby

2.  环境变量设置
    首先要加入环境变量DERBY_INSTALL ,值为第一步的解压目录(D:/Program Files/Java/db-derby);然后需要在classpath中加入$(DERBY_INSTALL)/lib目录下的derby.jar和derbytools.jar( %DERBY_INSTALL%/lib/derby.jar;%DERBY_INSTALL%/lib/derbytools.jar )。具体方法就不详细阐述了。如果设置正确的话,在终端中运行java org.apache.derby.tools.sysinfo,会打印出类似以下的信息:
------------------ Java 信息 ------------------
Java 版本:        1.6.0_03
Java 供应商:      Sun Microsystems Inc.
Java 主目录:      D:/Program Files/Java/jdk/jre
Java 类路径:      D:/Program Files/Java/db-derby/lib/derby.jar;D:/Program Files/Java/db-derby/lib/derbytools.jar;.
OS 名:            Windows XP
OS 体系结构:      x86
OS 版本:          5.1
Java 用户名:      wdmy
Java 用户主目录:D:/wdmy/profile
Java 用户目录:    C:/Documents and Settings/wdmy
java.specification.name: Java Platform API Specification
java.specification.version: 1.6
--------- Derby 信息 --------
JRE - JDBC: Java SE 6 - JDBC 4.0
[D:/Program Files/Java/db-derby/lib/derby.jar] 10.3.2.1 - (599110)
[D:/Program Files/Java/db-derby/lib/derbytools.jar] 10.3.2.1 - (599110)
------------------------------------------------------
----------------- 语言环境信息 -----------------
当前语言环境:  [中文/中国 [zh_CN]]
找到支持的语言环境:[cs]
         版本:10.3.2.1 - (599110)
找到支持的语言环境:[de_DE]
         版本:10.3.2.1 - (599110)
找到支持的语言环境:[es]
         版本:10.3.2.1 - (599110)
找到支持的语言环境:[fr]
..............
..............

3. 使用数据库
     为了操作数据库,我们需要使用derby自带的脚本工具及:ij。
在终端中输入:java org.apache.derby.tools.ij
输出如下:
ij version 10.3
ij>
然后即可在>后面输入ij命令。

4. 连接及创建数据库
    derby中,连接和创建数据库有相似的语法,唯一不同的是创建数据库会在命令后面加上create=true 属性。
例:
创建MyDbTest数据库:
ij> connect 'jdbc:derby:MyDbTest;create=true';
连接MyDbTest数据库:
ij> connect 'jdbc:derby:MyDbTest';

MyDbTest所在目录是当前目录,即你运行ij时所在的目录。当然你也可以具体指定目录:
ij> connect 'jdbc:derby:/home/bill/databases/MyDbTest'; 

5. 执行SQL语句
    连接上数据库之后,就可以使用SQL语句进行数据库操作了,例如:
ij(CONNECTION1)> create table derbyDB(num int, addr varchar(40));
ij(CONNECTION1)> insert into derbyDB values (1956,'Webster St.');
ij(CONNECTION1)> insert into derbyDB values (1910,'Union St.');
ij(CONNECTION1)> update derbyDB set num=180, addr='Grand Ave.' where num=1956;
ij(CONNECTION1)> select * from derbyDb;

6. 其它命令
断开连接:
ij> disconnect;
退出ij:
ij> exit;

7. 在java程序中使用嵌入式derby数据库
    在java程序中使用嵌入式derby数据库的模型如下:
Figure 1: Embedded Architecture
应用程序以及数据库驱动都运行在jvm中,而数据文件保存在文件系统里。应用程序通过JDBC对数据进行操作,在使用上和一般的jdbc用法一样。需要指出的是
jdbc驱动为:
另外需要知名数据库文件所在文件系统中的位置。

示例:

 

import  java.sql.Connection;
import  java.sql.DriverManager;
import  java.sql.ResultSet;
import  java.sql.SQLException;
import  java.sql.Statement;

public   class  Test  {
 
private static String driver = "org.apache.derby.jdbc.EmbeddedDriver";
 
private static String protocol = "jdbc:derby:";
 String dbName 
= "c:/derbyDB";

 
static void loadDriver() {
  
try {
   Class.forName(driver).newInstance();
   System.out.println(
"Loaded the appropriate driver");
  }
 catch (Exception e) {
   e.printStackTrace();
  }

 }


 
public void doIt() {
  Connection conn 
= null;
  Statement s 
= null;
  ResultSet rs 
= null;

  System.out.println(
"starting...");
  
try {
   conn 
= DriverManager.getConnection(protocol + dbName
     
+ ";create=true");
  }
 catch (SQLException e) {
   e.printStackTrace();
  }


  System.out.println(
"Connected to and created database " + dbName);

  
try {
   s 
= conn.createStatement();
   s.executeUpdate(
"create table derbyDB(num int, addr varchar(40))");
   s.executeUpdate(
"insert into derbyDB values (1956,'Webster St.')");
   s.executeUpdate(
"insert into derbyDB values (1910,'Union St.')");
   s.executeUpdate(
"update derbyDB set num=180, addr='Grand Ave.' where num=1956");
   rs 
= s.executeQuery("select * from derbyDb");
   
while (rs.next()) {
    System.out.println(rs.getInt(
1));
    System.out.println(rs.getString(
2));
   }

  }
 catch (SQLException e1) {
   e1.printStackTrace();
  }

  
try {
   conn.close();
   conn 
= null;
   s.close();
   s 
= null;
   rs.close();
   rs 
= null;
  }
 catch (Exception e) {
   e.printStackTrace();
  }

 }


 
public static void main(String[] args) ...
}


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值