718.md 12.8 KB
Newer Older
W
init  
wizardforcel 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
# 入门

> 原文: [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)
W
wizardforcel 已提交
17
9.  [编译并打包样例](#step9)
W
init  
wizardforcel 已提交
18
10.  [创建数据库,表格和填充表格](#step10)
W
wizardforcel 已提交
19
11.  [运行样例](#step11)
W
init  
wizardforcel 已提交
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 51 52 53 54 55 56 57

在您的计算机上安装最新版本的 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`环境变量中,以便您可以从任何目录运行它。

W
wizardforcel 已提交
58
如果您的 DBMS 是 Java DB,[使用 SQLXML 对象](sqlxml.html)中描述的样例`RSSFeedsTable.java`需要 Apache Xalan。该示例使用 Apache Xalan-Java。转到以下链接下载它:
W
init  
wizardforcel 已提交
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108

`[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`

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

W
wizardforcel 已提交
109
`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`包含样例所需的属性。
W
init  
wizardforcel 已提交
110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199

修改这些 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

```

W
wizardforcel 已提交
200
**注意**:每次运行示例中的一个 Java 类之前,都应该运行命令`ant setup`。其中许多样例都希望样例数据库表的内容中包含特定数据。
W
init  
wizardforcel 已提交
201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228

`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

```