六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 177|回复: 0

闲来无聊,玩玩JavaDB(Derby)

[复制链接]

升级  20%

2

主题

2

主题

2

主题

童生

Rank: 1

积分
10
 楼主| 发表于 2013-1-14 23:02:23 | 显示全部楼层 |阅读模式
Part I
新安装了 JDK 6 的程序员们也许会发现,除了传统的 bin、jre 等目录,JDK 6 新增了一个名为 javadb 的目录。这便是 Java 6 的新成员:Java DB。这是一个纯 Java 实现、开源的数据库管理系统(DBMS),源于 Apache 软件基金会(ASF)名下的项目 Derby。- 摘自百度百科。
一开始学习Java的时候,依稀还记得安装JDK的时候有个JavaDB。当初我这个连Java基本语法都不懂的人当然没去理会。慢慢的,在学习的过程中,我接触到了几款数据库管理系统(Oracle、DB2、SqlServer、MySql、Access等等)。但是,我们在开发的时候为了开发和测试,就需要安装和配置那么多不同种类的数据库,感觉十分的麻烦。于是我就开始寻找一款不需要安装、不需要配置、体积小而且功能强大、与Java兼容性好的数据库管理系统。终于让我找到了Derby。
 
Part II
首先列出一些Derby的JDBC连接配置

  • 驱动:org.apache.derby.jdbc.EmbeddedDriver
  • URL:jdbc:derby:<DataBaseName>[;create=true][;user=UserName][;password=Password]
  • 其中:数据库名必选,后面为可选参数,create参数用于指定,当数据库不存在时是否创建数据库。
 
Part III
下面借这个例子,让大家能感受一下Derby的方便。
<div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px;">package com.gzmu.derby.util;

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

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

public final class DerbyUtil {

private static volatile DerbyUtil instance;

public static DerbyUtil getInstance() {
if (instance == null) {
synchronized (DerbyUtil.class) {
if (instance == null)
                    instance = new DerbyUtil();
            }
        }
return instance;
    }

private static final String driverName = "org.apache.derby.jdbc.EmbeddedDriver";
private static final String url = "jdbc:derby:derbytest;create=true";

private final Log log = LogFactory.getLog(getClass());

private DerbyUtil() {
try {
            Class.forName(driverName);
        } catch (ClassNotFoundException e) {
            log.error(e);
        }
    }

public void execute(Processor processor) {
        Connection conn = null;
try {
            conn = DriverManager.getConnection(url);
            conn.setAutoCommit(false);
            conn.setSavepoint();
            processor.execute(conn);
            conn.commit();
        } catch (SQLException e) {
            log.error(e);
try {
                conn.rollback();
            } catch (SQLException e1) {
                log.error(e1);
            }
        } finally {
if (conn != null) {
try {
if (!conn.isClosed())
                        conn.close();
                } catch (SQLException e) {
                    log.error(e);
                }
            }
            conn = null;
        }
    }

}
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表