Apache Derby 是 Apache 軟體基金會所研發的開放原始碼資料庫管理系統；由於 Derby 是一個純 Java 程式，因此只需要作業系統支援 Java 虛擬機器，Derby 便可執行。 特性 Derby 是特別地為 Java 環境進行最佳化，Derby 本身不僅是一個純 Java 程式，而且 Derby 在執行使用者的 SQL 程式時，能夠把 SQL 編譯成 Java bytecode 並以系統的 Java 虛擬機器執行。由於 SQL 程式轉成的 Java bytecode 能被 JIT 動態翻譯，因此 Derby 可能比傳統的資料庫管理系統更佳的效能。 其他特性包括： 支援主從架構或 嵌入環境 多執行緒 ACID Java 資料庫連線（JDBC） 低系統需求：約佔 2 MB 的硬碟空間，壓縮後更只是 600KB 商業的版本 Cloudscape － IBM 的 Derby 版本。 Java DB － 昇陽電腦自 Java 6 把 Derby 包括於 JDK。 安裝 下載解壓後，只需要配置好相關的環境變數： 建立 DERBY_HOME，值例：Ddbderby101020bin 在 Path 加入： DERBY_HOMEbin 在 CLASSPATH 加入： DERBY_HOMElibderbyjar DERBY_HOMElibderbyclientjar DERBY_HOMElibderbytoolsjar DERBY_HOMElibderbynetjar derbyjar 是引擎庫。對嵌入式是必須的；對客戶 伺服器模式，伺服器端必須此庫 derbytoolsjar 是 Derby 工具庫，如 ij dblook importexport derbyoptionaltoolsjar derbynetjar 透過網路伺服器連線 Derby（非嵌入方式） derbyclientjar 網路客戶端啟動程式 derbyrunjar 執行 jar 檔案用於簡便地啟動 Derby 工具或伺服器。需要與其他 jar 檔案在同一目錄下 java jar DERBY_HOMElibderbyrunjar ij p propertiesfile sql_script java jar DERBY_HOMElibderbyrunjar sysinfo cp cp help java jar DERBY_HOMElibderbyrunjar dblook arg or no arguments for usage java jar DERBY_HOMElibderbyrunjar server arg or no arguments for usage 使用 sysinfo 或 java orgapachederbytoolssysinfo 檢視安裝資訊版本 啟動 derby 的網路伺服器，預設監聽 127001 的 1527 埠，可以修改監聽的 IP 和 PORT java orgapachederbydrdaNetworkServerControl start p 1388 指定埠 或者 startNetworkServer h myhost p 1388 指定 ip 和埠 或者 java jar derbylibderbyrunjar server start dblook 工具是一個 Data Definition Language DDL 生成工具，可以解除安裝（dump）所有或部分使用者指定的 DDL 到一個檔案或控制檯。 啟動 JDBC 客戶端工具 ij，可以執行 SQL 指令碼或者互動式查詢： ij 或 java orgapachederbytoolsij 或 java jar derbylibderbyrunjar ij p ijproperties ij 命令列引數： ij Dijconnectionmynetconnectionjdbcderbymyserver1527mydb Dijuserme Dijpasswordnocansay 也可以建立一個名為 ijproperties，用於預設連線資料庫： ijdriverorgapachederbyjdbcClientDriver ijprotocoljdbcderbylocalhost1527 ijdatabaseCOREJAVAcreatetrue 或者先設定環境變數： set DERBY_OPTSDijprotocoljdbcderbylocalhost 在 ij 客戶端工具內部，不區分大小寫，每條命令都應以分號結尾。 連線資料庫並在必要時建立資料庫： connect jdbcderbymydbcreatetrueusertestpasswordtest 建立 連線嵌入式資料庫， 如果只寫資料庫名則會在當前目錄下建立資料庫目錄 也可以指定其他位置進行建立 jdbcderbydabuserDBcreatetrueusertestpasswordtest connect jdbcderbyhost1527dbnamecreatetrue 建立 連結網路資料庫 檢視 ij 的命令： help 執行 sql 檔案： run DderbydemoToursDB_schemasql RunResultOutputtxt； 斷開資料庫連線（並停止內嵌模式資料庫） disconnect 退出客戶端： exit 關閉資料庫伺服器： java jar derbylibderbyrunjar server shutdown 命令行當前目錄中 derbylog 日誌檔案，derby 在其中記錄的資料庫啟動、關閉的資訊。 Java 程式訪問 Derby 資料庫： package test import javasqlConnection import javasqlDriverManager import javasqlResultSet import javasqlStatement public class EmbeddedDerbyTester public static void main String args String driver orgapachederbyjdbcEmbeddedDriver 在 derbyjar 裡面 String dbNameEmbeddedDB String dbURL jdbcderbydbNamecreatetruecreatetrue 表示當資料庫不存在時就建立它 try ClassforName driver Connection conn DriverManagergetConnection dbURL 啟動 連線嵌入式資料庫 Statement st conncreateStatement stexecute create table foo FOOID INT NOT NULLFOONAME VARCHAR 30 NOT NULL 建立 foo 表 stexecuteUpdate insert into foo FOOIDFOONAME values 1chinajash 插入一條資料 ResultSet rs stexecuteQuery select from foo 讀取剛插入的資料 while rsnext int id rsgetInt 1 String name rsgetString 2 Systemoutprintln ididnamename catch Exception eeprintStackTrace 啟動 Derby 網路伺服器的 Java 程式： package test import javaioPrintWriter import javasqlDriverManager import orgapachederbydrdaNetworkServerControl public class NetworkServerDerbyTester public static void main String args String driver orgapachederbyjdbcClientDriver 在 derbyclientjar 裡面 String dbNameNetworkDB String connectionURL jdbcderbylocalhost1527 dbName createtrue try 啟動 Derby 網路伺服器，預設埠是 1527 也可以透過執行 Derby_HomeframeworksNetworkServerbinstartNetworkServerbat 來啟動 Derby 網路伺服器；如果是 Unix 用 startNetworkServer NetworkServerControl derbyServer new NetworkServerControl NetworkServerControl 類在 derbynetjar 裡面 PrintWriter pw new PrintWriter Systemout 用系統輸出作為 Derby 資料庫的輸出 derbyServerstart pw 啟動 Derby 伺服器 ClassforName driver DriverManagergetConnection connectionURL do something here derbyServershutdown 關閉 Derby 伺服器 catch Exception ex exprintStackTrace Schema 實現 Apache Derby 資料庫（即 Java DB）的任何 connection 的當前 schema，預設是對應於該使用者名稱的一個 schema。如果無使用者名稱被提供，那麼當前使用者名稱與當前 schema 預設是 APP。 但即使當前 schema 被設定為使用者名稱，這個 schema 仍然可能不存在。一個 schema 只能被建立：透過 CREATE SCHEMA 語句顯式建立或者建立一個物件（例如表等）來隱式建立。 APP schema 總是存在，不需要建立。 如果你的程式試圖訪問當前 schema 但該 schema 下沒有建立任何物件，就會遇到 schema not exists 錯誤。 註釋 參見 Berkeley DB Java Edition 另一純 Java 資料庫管理系統。 外部連結 Derby 官方網站 Cloudscape 官方網站 Java DB 官方網站 Apache Derby 專案資源 IBM Derby Category 開源資料庫管理系統 Category 用 Java 程式設計的自由軟體 CategoryIBM 軟體 Category 使用 Apache 許可證的軟體