本教程适用于 JDK 8。本页中描述的示例和实践不利用后续版本中引入的改进,并且可能使用不再可用的技术。
请参阅Java 语言更改以了解 Java SE 9 及后续版本中更新的语言功能的概述。
请参阅JDK 发行说明以获取有关所有 JDK 发行版的新功能、增强功能和已删除或弃用选项的信息。
首先,你需要与想要使用的数据源建立连接。数据源可以是DBMS、遗留文件系统或其他具有相应JDBC驱动程序的数据来源。通常,JDBC应用程序使用以下两个类之一连接到目标数据源:
DriverManager:这个完全实现的类将应用程序连接到由数据库URL指定的数据源。当这个类首次尝试建立连接时,它会自动加载在类路径中找到的任何JDBC 4.0驱动程序。请注意,您的应用程序必须在4.0版本之前手动加载任何JDBC驱动程序。
DataSource:与DriverManager相比,这个接口更受欢迎,因为它允许底层数据源的详细信息对于您的应用程序来说是透明的。一个DataSource对象的属性被设置为表示特定的数据源。有关更多信息,请参见使用DataSource对象进行连接。有关使用DataSource类开发应用程序的更多信息,请参见最新的Java EE教程。
注意:本教程中的示例使用DriverManager类而不是DataSource类,因为它更容易使用,而且示例不需要DataSource类的功能。
本页包括以下主题:
使用DriverManager类连接到DBMS涉及调用DriverManager.getConnection方法。以下方法,JDBCTutorialUtilities.getConnection,建立了数据库连接:
public Connection getConnection() throws SQLException {
Connection conn = null;
Properties connectionProps = new Properties();
connectionProps.put("user", this.userName);
connectionProps.put("password", this.password);
if (this.dbms.equals("mysql")) {
conn = DriverManager.getConnection(
"jdbc:" + this.dbms + "://" +
this.serverName +
":" + this.portNumber + "/",
connectionProps);
} else if (this.dbms.equals("derby")) {
conn = DriverManager.getConnection(
"jdbc:" + this.dbms + ":" +
this.dbName +
";create=true",
connectionProps);
}
System.out.println("Connected to database");
return conn;
}
DriverManager.getConnection方法用于建立数据库连接。该方法需要一个数据库URL,根据您的DBMS不同而变化。以下是一些数据库URL的示例:
MySQL: jdbc:mysql://localhost:3306/,其中localhost是托管您的数据库的服务器名称,3306是端口号
Java DB: jdbc:derby:testdb;create=true,其中testdb是要连接的数据库名称,create=true指示DBMS创建数据库。
注意:此URL使用Java DB嵌入式驱动程序建立数据库连接。Java DB还包括一个网络客户端驱动程序,它使用不同的URL。
此方法使用Properties对象指定访问DBMS所需的用户名和密码。
注意:
通常,在数据库URL中,您还需要指定要连接的现有数据库的名称。例如,URL jdbc:mysql://localhost:3306/mysql表示名为mysql的MySQL数据库的数据库URL。本教程中的示例使用不指定特定数据库的URL,因为示例会创建一个新的数据库。
在JDBC的早期版本中,要获取连接,您首先需要通过调用Class.forName方法初始化JDBC驱动程序。该方法需要一个java.sql.Driver类型的对象。每个JDBC驱动程序都包含一个或多个实现了java.sql.Driver接口的类。Java DB的驱动程序是org.apache.derby.jdbc.EmbeddedDriver和org.apache.derby.jdbc.ClientDriver,而MySQL Connector/J的驱动程序是com.mysql.cj.jdbc.Driver。请查看您的DBMS驱动程序的文档以获取实现java.sql.Driver接口的类的名称。
任何在类路径中找到的JDBC 4.0驱动程序都会自动加载。(但是,您必须手动加载JDBC 4.0之前的任何驱动程序,使用Class.forName方法。)
该方法返回一个Connection对象,表示与DBMS或特定数据库的连接。通过该对象查询数据库。
数据库连接URL是您的DBMS JDBC驱动程序用于连接数据库的字符串。它可以包含诸如数据库搜索位置、要连接的数据库名称和配置属性等信息。数据库连接URL的确切语法由您的DBMS指定。
以下是Java DB的数据库连接URL语法:
jdbc:derby:[subsubprotocol:][databaseName][;attribute=value]*
subsubprotocol 指定Java DB应该在何处搜索数据库,可以是目录、内存、类路径或JAR文件。通常省略。databaseName 是要连接的数据库的名称。attribute=value 表示一个可选的、以分号分隔的属性列表。这些属性可以让您指示Java DB执行各种任务,包括以下任务:
有关更多信息,请参阅Java DB开发人员指南和Java DB参考手册。
以下是MySQL Connector/J的数据库连接URL语法:
jdbc:mysql://[host][,failoverhost...]
[:port]/[database]
[?propertyName1][=propertyValue1]
[&propertyName2][=propertyValue2]...
host:port 是托管数据库的计算机的主机名和端口号。如果未指定,则host和port的默认值分别为127.0.0.1和3306。database 是要连接的数据库的名称。如果未指定,则连接将没有默认数据库。failover 是备用数据库的名称(MySQL Connector/J支持故障转移)。propertyName=propertyValue 表示一个可选的、以&符号分隔的属性列表。这些属性可以让您指示MySQL Connector/J执行各种任务。有关更多信息,请参阅MySQL参考手册。