当前位置: 首页 > 工具软件 > Apache Derby > 使用案例 >

Java 示例 使用 JDBC 连接到 Apache Derby (Java DB)

乐正浩博
2023-12-01

 在本 JDBC 教程中,您将通过编写代码来连接到数据库来学习如何开始使用 Apache Derby (JavaDB)。你知道,Apache Derby是一个轻量级的,可移植的数据库引擎,纯粹用Java编写。Java DB只是一个Oracle在其JDK中对Derby的发行版。但是,从 Java 9 开始,JavaDB 从 JDK 安装中删除。本文介绍了快速开始使用 Derby 的步骤,从下载其 JDBC 驱动程序到编写用于建立连接的代码。

1. 下载德比 JDBC 驱动程序库

在此处下载最新版本的Derby(在撰写本文时,最新版本为10.9.1.0)。该发行版包括以下软件组件:

 

元件

罐文件

嵌入式数据库引擎和 JDBC 驱动程序

derby.jar

网络客户端 JDBC 驱动程序

derbyclient.jar

网络服务器

derbynet.jar, derbyrun.jar

命令行工具

derbytools.jar

本地化消息

derbyLocale_xx_YY.jar

 

如果您使用的是 JDK 1.7,那么 Derby 已经包含在 JDK 安装中,名称为 Java DB JDK_HOME\db 目录中。jar 文件位于JDK_HOME\db\lib 目录中。如果您使用的是JDK 9或更高版本,则需要下载Apache Derby JAR文件。在这两种情况下,您都必须将适当的 jar 文件放入类路径:

  • derby.jar:用于嵌入式驱动程序。
  • derbyclient.jar:用于网络客户端驱动程序。


2. 装载德比 JDBC 驱动程序


 

Derby 区分了两种类型的 JDBC 驱动程序:

驱动程序类型

JDBC 驱动程序类名

嵌入式驱动程序

org.apache.derby.jdbc.EmbeddedDriver

网络客户端驱动程序

org.apache.derby.jdbc.ClientDriver

因此,如果您打算在一台机器中使用Derby的所有内容,请使用嵌入式驱动程序。或者,如果 JDBC 客户端连接到远程计算机上的 Derby 服务器,请使用网络客户端驱动程序。如果您使用的是 Java 5.0 或更早版本,则必须像这样显式加载驱动程序:或者:但是,由于 Java 6.0 或更高版本,因此加载 JDBC 驱动程序本身是可选的。驱动程序管理器可以根据数据库连接 URL 加载相应的驱动程序。

1
Class.forName("org.apache.derby.jdbc.EmbeddedDriver");

1
DriverManager.registerDriver(new org.apache.derby.jdbc.EmbeddedDriver());

 

3. 嵌入式驱动程序的德比 JDBC 数据库连接 URL

以下是嵌入式驱动程序的 Derby JDBC 数据库连接 URL 的语法:

  jdbc:derby:[subsubprotocol:][databaseName][;attribute=value]*
  • 其中子协议告诉Derby应该在哪里查找数据库。它可以是以下之一:
      1. directory:在文件系统中查找数据库。该目录可以是相对路径或绝对路径。对于相对路径,Derby 将查找系统目录(由环境变量 user.dir 指定)。如果未指定子协议,则这是默认位置。
      2. memory:在内存中查找数据库。如果我们只使用临时数据库,这可能很有用。
      3. classpath:在文件系统中查找相对于类路径目录的数据库。通过这种方式,数据库被视为处于只读模式。
      4. jar:在 jar 或 zip 文件中查找数据库。只读模式。
  • attribute=value:在建立连接时指定一个或多个附加属性。一些常用的属性是:
      • create=true:如果数据库不存在,则创建数据库。
      • shutdown=true:关闭数据库。这必须在没有数据库名称的情况下使用。
      • user=<用户名>:指定要连接的用户名。
      • password=<password>:指定要连接的用户名的密码。

连接网址示例:

  • 连接并在目录codejava下创建一个名为webdb的数据库。数据库路径相对于系统目录。

jdbc:derby:codejava/webdb;create=true

  • 使用绝对路径连接到文件系统中的数据库:

jdbc:derby:E:/projects/codejava/webdb;create=true

  • 如果内存中不存在,则连接并创建数据库:

jdbc:derby:memory:codejava/webdb;create=true

  • 连接到类路径中存在的数据库:

jdbc:derby:classpath:webdb

其中,绝对目录 E:/projects/codejava 被添加到类路径中。

  • 连接到类路径上的 jar 文件中名为 webdb 的数据库:

jdbc:derby:jar:webdb

  • 连接到 jar 文件 db 中名为 webdb 的数据库.jar该数据库不在类路径上:

jdbc:derby:jar:(E:/projects/db.jar)webdb

  • 关闭当前数据库:

jdbc:derby:;shutdown=true

 

4. 网络客户端驱动程序的德比 JDBC 数据库连接 URL

下面是网络客户端驱动程序的 Derby JDBC 数据库连接 URL 的语法:如果省略,则默认端口为 1527。例如,要将具有密码机密的用户 tom 连接到服务器数据库服务器上的数据库 webdb,请使用以下 URL:

  jdbc:derby://server[:port]/databaseName[;attribute=value]*

jdbc:derby://dbserver/webdb;user=tom;password=secret


5. 制作德比 JDBC 连接示例

使用 JDBC,有三种不同的方法来建立与数据库的连接,对应于 DriverManager 类的方法 getConnection() 的三个版本:

  • 仅使用数据库 URL:
    1
    2
    String dbURL = "jdbc:derby:codejava/webdb;create=true";
    Connection conn = DriverManager.getConnection(dbURL);
     

  • 使用带有用户和密码的数据库 URL:
1
2
3
4
String dbURL = "jdbc:derby://localhost/webdb;create=true";
String user = "tom";
String password = "secret";
Connection conn = DriverManager.getConnection(dbURL, user, password);

 

  • 将数据库 URL 与属性对象结合使用:
1
2
3
4
5
6
7
String dbURL = "jdbc:derby://localhost/webdb";
Properties properties = new Properties();
properties.put("create""true");
properties.put("user""tom");
properties.put("password""secret");
 
Connection conn = DriverManager.getConnection(dbURL, properties);

 

下面是一个完整的示例程序:这是连接到Apache Derby数据库的Java代码示例。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
package net.codejava.jdbc;
 
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;
 
/**
 * This program demonstrates how to connect to Apache Derby (Java DB) database
 * for the embedded driver and network client driver.
 * @author www.codejava.net
 *
 */
public class JdbcDerbyConnection {
 
    public static void main(String[] args) {
         
        try {
            // connect method #1 - embedded driver
            String dbURL1 = "jdbc:derby:codejava/webdb1;create=true";
            Connection conn1 = DriverManager.getConnection(dbURL1);
            if (conn1 != null) {
                System.out.println("Connected to database #1");
            }
             
            // connect method #2 - network client driver
            String dbURL2 = "jdbc:derby://localhost/webdb2;create=true";
            String user = "tom";
            String password = "secret";
            Connection conn2 = DriverManager.getConnection(dbURL2, user, password);
            if (conn2 != null) {
                System.out.println("Connected to database #2");
            }
 
            // connect method #3 - network client driver
            String dbURL3 = "jdbc:derby://localhost/webdb3";
            Properties properties = new Properties();
            properties.put("create""true");
            properties.put("user""tom");
            properties.put("password""secret");
             
            Connection conn3 = DriverManager.getConnection(dbURL3, properties);
            if (conn3 != null) {
                System.out.println("Connected to database #3");
            }
        catch (SQLException ex) {
            ex.printStackTrace();
        }
    }
}

 

其他阿帕奇德比教程:

  

 类似资料: