一般的数据库,DATE字段仅仅表示日期,不包括时间信息,
而Oracle数据库中的DATE数据类型是包括日期、时间的,
对于不同的Oracle jdbc驱动版本,对于该问题的处理都有些区别,
如果你使用9i或者11g的JDBC驱动,可能不会发现什么困惑,
如果你使用0g的JDBC驱动,你会发现时间不见了
对于该问题,在Oracle的JDBC FAQ中有提到解决办法:
Prior to 9.2, the Oracle JDBC drivers mapped the DATE SQL type to java.sql.Timestamp. This made a certain amount of sense because the Oracle DATE SQL type contains both date and time information as does java.sql.Timestamp. The more obvious mapping to java.sql.Date was somewhat problematic as java.sql.Date does not include time information. It was also the case that the RDBMS did not support the TIMESTAMP SQL type, so there was no problem with mapping DATE to Timestamp.
In 9.2 TIMESTAMP support was added to the RDBMS. The difference between DATE and TIMESTAMP is that TIMESTAMP includes nanoseconds and DATE does not. So, beginning in 9.2, DATE is mapped to Date and TIMESTAMP is mapped to Timestamp. Unfortunately if you were relying on DATE values to contain time information, there is a problem.
There are several ways to address this problem:
Alter your tables to use TIMESTAMP instead of DATE. This is probably rarely possible, but it is the best solution when it is.
Alter your application to use defineColumnType to define the columns as TIMESTAMP rather than DATE. There are problems with this because you really don't want to use defineColumnType unless you have to (see What is defineColumnType and when should I use it?).
Alter you application to use getTimestamp rather than getObject. This is a good solution when possible, however many applications contain generic code that relies on getObject, so it isn't always possible.
Set the V8Compatible connection property. This tells the JDBC drivers to use the old mapping rather than the new one. You can set this flag either as a connection property or a system property. You set the connection property by adding it to the java.util.Properties object passed to DriverManager.getConnection or to OracleDataSource.setConnectionProperties. You set the system property by including a -D option in your java command line.
java -Doracle.jdbc.V8Compatible="true" MyApp
- 大小: 18.2 KB
分享到:
相关推荐
oracle 10g jdbc 驱动 可以使用getString 取clob字段
`ojdbc14.jar` 是Oracle数据库的JDBC驱动包,适用于Oracle 10g版本。与MySQL类似,你需要将此驱动包加入到JMeter的类路径中,然后设置相应的数据库连接配置。值得注意的是,Oracle有不同的JDBC驱动版本,对于不同...
Oracle JDBC驱动程序,即Oracle Java Database Connectivity驱动,是Oracle数据库与Java应用程序之间的桥梁,使得Java开发者可以使用Java语言访问和操作Oracle数据库。`ojdbc14-10.2.0.4.0.jar`是Oracle公司提供的一...
1. **加载驱动**:通过`Class.forName("com.oracle.jdbc.Driver")`加载Oracle JDBC驱动。 2. **创建连接**:使用`DriverManager.getConnection(url, username, password)`建立数据库连接,URL应包含数据库的位置信息...
"Oracle_11g_JDBC_ojdbc6.rar"这个压缩包包含了用于与Oracle 11g数据库交互的JDBC驱动,具体为`ojdbc6.jar`文件,这是Oracle为Java 6及更高版本提供的驱动程序。 在Java应用中,我们通常使用`Class.forName()`方法...
为了使用Oracle驱动,你需要将Oracle的JDBC驱动jar包放入这个lib目录下。这个过程被称为“替换lib包”,意味着你可能需要替换或添加现有的Oracle驱动jar包,以确保与最新版本的Oracle数据库兼容。 在开始这个过程...
Oracle JDBC驱动提供了OracleClob类,支持通过InputStream和OutputStream进行流式操作。 总的来说,处理Oracle数据库中的CLOB字段,关键在于正确地创建和使用Clob对象,并结合JDBC API进行操作。在处理大量文本数据...
【Dm8-oracle-jdbc16-wrapper.jar】可能是一个包装器,它将达梦数据库的JDBC驱动包装成与Oracle JDBC驱动兼容的接口,这样就可以让使用Oracle JDBC驱动的程序无缝地与达梦数据库进行通信,无需修改原有代码。...
在Java中,当我们需要通过JDBC(Java Database Connectivity)接口与Oracle数据库交互时,处理CLOB字段可能会遇到一些挑战。这篇文档将详细阐述如何在JDBC中有效地读取和操作Oracle数据库的CLOB字段,并将其转换为...
ojdbc8.jar是Oracle JDBC驱动的主要部分,包含了对JDBC接口的实现,而orai18n.jar则包含了国际化的支持,处理不同语言和区域设置的相关功能。 ojdbc8.jar包含以下主要知识点: 1. **JDBC接口**:JDBC是Java API,...
这段代码首先加载了Oracle的JDBC驱动,然后通过`DriverManager.getConnection`方法建立数据库连接,并设置了事务的自动提交模式为`false`。接着,使用`PreparedStatement`对象准备SQL插入语句,并利用`...
在 Java 中操作 CLOB 字段需要使用 Oracle 的 JDBC 驱动程序,首先我们需要在 Java 项目中引入 Oracle 的 JDBC 驱动程序,然后使用 Connection 对象连接到 Oracle 数据库,最后使用 PreparedStatement 或 Statement ...
1. 引入JDBC驱动:在Java代码中,我们需要通过`Class.forName()`方法加载Oracle的JDBC驱动。例如: ```java Class.forName("oracle.jdbc.driver.OracleDriver"); ``` 2. 创建数据库连接:使用`DriverManager.get...
这个驱动程序包含在Oracle的客户端软件中,或者可以直接从Oracle官方网站下载单独的JDBC驱动包。 2. **JAR文件的种类**: - ojdbc6.jar:适用于Java 6环境。 - ojdbc7.jar:适用于Java 7环境。 - ojdbc8.jar:...
使用`Class.forName()`加载Oracle的JDBC驱动,然后调用`DriverManager.getConnection()`创建连接。 5. **预编译SQL语句**:为了插入BLOB数据,你需要准备一个SQL语句,例如`INSERT INTO table_name (blob_column) ...
在数据库表设计方面,作者选择了简洁的user_info表,包含了用户ID、密码和真实姓名三个字段,用于测试JDBC驱动的基本功能。通过这样的表结构,可以进行插入、查询、更新和删除等基本操作,验证JDBC驱动的正确性和...
Oracle的JDBC驱动程序支持多国语言,通过调整驱动的配置,可以处理不同语言的数据。例如,Oracle Thin Driver可以通过设置Properties对象中的charset属性来改变字符编码。 六、国际化与本地化 为了实现真正的多国...
在Oracle 10g中,这个JDBC驱动被称为oci.jdbc10g,它负责处理Java应用程序与Oracle数据库之间的数据交换。 当出现“类型长度大于最大值”的错误时,这可能意味着在尝试存储或查询的数据中,某个字段的长度超过了...