複製鏈接
請複製以下鏈接發送給好友

Derby

鎖定
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編寫的數據庫
目    標
開放源碼數據庫
主要特點
程序小巧
基    於
Apache License 2.0
作    用
可以做為單獨的數據庫服務器使用,也可以內嵌在應用程序中使用

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>
接下來就可以創建數據庫了。
例:
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
斷開連接:
ij> disconnect;
退出ij:
ij> exit;

Derby在程序中使用

在Java程序中使用Derby
首先要把相關的Derby jar包加進來(Build Path)。
如果是Maven工程,加入以下依賴
        <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代碼進行測試:
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,完成了。
運行後控制枱輸出如下信息:
Loadedtheappropriatedriver
starting
E:\Java\Joy\derby\Derby_data\firstdb
1
Hotpepper
[1] 
參考資料