Derby数据库是由Apache下的一个开源的DB项目,与其它DB相比,它有如下的优点:

1. 完全用Java实现

2. 支持JDBC及SQL标准

3. 全部文件只有2M左右

4. 提供嵌入式的支持,可以简单地嵌入到其它的Java项目

5. 同时提供网络数据库的功能,可以用C/S方式访问

 

一、下载

Derby项目的首页为:http://db.apache.org/derby/index.html,大家可以在该网站找到下载路径及相关文档,现在的最新版本为10.5.3.0。

 

二、安装
Derby下载文件为一个Zip压缩档,只需将该压缩档解压到一个目录(这里用DERBY_HOME代替)即可。

 

三、本地访问

Derby可以作为一个本地数据库使用,这点就像是Access,下面将介绍如何使用Derby提供的ij工具来建立一个新的DB。

新建一个demo目录,在demo目录下运行:

DERBY_HOME\bin\ij

然后输入

connect'jdbc:derby:myDemo;create=true';

建立一个新的DB名字为myDemo,保存在当前目录,关于ij的用法可以输入help;查看相关帮助。

 

 

四、网络访问

在demo目录下,运行

java-jarDERBY_HOME\lib\derbyrun.jarserverstart

这时,Derby服务器已启动成功,默认的端口为1527,打开另外一个Console,运行ij
connect'jdbc:derby://localhost:1527/myDemo';

则可成功的连接到刚才建立的myDemo数据库,为便于下面测试,运行以下语句新建一个test表,并插入两笔数据。

createtabletest(idint,namevarchar(20));
insertintotestvalues(0,'Jack');
insertintotestvalues(1,'Tom');

 

五、Java代码访问

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

public class DerbyDemo {

	static String EMBEDED_DRIVER = "org.apache.derby.jdbc.EmbeddedDriver";
	static String NET_DRIVER = "org.apache.derby.jdbc.ClientDriver";

	static String DB_NAME = "myDemo";
	static String HOST_URL = "//localhost:1527/";

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Connection conn = null;
		Statement stmt = null;
		ResultSet rs = null;
		try {
			conn = getNetwrokConnect();
			stmt = conn.createStatement();
			rs = stmt.executeQuery("select * from test");
			while (rs != null && rs.next()) {
				System.out.println(rs.getString(2));
			}
		} catch (Exception ex) {
			System.out.println(ex.getMessage());
		} finally {
			try {
				rs.close();
			} catch (Exception e) {
			}
			rs = null;
			try {
				stmt.close();
			} catch (Exception e) {
			}
			stmt = null;
			try {
				conn.close();
			} catch (Exception e) {
			}
			conn = null;
		}
	}

	public static Connection getEmbededConnect() {
		try {
			Class.forName(EMBEDED_DRIVER);
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			throw new RuntimeException(e.getMessage());
		}
		try {
			return DriverManager.getConnection("jdbc:derby:" + DB_NAME);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			throw new RuntimeException(e.getMessage());
		}
	}

	public static Connection getNetwrokConnect() {
		try {
			Class.forName(NET_DRIVER);
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			throw new RuntimeException(e.getMessage());
		}
		try {
			return DriverManager.getConnection("jdbc:derby:" + HOST_URL
					+ DB_NAME);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			throw new RuntimeException(e.getMessage());
		}
	}

}

 

将DerbyDemo保存到demo目录下,运行如下代码编译并运行即可通过网络访问(需按照第四步启动服务器)

javac -cp DERBY_HOME\lib\derbyclient.jar DerbyDemo.java
java -cp .;DERBY_HOME\lib\derbyclient.jar DerbyDemo

使用嵌入式访问只需将main中的getNetwrokConnect改为getEmbededConnect即可。

 

 

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐