2008年4月10日 edited by dingdangxiaoma
轉(zhuǎn)載別人的寫的例子:http://blog.csdn.net/Chinajash/archive/2007/01/08/1477568.aspx
Derby并不是一個(gè)新的數(shù)據(jù)庫產(chǎn)品,它是由IBM捐獻(xiàn)給Apache的DB項(xiàng)目的一個(gè)純Java數(shù)據(jù)庫,JDK6.0里面帶的這個(gè)Derby的版
本是10.2.1.7,支持存儲(chǔ)過程和觸發(fā)器;有兩種運(yùn)行模式,一種是作為嵌入式數(shù)據(jù)庫,另一種是作為網(wǎng)絡(luò)數(shù)據(jù)庫,前者的數(shù)據(jù)庫服務(wù)器和客戶端都在同一個(gè)
JVM里面運(yùn)行,后者允許數(shù)據(jù)庫服務(wù)器端和客戶端不在同一個(gè)JVM里面,而且允許這兩者在不同的物理機(jī)器上.值得注意的是JDK6里面的這個(gè)Derby支
持JDK6的新特性JDBC 4.0規(guī)范(JSR 221),現(xiàn)在我們?nèi)绻毩?xí)JDBC的用法,沒有必要單獨(dú)裝一個(gè)數(shù)據(jù)庫產(chǎn)品了,直接用Derby就行.安裝完JDK6.0后,Derby會(huì)被安裝到<JDK6_HOME>/db下面,在<JDK6_HOME>/db/demo/programs下面還有一些示例程序,演示了如何啟動(dòng),連接Derby數(shù)據(jù)庫以及JDBC API的使用.下面分兩種情況演示一下如何用代碼操作Derby數(shù)據(jù)庫,一種是嵌入式數(shù)據(jù)庫,一種是網(wǎng)絡(luò)數(shù)據(jù)庫.
一.嵌入式數(shù)據(jù)庫
package db;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class EmbeddedDerbyTester {
public static void main(String[] args) {
String driver = "org.apache.derby.jdbc.EmbeddedDriver";// 在derby.jar里面
String dbName = "EmbeddedDB";
String dbURL = "jdbc:derby:" + dbName + ";create=true";// create=true表示當(dāng)數(shù)據(jù)庫不存在時(shí)就創(chuàng)建它
try {
Class.forName(driver);
Connection conn = DriverManager.getConnection(dbURL);// 啟動(dòng)嵌入式數(shù)據(jù)庫
Statement st = conn.createStatement();
// st.execute("create table foo (FOOID INT NOT NULL,FOONAME VARCHAR(30) NOT NULL)");// 創(chuàng)建foo表
st.executeUpdate("insert into foo(FOOID,FOONAME) values (2,'chinajash2')");// 插入一條數(shù)據(jù)
ResultSet rs = st.executeQuery("select * from foo");// 讀取剛插入的數(shù)據(jù)
while (rs.next()) {
int id = rs.getInt(1);
String name = rs.getString(2);
System.out.println("id=" + id + ";name=" + name);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
二.網(wǎng)絡(luò)數(shù)據(jù)庫
package db;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import org.apache.derby.drda.NetworkServerControl;
public class NetworkServerDerbyTester {
public static void main(String[] args) {
String driver = "org.apache.derby.jdbc.ClientDriver";// 在derbyclient.jar里面
String dbName = "NetworkDB";
String connectionURL = "jdbc:derby://localhost:1527/" + dbName
+ ";create=true";
try {
/*
* 創(chuàng)建Derby網(wǎng)絡(luò)服務(wù)器,默認(rèn)端口是1527,也可以通過運(yùn)行
* <Derby_Home>"frameworks"NetworkServer"bin"startNetworkServer.bat
* 來創(chuàng)建并啟動(dòng)Derby網(wǎng)絡(luò)服務(wù)器,如果是Unix,用startNetworkServer.ksh
*/
NetworkServerControl derbyServer = new NetworkServerControl();// NetworkServerControl類在derbynet.jar里面
PrintWriter pw = new PrintWriter(System.out);// 用系統(tǒng)輸出作為Derby數(shù)據(jù)庫的輸出
derbyServer.start(pw);// 啟動(dòng)Derby服務(wù)器
Class.forName(driver);
Connection conn = DriverManager.getConnection(connectionURL);
// do something
Statement st = conn.createStatement();
//st.execute("create table foo (FOOID INT NOT NULL,FOONAME VARCHAR(30) NOT NULL)");// 創(chuàng)建foo表
st.executeUpdate("insert into foo(FOOID,FOONAME) values (2,'chinajash2')");// 插入一條數(shù)據(jù)
ResultSet rs = st.executeQuery("select * from foo");// 讀取剛插入的數(shù)據(jù)
while (rs.next()) {
int id = rs.getInt(1);
String name = rs.getString(2);
System.out.println("id=" + id + ";name=" + name);
}
derbyServer.shutdown();// 關(guān)閉Derby服務(wù)器
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
例子都是一樣子的,稍有改動(dòng)。