本教程适用于 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参考手册。