# 建立连接

> 原文： [https://docs.oracle.com/javase/tutorial/jdbc/basics/connecting.html](https://docs.oracle.com/javase/tutorial/jdbc/basics/connecting.html)

首先，您需要与要使用的数据源建立连接。数据源可以是 DBMS，遗留文件系统或具有相应 JDBC 驱动程序的某些其他数据源。通常，JDBC 应用程序使用以下两个类之一连接到目标数据源：

*   `DriverManager`：这个完全实现的类将应用程序连接到数据源，数据源由数据库 URL 指定。当此类首次尝试建立连接时，它会自动加载在类路径中找到的任何 JDBC 4.0 驱动程序。请注意，您的应用程序必须在 4.0 之前手动加载任何 JDBC 驱动程序。

*   `DataSource`：此接口优先于`DriverManager`，因为它允许有关基础数据源的详细信息对您的应用程序透明。设置`DataSource`对象的属性，使其表示特定的数据源。有关详细信息，请参见[与数据源对象](sqldatasources.html)连接。有关使用`DataSource`类开发应用程序的更多信息，请参阅最新的 _[Java EE 教程](http://docs.oracle.com/javaee/6/tutorial/doc/)_ 。

**注意**：本教程中的示例使用`DriverManager`类而不是`DataSource`类，因为它更易于使用，并且示例不需要`DataSource`类的功能。

此页面包含以下主题：

*   [使用 DriverManager 类](#drivermanager)
*   [指定数据库连接 URL](#db_connection_url)

使用`DriverManager`类连接到 DBMS 涉及调用方法`DriverManager.getConnection`。以下方法 `[JDBCTutorialUtilities.getConnection](gettingstarted.html)`建立数据库连接：

```
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 的一些示例：

1.  MySQL：`jdbc:mysql://localhost:3306/`，其中`localhost`是托管数据库的服务器的名称，`3306`是端口号

2.  Java DB： `jdbc：derby： _testdb_ ; create = true` ，其中 `_testdb_`是要连接的数据库的名称， `create=true`指示 DBMS 创建数据库。

    **注**：此 URL 与 Java DB Embedded Driver 建立数据库连接。 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.jdbc.Driver`。请参阅 DBMS 驱动程序的文档以获取实现接口`java.sql.Driver`的类的名称。

    在类路径中找到的任何 JDBC 4.0 驱动程序都会自动加载。 （但是，必须使用`Class.forName`方法在 JDBC 4.0 之前手动加载任何驱动程序。）

该方法返回一个`Connection`对象，该对象表示与 DBMS 或特定数据库的连接。通过此对象查询数据库。

数据库连接 URL 是 DBMS JDBC 驱动程序用于连接数据库的字符串。它可以包含诸如搜索数据库的位置，要连接的数据库的名称以及配置属性等信息。数据库连接 URL 的确切语法由 DBMS 指定。

### Java DB 数据库连接 URL

以下是 Java DB 的数据库连接 URL 语法：

```
jdbc:derby:[subsubprotocol:][databaseName]
    [;attribute=value]*

```

*   `_subsubprotocol_ `指定 Java DB 在目录，内存，类路径或 JAR 文件中搜索数据库的位置。通常省略它。
*   `_databaseName_ `是要连接的数据库的名称。
*   `_ 属性 _ = _ 值 _` 表示可选的，以分号分隔的属性列表。这些属性使您可以指示 Java DB 执行各种任务，包括以下内容：
    *   创建连接 URL 中指定的数据库。
    *   加密连接 URL 中指定的数据库。
    *   指定存储日志记录和跟踪信息的目录。
    *   指定用于连接数据库的用户名和密码。

有关详细信息，请参阅 [Java DB 技术文档](http://docs.oracle.com/javadb/index_jdk8.html)中的 _Java DB 开发人员指南 _ 和 _Java DB 参考手册 _。

### MySQL Connector / J 数据库 URL

以下是 MySQL Connector / J 的数据库连接 URL 语法：

```
jdbc:mysql://[host][,failoverhost...]
    [:port]/[database]
    [?propertyName1][=propertyValue1]
    [&propertyName2][=propertyValue2]...

```

*   `_ 主机 _：_ 端口 _` 是托管数据库的计算机的主机名和端口号。如果未指定， `_ 主机 _` 和 `_ 端口 _` 的默认值分别为 127.0.0.1 和 3306。
*   `_ 数据库 _` 是要连接的数据库的名称。如果未指定，则建立连接而不使用默认数据库。
*   `_ 故障转移 _` 是备用数据库的名称（MySQL Connector / J 支持故障转移）。
*   `_propertyName_ = _propertyValue_ `表示可选的&符号分隔的属性列表。这些属性使您可以指示 MySQL Connector / J 执行各种任务。

有关详细信息，请参阅 [_MySQL 参考手册 _](http://dev.mysql.com/doc/) 。