`

Derby通过JDBC操作数据库(两种)

阅读更多

Derby版本 :   db-derby-10.8.1.2

目录解析:

1 bin目录,包含了一些工具脚本和设备环境的脚本;

2 demo目录,包含了一些实例程序;

3 docs目录,包含了Derby的文档;

4 javadoc目录,包含了DerbyAPI文档;

5 lib目录,包含了Derby数据库的jar文件;

6 test目录,Derby的一些测试jar包;

 

 

Derby操作通过JDBC操作数据库有两种:

 

一种是网络模式,通过网络的链接形式(通常我们的mysql/oracle数据库,都是IP+端口),

二种是内嵌模式,即是通过文件的形式.

 

数据库来源:里面的数据库都是在第一篇帖子中的通过ij命令行写入的数据,这里进行的查询.

获得Derby数据库:http://db.apache.org/derby/

 

1. 网络模式如下代码:

 

package com.greatwqs.eagle;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
/**
 * @author greatwqs
 *
 */
public class DerbyTest {

	public static void main(String[] args) {
		DerbyTest testClient = new DerbyTest();
		testClient.showTableContents();
	}

	public void showTableContents() {
		try {
			String driver = "org.apache.derby.jdbc.ClientDriver";
			Class.forName(driver).newInstance();
			Connection conn = null;
			conn = DriverManager.getConnection("jdbc:derby://localhost:1527/ij_cmd_test_db");
			Statement s = conn.createStatement();
			ResultSet rs = s.executeQuery("SELECT * FROM ijtest");
			while (rs.next()) {
				System.out.println("序号 : " + rs.getInt(1));
			}
			rs.close();
			s.close();
			conn.close();
		} catch (Exception e) {
			System.out.println("Exception: " + e);
			e.printStackTrace();
		}
	}

}

 

 

注意第23行的代码:

 

conn = DriverManager.getConnection("jdbc:derby://localhost:1527/ij_cmd_test_db");

 

注意:使用ip+端口的链接derby数据时,必须启动网络链接.

执行/derby_home/bin/startNetworkServer

 

 

2. 内嵌模式的JDBC查询:

 

测试代码如下:

 

package com.greatwqs.eagle.coll;

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

/**
 * @author greatwqs
 * @date 2011-8-12
 */
public class DerbyTest_File {

	private final static String DB_URL = "jdbc:derby:D:\\Program Files\\derby\\db-derby-10.8.1.2-bin\\bin\\ij_cmd_test_db";
	private final static String DERBY_DRIVER = "org.apache.derby.jdbc.EmbeddedDriver";

	public static void main(String[] args) {
		Connection conn = null;
		try {
			Class.forName(DERBY_DRIVER);
			Properties properties = new Properties();
			// properties.put("create", "false"); // 新建数据库
			// properties.put("user", "APP");     // 用户名
			// properties.put("password", "APP"); // 密码

			// properties.put("retreiveMessagesFromServerOnGetMessage", "true");
			conn = DriverManager.getConnection(DB_URL, properties);

			Statement stat = conn.createStatement();
			ResultSet result = stat.executeQuery("SELECT * FROM ijtest");

			while (result.next()) {
				System.out.println("序号 : " + result.getInt(1));
			}
			result.close();
			stat.close();
			conn.close();
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			// 内嵌模式数据库操作用完之后需要关闭数据库,这里没有执行数据库名称则全部关闭.
			try {
				DriverManager.getConnection("jdbc:derby:;shutdown=true");
			} catch (SQLException e) {
				e.getMessage();
			}
		}
	}
}

 

 

注意里面的15行代码:

 

private final static String DB_URL = "jdbc:derby:D:\\Program Files\\derby\\db-derby-10.8.1.2-bin\\bin\\ij_cmd_test_db";

 

 

通过Java应用程序访问内嵌模式Derby数据库时,应用程序有责任需要在程序结束时关闭Derby数据库,如上面代码finally中的

 DriverManager.getConnection("jdbc:derby:;shutdown=true");

shutdown参数用于关闭Derby数据库,如果url中指定了数据库命,则只会关闭指定的数据库,而不会关闭整个Derby数据库。数据库关闭成功时,Derby会抛出一个错误码为XJ015和一个08006的异常表示关闭成功,应用程序可以不处理这两个异常。

 

 

内嵌模式和网络模式的区别:

A 数据库连接URL的不同;

    内嵌模式是以准确地址为基准,网络模式ip+端口+数据库

B 应用程序退出时无效关闭Derby数据库;

    内嵌模式退出需要关闭数据库,网络模式Derby数据库做为一个独立运行的数据库,可以被多个应用程序所访问,所以应用程序在运行结束时不应该关闭Derby数据库。

C 数据库驱动的不同;

    内嵌模式使用org.apache.derby.jdbc.EmbeddedDriver,网络模式使用org.apache.derby.jdbc.ClientDriver

 

 

 链接derby总结: 

 

 在测试的过程中需要加入驱动程序到classpath;

一般情况下驱动的jar包的路径为:\derby_home\lib

 

异常情况的处理:

在链接derby时不能同时链接ij和ip+端口的查询,同时链接ij和文件的jdbc查询ok.

 

 数据库文件存放的位置:/derby_home/bin/ij_cmd_test_db

 

 这里数据库的数据来源为上一篇中的derby的ij测试工具添加的数据.

 见 : http://greatwqs.iteye.com/blog/1147397

 

 

 

 

运行上面的程序后,成功截图:


 

  • 大小: 18.6 KB
2
1
分享到:
评论
2 楼 greatwqs 2011-09-07  
内嵌模式的局限
错误的原因其实很简单:在使用内嵌模式时,Derby 本身并不会在一个独立的进程中,而是和应用程序一起在同一个 Java 虚拟机(JVM)里运行。因此,Derby 如同应用所使用的其它 jar 文件一样变成了应用的一部分。这就不难理解为什么在 classpath 中加入 derby 的 jar 文件,我们的示例程序就能够顺利运行了。这也说明了只有一个 JVM 能够启动数据库:而两个跑在不同 JVM 实例里的应用自然就不能够访问同一个数据库了。
1 楼 greatwqs 2011-09-07  
关闭所有数据库及derby引擎:
DriverManager.getConnection("jdbc:derby:;shutdown=true");

关闭一个数据库:
DriverManager.getConnection("jdbc:derby:XXXDB;shutdown=true");

相关推荐

    JavaSE6.0的Derby嵌入式数据库

    此外,Derby有两种主要的工作模式:**嵌入式模式**和**网络服务器模式**。 #### 工作模式详解 ##### 嵌入式模式 - **定义**:在嵌入式模式下,Derby数据库引擎与应用程序运行在同一Java虚拟机(JVM)中。这种模式...

    Derby中的备份、恢复和前滚恢复

    Derby数据库管理系统提供了两种主要的恢复机制:一种是使用全备份使数据库回到备份时的状态;另一种是使用全备份并结合前滚事务日志使数据库恢复到最新状态,这种机制被称为前滚恢复。 #### 二、在线备份 在线备份...

    jdbc数据库驱动.rar

    Oracle JDBC驱动分为 Thin 和 Thick 两种类型。 Thin 驱动是纯Java实现,无须Oracle客户端,驱动类为`oracle.jdbc.driver.OracleDriver`;Thick 驱动需要Oracle客户端,通常用于需要本地调用Oracle特定功能的情况。 ...

    derby embedded模式设置用户名和密码

    这两种方法都可以实现 Derby 嵌入式数据库的用户验证,选择哪种方法取决于您的需求。 Derby 嵌入式数据库的用户名和密码设置非常重要,可以确保数据库的安全性。这篇教程详细地指导您如何实现 Derby 嵌入式数据库的...

    derby 数据库 使用的例子

    10. **JDBC驱动类型**:Derby有两种JDBC驱动类型:类型4(纯Java网络驱动)和类型2(本地协议驱动)。类型4适用于网络模式,类型2适用于嵌入式模式。 这个"DERBY_PJ"压缩包可能包含了一系列的示例代码、SQL脚本、...

    derby,jtds,mysql,oracle,sql2000,sql2005的jdbc数据库驱动

    这里提到的"derby,jtds,mysql,oracle,sql2000,sql2005的jdbc数据库驱动"分别对应了六个不同的数据库系统及其对应的JDBC驱动。 1. **Derby**:Apache Derby是一款开源、轻量级的关系型数据库管理系统,它是Java...

    derby小型数据库

    在Derby数据库中,有两种主要的运行模式:嵌入式模式和服务器模式。 1. **嵌入式模式**:这是Derby的基本运行模式,数据库直接与应用程序在同一进程内运行。这种模式无需额外的服务器进程,使得部署和管理变得简单...

    基于嵌入式开源数据库Derby实现信息服务平台

    在本文提到的信息服务平台中,通过JDBC可以实现与Derby数据库之间的交互操作,包括数据查询、插入、更新和删除等基本操作。 ##### 4.2 开源技术的应用 除了使用Derby作为后端数据库之外,文章还提到了开源技术在...

    derby数据库链接.docx

    Derby有两种运行模式:嵌入式和服务器模式。在嵌入式模式下,数据库与应用程序在同一JVM中运行,无需额外的数据库服务器进程,适合单用户使用。而在服务器模式下,Derby作为一个独立的服务运行,允许远程应用程序...

    derby数据库链接.pdf

    Derby的两种部署模式是: 1. 嵌入式:在这种模式下,Derby与应用程序在同一JVM中运行,由应用程序直接控制启动和关闭,对终端用户几乎透明。这种模式适合于单用户或小型多用户环境,简化了部署和管理。 2. 服务器...

    Derby数据库入门.pdf

    Derby数据库提供两种运行模式:内嵌模式和网络模式。内嵌模式下,数据库与应用程序运行在同一JVM中,由应用程序负责启动和关闭,对外部程序不透明,不支持多用户访问。而网络模式则允许Derby作为独立的服务进程运行...

    derby数据库[文].pdf

    Derby数据库提供两种运行模式: 1. **内嵌模式(Embedded Mode)**:在这种模式下,Derby数据库与应用程序运行在同一JVM中。数据库的启动和关闭由应用程序管理,对外部其他应用是不可见的,意味着其他程序无法直接...

    Derby数据库入门汇编.pdf

    Derby数据库有两种运行模式:内嵌模式和网络模式。在内嵌模式下,Derby与应用程序在同一Java虚拟机(JVM)中运行,由应用程序负责启动和关闭,对外部其他应用是不可见的,这意味着其他程序无法直接访问该数据库。而...

    课程Derby数据库入门.pdf

    Derby提供两种运行模式:内嵌模式和网络模式。 1. **内嵌模式**: 在内嵌模式下,Derby数据库与应用程序运行在同一JVM中。这意味着数据库的启动和关闭由应用程序控制,对外部应用是透明的,其他程序无法直接访问该...

    derby辅助工具SQuirreL SQL Client的使用

    描述中提到的"derby集成到eclipse的两种方法"意味着我们将不仅学习如何在Eclipse IDE中使用Derby数据库,还将了解如何将SQuirreL SQL Client作为辅助工具进行数据库管理和查询。 **知识点详解** 1. **Apache Derby...

Global site tag (gtag.js) - Google Analytics