在本 JDBC 教程中,您将通过编写代码来连接到数据库来学习如何开始使用 Apache Derby (JavaDB)。你知道,Apache Derby是一个轻量级的,可移植的数据库引擎,纯粹用Java编写。Java DB只是一个Oracle在其JDK中对Derby的发行版。但是,从 Java 9 开始,JavaDB 从 JDK 安装中删除。本文介绍了快速开始使用 Derby 的步骤,从下载其 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 区分了两种类型的 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());
|
以下是嵌入式驱动程序的 Derby JDBC 数据库连接 URL 的语法:
jdbc:derby:[subsubprotocol:][databaseName][;attribute=value]*
连接网址示例:
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 被添加到类路径中。
jdbc:derby:jar:webdb
jdbc:derby:jar:(E:/projects/db.jar)webdb
jdbc:derby:;shutdown=true
下面是网络客户端驱动程序的 Derby JDBC 数据库连接 URL 的语法:如果省略,则默认端口为 1527。例如,要将具有密码机密的用户 tom 连接到服务器数据库服务器上的数据库 webdb,请使用以下 URL:
jdbc:derby://server[:port]/databaseName[;attribute=value]*
jdbc:derby://dbserver/webdb;user=tom;password=secret
使用 JDBC,有三种不同的方法来建立与数据库的连接,对应于 DriverManager 类的方法 getConnection() 的三个版本:
1
2
|
String dbURL = "jdbc:derby:codejava/webdb;create=true" ;
Connection conn = DriverManager.getConnection(dbURL);
|
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);
|
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();
}
}
}
|