在 JDBC 应用程序中使用 “Interval Day To Second” 数据类型
日期:2004 年 1 月 22 日
目标
| 本文档将帮助您了解: |
• 如何使用新推出的 Oracle JDBC 10g API 来访问和处理 Java 类中的 Oracle “Interval Day To Second” 数据类型。 • 如何运行演示该数据类型使用方法的示例 Java 应用程序。 |
目录
引言 必要条件 所需软件 在 JDBC 中处理 Oracle "Interval Day To Second” 数据类型 运行示例 Java 应用程序 有用参考
引言
JDBC(Java 数据库连接)是连接 Java 与关系数据库的标准 Java 接口。JDBC 标准由 Sun Microsystems 定义,允许独立供应商自行执行和扩展该标准。
除了支持标准 JDBC API 以外,Oracle 驱动程序还拥有支持 Oracle-专用数据类型并提高性能的扩展。本文档介绍了新的 Oracle JDBC 10g API,用于在 Java 类中处理 Oracle "Interval Day To Second” 数据类型。有关 Oracle JDBC 的详细信息,请参考本文档中有用参考部分。
必要条件
要完成本方法文档,必须简要了解 JDBC 的基本概念以及如何使用 JDBC API 连接数据库进行基本的 CRUD(创建、读取、更新和删除)操作 — 这是基本的数据库操作。此外,您需要了解基本的 Oracle 数据库概念以及数据库提供的不同数据类型。
所需软件
- Oracle10g Database Release 或更新版本。可以从 此处下载。
- Oracle Database 10g JDBC 驱动程序。可以从此处下载。
- JDK1.4.x 或更高版本。可以从此处下载。
注意:JDBC 驱动程序类在 Oracle 客户端或数据库安装版本中提供,不需要单独下载。
在 JDBC 中处理 Oracle “Interval Day To Second” 数据类型
INTERVAL DAY TO SECOND 数据类型提供了精密的粒度,允许您根据日、小时、分钟、秒甚至秒的分数来表示时间间隔。利用 JDBC 3.0,JDBC 应用程序现在能够处理这种 Interval Day To Second 数据类型,以便更好地管理和控制与时间相关的数据。Oracle 通过 Oracle database 10g JDBC 支持这种数据类型。
数据类型 INTERVAL DAY (day_precision) TO SECOND (fractional_seconds_precision) 存储以日、小时、分钟和秒为单位的时期,其中
- day_precision 是 DAY 日期时间字段中数字的最大个数。允许的值从 0 到 9。缺省值是 2。
- fractional_seconds_precision 是 SECOND 字段小数部分数字的个数。允许的值从 0 到 9。缺省值是 6。
示例情况:
假设有一个数据库表“flight_duration”,它必须按照日、小时、分钟和秒来存储飞行时间。以下是在数据库中创建“flight_duration”表的 SQL 语句。
SQL> CREATE TABLE flight_duration(name VARCHAR2(20), route VARCHAR2(50), duration INTERVAL DAY TO SECOND);
|
|
我们应该使用类似 getINTERVALDS()、setINTERVALDS() 等 Oracle Database 10g JDBC API 来插入和访问该 "duration” 列。
以下代码段演示了使用 JDBC API 对 ”flight_duration” 表进行 ”INSERT” 和 “SELECT” 操作。请参阅 IntervalDayToSecond.java 文件得到完整的可运行 Java 类。
......... import oracle.sql.INTERVALDS; ......... // Create the SQL statement for inserting a record. sqlString = "INSERT INTO flight_duration VALUES(?,?,?)";
// Create the PreparedStatement object with the SQL query String. pstmt = (OraclePreparedStatement)conn.prepareStatement(sqlString); // Bind the first two parameters with flight name and route values. pstmt.setString(1,"AC-2001"); pstmt.setString(2,"Singapore to SFO");
// Bind the second parameter with INTERVALDS object. // Format for specifying day and time for INTERVALDS() is: // Days Hour:Mons:Seconds.fractionalseconds pstmt.setINTERVALDS(3, new INTERVALDS ("2 03:15:15.0")); // Execute the PreparedStatement. boolean bool = pstmt.execute();
// Create the SQL statement for selecting the records after insert. sqlString ="SELECT name,route,duration FROM flight_duration";
// Execute the prepared statement. pstmt = (OraclePreparedStatement)conn.prepareStatement(sqlString);
// Execute the PreparedStatement. res = (OracleResultSet)pstmt.executeQuery(); ............ // Loop through the resultset and get the Interval day to second value. while (res.next()) { ............ dur = res.getINTERVALDS(3).toString(); } ....................
|
|
运行示例 Java 应用程序
- 将 Java 类文件
IntervalDayToSecond.java从此处拷贝到一个目录中,例如 IntervalDayToSecond
- 在
IntervalDayToSecond 目录中,将 JDBC 驱动程序类包括在 CLASSPATH 中。
- 在 JDK 1.4.x 中使用
ojdbc14.jar。
- 还要将当前目录 (.) 包括在 CLASSPATH 中。
- 确保已经创建了数据库表 ”flight_duration”,它拥有一个数据类型为 Interval Day To Second 的列 ”duration”。有关详细详细信息请参阅示例情况部分。
- 编辑文件
IntervalDayToSecond.java,设置数据库详细信息。在文件中更改以下各行:
// Set database URL details. String url = "jdbc:oracle:thin:@localhost:1521:orcl"; // Get the database connection. conn = DriverManager.getConnection(url,"scott","tiger");
提供创建该表的用户名和口令。保存此文件。
- 使用以下命令编译 Java 文件:
javac -d .IntervalDayToSecond.java
- 使用以下命令运行该类:
java oracle.otnsamples.jdbc.IntervalDayToSecond 该命令将输出显示如下:
Selected records before insert are as follows Flight Name Route Duration Selected records after insert are as follows Flight Name Destination Duration AC-2001 Singapore to SFO 2 3:15:15.
有用的参考
请在 OTN 示例代码论坛中发表您对此示例的意见。 |