Java 从Oracle日期字段使用cachedrowset时,如何获取完整的日期和时间数据

Java 从Oracle日期字段使用cachedrowset时,如何获取完整的日期和时间数据,java,oracle,jdbc,timestamp,cachedrowset,Java,Oracle,Jdbc,Timestamp,Cachedrowset,我使用结果集从oracle获取数据,然后将它们填充到cachedrowset。但当我在数据库中得到一个日期字段并打印它时,它只打印日期。我检查了api,知道getDate()方法返回java.sql.date,并且sql.date的时间被强制转换为0。我测试如果我调用resultset.getString(“datefield”),它可以获得完整的日期和时间数据,那么是否有任何方法可以使用cahcedrowset获得完整的日期和时间数据,谢谢 这是我的源代码 CachedRowSet r

我使用结果集从oracle获取数据,然后将它们填充到
cachedrowset
。但当我在数据库中得到一个日期字段并打印它时,它只打印日期。我检查了api,知道
getDate()
方法返回
java.sql.date
,并且
sql.date
的时间被强制转换为0。我测试如果我调用
resultset.getString(“datefield”)
,它可以获得完整的日期和时间数据,那么是否有任何方法可以使用
cahcedrowset
获得完整的日期和时间数据,谢谢

这是我的源代码

    CachedRowSet rs = null;
    try {
    rs = executeQuery("select * from t_web_order_result ");
    if (rs != null && rs.next()) {
            KKLog.info(rs.getDate("stime"));//2012-04-24,it should be 2012-04-24 09:23:33
        KKLog.info(rs.getString("stime"));
    }
    } catch (SQLException e) {
        logErr("queryCheckers Err", e);
    } finally {
        closeCachedRowset(rs);
    }
执行方法

    CachedRowSet rowset = null;
    Connection connection = null;
    PreparedStatement statement = null;
    ResultSet rs = null;
    try {
        connection = getConnection();
        statement = connection.prepareStatement(sql);
        for (int i = 0; i < params.length; i ++) {
            statement.setObject(i + 1, params[i]);
        }
        rs = statement.executeQuery();
        rowset = new CachedRowSetImpl();
        rowset.populate(rs);
        rs.close();
        statement.close();
    } finally {
         //close....            
    }
    return rowset;
日志内容为

    12-11-11 17:06:11 2012-04-24 
    12-11-11 17:06:11 2012-04-24 
    12-11-11 17:06:11 2012-04-24 00:00:00.0 

如果要从数据库中获取日期和时间,必须使用

KKLog.info(rs.getTimestamp("stime"))
如果日期和时间存储为
date
数据类型或
timestamp
,则这将给出表中的日期和时间。 还要注意,您必须使用
java.sql.Date
而不是
java.util.Date

更新1

若使用cachedrowset,则存在一些与从数据库获取时间部分相关的问题

我尝试使用CachedRowSet,但时间部分丢失了。为了解决此问题,请在数据库连接部分中添加以下内容。我也能看到时间的部分

    java.util.Properties prop = new java.util.Properties();
    prop.put("oracle.jdbc.V8Compatible", "true"); 
    prop.put("user", "user");
    prop.put("password", "password");
   Connection conn = 
  DriverManager.getConnection("jdbc:oracle:thin:@server:port:SID",prop);    
添加
prop.put(“oracle.jdbc.V8Compatible”,“true”)是解决此问题的关键

我以前的日期和时间

2012-11-08 00:00:00
添加
v8兼容后

2012-11-08 13:28:35

希望这能有所帮助

谢谢,我以前是这样用的,但它会打印2012-04-24 00:00:00。0@Jadic顺便问一下,您使用哪个驱动程序?oracle.jdbc.OracleDriver,我使用的是ojdbc14。jar@Jadic我已经更新了我的答案,请看一下,希望这能解决问题。@Jadic很高兴这有帮助,欢迎您。接受并投票:-)
2012-11-08 13:28:35