入门
原文: https://docs.oracle.com/javase/tutorial/jdbc/basics/gettingstarted.html
本教程附带的示例代码创建了一个数据库,该数据库由一家名为 The Coffee Break 的小咖啡馆的老板使用,其中咖啡豆由英镑出售,而咖啡则由杯子出售。
以下步骤配置 JDBC 开发环境,您可以使用该环境编译和运行教程示例:
- 在您的计算机上安装最新版本的 Java SE SDK
- 如果需要,安装数据库管理系统(DBMS)
- 从数据库供应商处安装 JDBC 驱动程序
- 安装 Apache Ant
- 安装 Apache Xalan
- 下载示例代码
- 修改
build.xml
文件 - 修改教程属性文件
- 编译并打包样例
- 创建数据库,表格和填充表格
- 运行样例
在您的计算机上安装最新版本的 Java SE SDK。
确保 Java SE SDK bin
目录的完整目录路径位于PATH
环境变量中,以便可以从任何目录运行 Java 编译器和 Java 应用程序启动器。
您可以使用 Java DB,它随最新版本的 Java SE SDK 一起提供。本教程已针对以下 DBMS 进行了测试:
请注意,如果您使用的是其他 DBMS,则可能需要更改教程示例的代码。
如果您使用的是 Java DB,则它已经附带了 JDBC 驱动程序。如果您使用的是 MySQL,请安装最新版本的 Connector / J 。
请与数据库的供应商联系以获取 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 对象中描述的样例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
创建一个目录以包含该示例的所有文件。这些步骤将此目录称为_< JDBC 教程目录>_
。将[JDBCTutorial.zip](examples/zipfiles/JDBCTutorial.zip)
的内容解压缩到_< JDBC 教程目录>_
。
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,这通常是_< Connector / J 安装目录>_ / mysql-connector-java- _version-number_ .jar 。 |
JAVADBDRIVER |
Java DB 驱动程序的完整路径名。这通常是_< Java DB 安装目录>_ /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 数据库安全指南 的管理应用程序开发人员安全中的应用程序设计中的密码部分建议。
在命令提示符下,将当前目录更改为_< JDBC 教程目录>_
。在此目录中,运行以下命令以编译示例并将其打包在 jar 文件中:
ant jar
如果您使用的是 MySQL,请运行以下命令来创建数据库:
ant create-mysql-database
注:build.xml
文件中没有为 Java DB 创建数据库的对应 Ant 目标。用于建立数据库连接的 Java DB 的数据库 URL 包括创建数据库的选项(如果它尚不存在)。有关详细信息,请参阅建立连接。
如果您使用的是 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
,请将当前目录更改为_< JDBC 教程目录>_
,并从此目录运行以下命令:
ant runct