# 入门

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

本教程附带的示例代码创建了一个数据库，该数据库由一家名为 The Coffee Break 的小咖啡馆的老板使用，其中咖啡豆由英镑出售，而咖啡则由杯子出售。

以下步骤配置 JDBC 开发环境，您可以使用该环境编译和运行教程示例：

1.  [在您的计算机上安装最新版本的 Java SE SDK](#step1)
2.  [如果需要，安装数据库管理系统（DBMS）](#step2)
3.  [从数据库供应商处安装 JDBC 驱动程序](#step3)
4.  [安装 Apache Ant](#step4)
5.  [安装 Apache Xalan](#step5)
6.  [下载示例代码](#step6)
7.  [修改`build.xml`文件](#step7)
8.  [修改教程属性文件](#step8)
9.  [编译并打包样本](#step9)
10.  [创建数据库，表格和填充表格](#step10)
11.  [运行样本](#step11)

在您的计算机上安装最新版本的 Java SE SDK。

确保 Java SE SDK `bin`目录的完整目录路径位于`PATH`环境变量中，以便可以从任何目录运行 Java 编译器和 Java 应用程序启动器。

您可以使用 Java DB，它随最新版本的 Java SE SDK 一起提供。本教程已针对以下 DBMS 进行了测试：

*   [Java DB](http://www.oracle.com/technetwork/java/javadb/overview/index.html)
*   [MySQL](http://www.mysql.com/)

请注意，如果您使用的是其他 DBMS，则可能需要更改教程示例的代码。

如果您使用的是 Java DB，则它已经附带了 JDBC 驱动程序。如果您使用的是 MySQL，请安装最新版本的 [Connector / J](http://www.mysql.com/products/connector/) 。

请与数据库的供应商联系以获取 DBMS 的 JDBC 驱动程序。

JDBC 驱动程序有许多可能的实现。这些实现分类如下：

*   **类型 1** ：实现 JDBC API 作为到另一个数据访问 API 的映射的驱动程序，例如 ODBC（开放式数据库连接）。此类驱动程序通常依赖于本机库，这限制了它们的可移植性。 JDBC-ODBC Bridge 是 Type 1 驱动程序的示例。

    **注意**：JDBC-ODBC Bridge 应被视为过渡解决方案。 Oracle 不支持它。仅当您的 DBMS 不提供仅 Java 的 JDBC 驱动程序时才考虑使用此选项。

*   **Type 2** ：部分用 Java 编程语言编写的驱动程序，部分用本机代码编写。这些驱动程序使用特定于它们所连接的数据源的本机客户端库。同样，由于本机代码，它们的可移植性是有限的。 Oracle 的 OCI（Oracle 调用接口）客户端驱动程序是 Type 2 驱动程序的一个示例。

*   **类型 3** ：使用纯 Java 客户端并使用独立于数据库的协议与中间件服务器通信的驱动程序。然后，中间件服务器将客户端的请求传递给数据源。

*   **类型 4** ：纯 Java 的驱动程序，实现特定数据源的网络协议。客户端直接连接到数据源。

检查 DBMS 附带的驱动程序类型。 Java DB 附带两个 Type 4 驱动程序，一个嵌入式驱动程序和一个网络客户端驱动程序。 MySQL Connector / J 是 Type 4 驱动程序。

安装 JDBC 驱动程序通常包括将驱动程序复制到计算机，然后将其位置添加到类路径中。此外，除 Type 4 驱动程序之外的许多 JDBC 驱动程序都要求您安装客户端 API。通常不需要其他特殊配置。

这些步骤使用 Apache Ant（一种基于 Java 的工具）来构建，编译和运行 JDBC 教程示例。转到以下链接下载 Apache Ant：

`[http://ant.apache.org/](http://ant.apache.org/)`

确保 Apache Ant 可执行文件位于`PATH`环境变量中，以便您可以从任何目录运行它。

如果您的 DBMS 是 Java DB，[使用 SQLXML 对象](sqlxml.html)中描述的样本`RSSFeedsTable.java`需要 Apache Xalan。该示例使用 Apache Xalan-Java。转到以下链接下载它：

`[http://xml.apache.org/xalan-j/](http://xml.apache.org/xalan-j/)`

示例代码 `[JDBCTutorial.zip](examples/zipfiles/JDBCTutorial.zip)`包含以下文件：

*   `properties`
    *   `javadb-build-properties.xml`
    *   `javadb-sample-properties.xml`
    *   `mysql-build-properties.xml`
    *   `mysql-sample-properties.xml`
*   `sql`
    *   `javadb`
        *   `create-procedures.sql`
        *   `create-tables.sql`
        *   `drop-tables.sql`
        *   `populate-tables.sql`
    *   `mysql`
        *   `create-procedures.sql`
        *   `create-tables.sql`
        *   `drop-tables.sql`
        *   `populate-tables.sql`
*   `src/com/oracle/tutorial/jdbc`
    *   `CachedRowSetSample.java`
    *   `CityFilter.java`
    *   `ClobSample.java`
    *   `CoffeesFrame.java`
    *   `CoffeesTable.java`
    *   `CoffeesTableModel.java`
    *   `DatalinkSample.java`
    *   `ExampleRowSetListener.java`
    *   `FilteredRowSetSample.java`
    *   `JdbcRowSetSample.java`
    *   `JDBCTutorialUtilities.java`
    *   `JoinSample.java`
    *   `ProductInformationTable.java`
    *   `RSSFeedsTable.java`
    *   `StateFilter.java`
    *   `StoredProcedureJavaDBSample.java`
    *   `StoredProcedureMySQLSample.java`
    *   `SuppliersTable.java`
    *   `WebRowSetSample.java`
*   `txt`
    *   `colombian-description.txt`
*   `xml`
    *   `rss-coffee-industry-news.xml`
    *   `rss-the-coffee-break-blog.xml`
*   `build.xml`

创建一个目录以包含该示例的所有文件。这些步骤将此目录称为 `_&lt; JDBC 教程目录&gt;_`。将 `[JDBCTutorial.zip](examples/zipfiles/JDBCTutorial.zip)`的内容解压缩到 `_&lt; JDBC 教程目录&gt;_`。

`build.xml`文件是 Apache Ant 用于编译和执行 JDBC 示例的构建文件。文件`properties/javadb-build-properties.xml`和`properties/mysql-build-properties.xml`分别包含 Java DB 和 MySQL 所需的其他 Apache Ant 属性。文件`properties/javadb-sample-properties.xml`和`properties/mysql-sample-properties.xml`包含样本所需的属性。

修改这些 XML 文件，如下所示：

### 修改 build.xml

在`build.xml`文件中，修改属性`ANTPROPERTIES`以引用`properties/javadb-build-properties.xml`或`properties/mysql-build-properties.xml`，具体取决于您的 DBMS。例如，如果您使用的是 Java DB，则`build.xml`文件将包含以下内容：

```
<property
  name="ANTPROPERTIES"
  value="properties/javadb-build-properties.xml"/>

  <import file="${ANTPROPERTIES}"/>

```

同样，如果您使用 MySQL，您的`build.xml`文件将包含以下内容：

```
<property
  name="ANTPROPERTIES"
  value="properties/mysql-build-properties.xml"/>

  <import file="${ANTPROPERTIES}"/>

```

### 修改特定于数据库的属性文件

在`properties/javadb-build-properties.xml`或`properties/mysql-build-properties.xml`文件中（取决于您的 DBMS），修改以下属性，如下表所述：

| 属性 | 描述 |
| --- | --- |
| `JAVAC` | Java 编译器的完整路径名，`javac` |
| `JAVA` | Java 运行时可执行文件的完整路径名，`java` |
| `PROPERTIESFILE` | 属性文件的名称，`properties/javadb-sample-properties.xml`或`properties/mysql-sample-properties.xml` |
| `MYSQLDRIVER` | MySQL 驱动程序的完整路径名。对于 Connector / J，这通常是 `_&lt; Connector / J 安装目录&gt;_ / mysql-connector-java- _version-number_ .jar` 。 |
| `JAVADBDRIVER` | Java DB 驱动程序的完整路径名。这通常是 `_&lt; Java DB 安装目录&gt;_ /lib/derby.jar` 。 |
| `XALANDIRECTORY` | 包含 Apache Xalan 的目录的完整路径名。 |
| `CLASSPATH` | JDBC 教程使用的类路径。 _ 您无需更改此值。_ |
| `XALAN` | 文件的完整路径名`xalan.jar`。 |
| `DB.VENDOR` | 值`derby`或`mysql`取决于您是分别使用 Java DB 还是 MySQL。本教程使用此值构造连接到 DBMS 所需的 URL，并标识特定于 DBMS 的代码和 SQL 语句。 |
| `DB.DRIVER` | JDBC 驱动程序的标准类名。对于 Java DB，这是`org.apache.derby.jdbc.EmbeddedDriver`。对于 MySQL，这是`com.mysql.jdbc.Driver`。 |
| `DB.HOST` | 托管 DBMS 的计算机的主机名。 |
| `DB.PORT` | 托管 DBMS 的计算机的端口号。 |
| `DB.SID` | 教程创建和使用的数据库的名称。 |
| `DB.URL.NEWDATABASE` | 用于在创建新数据库时连接到 DBMS 的连接 URL。 _ 您无需更改此值。_ |
| `DB.URL` | 用于连接到 DBMS 的连接 URL。 _ 您无需更改此值。_ |
| `DB.USER` | 有权访问 DBMS 中的数据库的用户的名称。 |
| `DB.PASSWORD` | `DB.USER`中指定的用户密码。 |
| `DB.DELIMITER` | 用于分隔 SQL 语句的字符。 _ 请勿更改此值。_ 它应该是分号字符（`;`）。 |

教程示例使用`properties/javadb-sample-properties.xml`文件或`properties/mysql-sample-properties.xml`文件（取决于您的 DBMS）中的值连接到 DBMS 并初始化数据库和表，如下表所述：

| 属性 | 描述 |
| --- | --- |
| `dbms` | 值`derby`或`mysql`取决于您是分别使用 Java DB 还是 MySQL。本教程使用此值构造连接到 DBMS 所需的 URL，并标识特定于 DBMS 的代码和 SQL 语句。 |
| `jar_file` | 包含本教程的所有类文件的 JAR 文件的完整路径名。 |
| `driver` | JDBC 驱动程序的标准类名。对于 Java DB，这是`org.apache.derby.jdbc.EmbeddedDriver`。对于 MySQL，这是`com.mysql.jdbc.Driver`。 |
| `database_name` | 教程创建和使用的数据库的名称。 |
| `user_name` | 有权访问 DBMS 中的数据库的用户的名称。 |
| `password` | `user_name`中指定的用户密码。 |
| `server_name` | 托管 DBMS 的计算机的主机名。 |
| `port_number` | 托管 DBMS 的计算机的端口号。 |

**注意**：为了简单地演示 JDBC API，JDBC 教程示例代码不执行已部署系统通常使用的密码管理技术。在生产环境中，您可以遵循 Oracle 数据库密码管理准则并禁用任何示例帐户。有关密码管理指南和其他安全性，请参阅 [_Oracle 数据库安全指南 _](http://docs.oracle.com/cd/B28359_01/network.111/b28531/toc.htm) 的[管理应用程序开发人员安全](http://docs.oracle.com/cd/B28359_01/network.111/b28531/app_devs.htm)中的[应用程序设计中的密码](http://docs.oracle.com/cd/B28359_01/network.111/b28531/app_devs.htm#CJADABGG)部分建议。

在命令提示符下，将当前目录更改为 `_&lt; JDBC 教程目录&gt;_`。在此目录中，运行以下命令以编译示例并将其打包在 jar 文件中：

```
ant jar

```

如果您使用的是 MySQL，请运行以下命令来创建数据库：

```
ant create-mysql-database

```

**注**：`build.xml`文件中没有为 Java DB 创建数据库的对应 Ant 目标。用于建立数据库连接的 Java DB 的数据库 URL 包括创建数据库的选项（如果它尚不存在）。有关详细信息，请参阅[建立连接](connecting.html)。

如果您使用的是 Java DB 或 MySQL，则从同一目录运行以下命令以删除现有的示例数据库表，重新创建表并填充它们。对于 Java DB，此命令还会创建数据库（如果该数据库尚不存在）：

```
ant setup

```

**注意**：每次运行示例中的一个 Java 类之前，都应该运行命令`ant setup`。其中许多样本都希望样本数据库表的内容中包含特定数据。

`build.xml`文件中的每个目标对应于 JDBC 示例中的 Java 类或 SQL 脚本。下表列出了`build.xml`文件中的目标，每个目标执行的类或脚本，以及每个目标所需的其他类或文件：

| 蚂蚁目标 | 类或 SQL 脚本 | 其他必需的类或文件 |
| --- | --- | --- |
| `javadb-create-procedure` | `javadb/create-procedures.sql`;请参阅`build.xml`文件以查看其他运行的 SQL 语句 | 没有其他必需的文件 |
| `mysql-create-procedure` | `mysql/create-procedures.sql`。 | 没有其他必需的文件 |
| `run` | `JDBCTutorialUtilities` | 没有其他必需的课程 |
| `runct` | `CoffeesTable` | `JDBCTutorialUtilities` |
| `runst` | `SuppliersTable` | `JDBCTutorialUtilities` |
| `runjrs` | `JdbcRowSetSample` | `JDBCTutorialUtilities` |
| `runcrs` | `CachedRowSetSample`，`ExampleRowSetListener` | `JDBCTutorialUtilities` |
| `runjoin` | `JoinSample` | `JDBCTutorialUtilities` |
| `runfrs` | `FilteredRowSetSample` | `JDBCTutorialUtilities`，`CityFilter`，`StateFilter` |
| `runwrs` | `WebRowSetSample` | `JDBCTutorialUtilities` |
| `runclob` | `ClobSample` | `JDBCTutorialUtilities`，`txt/colombian-description.txt` |
| `runrss` | `RSSFeedsTable` | `JDBCTutorialUtilities`，`xml`目录中包含的 XML 文件 |
| `rundl` | `DatalinkSample` | `JDBCTutorialUtilities` |
| `runspjavadb` | `StoredProcedureJavaDBSample` | `JDBCTutorialUtilities`，`SuppliersTable`，`CoffeesTable` |
| `runspmysql` | `StoredProcedureMySQLSample` | `JDBCTutorialUtilities`，`SuppliersTable`，`CoffeesTable` |
| `runframe` | `CoffeesFrame` | `JDBCTutorialUtilities`，`CoffeesTableModel` |

例如，要运行类`CoffeesTable`，请将当前目录更改为 `_&lt; JDBC 教程目录&gt;_`，并从此目录运行以下命令：

```
ant runct

```