【发布时间】:2013-03-18 16:06:34
【问题描述】:
我正面临一种奇怪的情况。我有下表,有两列。
Customer:
Customer_ID nvarchar2
Subscription_Date Date
我正在尝试使用元数据获取 Subscription_Date 的列类型,如下所示:
ResultSet rs = selectStmt.executeQuery("SELECT Customer_ID, Subscription_Date FROM Cusomter");
java.sql.ResultSetMetaData rsMetaData = rs.getMetaData();
int type1 = rsMetaData.getColumnType(2);
如果我使用 JDK 1.6 和 ojdbc6.jar,type1 将返回为
93 (java.sql.Types.TIMESTAMP)
如果我使用 JDK 1.5 和 ojdbc14.jar,type1 将返回为
91 (java.sql.Types.DATE)
但在这两种情况下,Subscription_Date 的实际列类型是DATE。
这是一些向后兼容性问题吗?还是我的编码方式不对?
各位大神能不能给点建议?
【问题讨论】:
-
阅读驱动程序的发行说明,这已记录在案。新行为是正确的(因为旧驱动程序会从
DATE列中“删除”时间部分) -
所以如果我想同时支持 JDK 1.5 的 ojdbc14 和 JDK 1.6 的 ojdbc6,我应该如何继续...??
-
如果您需要支持 JDK 1.5,您应该使用
ojdbc5.jar(也适用于 Java 6)。