2012-11-11 4 views
1

Je reçois des données d'Oracle avec le jeu de résultats, puis les remplit à cachedrowset. Mais quand j'obtiens un champ de date dans la base de données et l'imprime, il imprime seulement la date. Je vérifie l'API et je sais que la méthode getDate() renvoie java.sql.date, et l'heure de sql.date est castée à 0. Je vérifie que si j'appelle resultset.getString("datefield"), il peut obtenir des données complètes de date et heure, donc est-il possible d'obtenir la date et l'heure entière données à l'aide cahcedrowset, grâceComment puis-je obtenir des données complètes de date et d'heure lors de l'utilisation du champ caché du champ de date Oracle

voici mon code source

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); 
    } 

méthode executeQuery

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; 

i utilisé trois méthode pour imprimer le journal

KKLog.info(rs.getDate("stime")); 
    KKLog.info(rs.getString("stime")); 
    KKLog.info(rs.getTimestamp("stime")); 

et le contenu du journal est

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 

Répondre

2

Si vous souhaitez obtenir la date et l'heure de la base de données, vous devez utiliser

KKLog.info(rs.getTimestamp("stime")) 

Cela donnera à la fois la date et l'heure de La date et l'heure fournies par la table sont stockées en tant que type de données date ou timestamp. Notez également que vous devez utiliser java.sql.Date au lieu de java.util.Date.

Update 1

Il y a une bugs associée à obtenir une partie du temps de base de données si CachedRowSet est utilisé.

J'ai essayé d'utiliser CachedRowSet et le temps manquait. Pour résoudre ce problème, ajoutez ce qui suit dans la partie de connexion à la base de données. Je pouvais voir la partie temps aussi.

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);  

Ajout prop.put("oracle.jdbc.V8Compatible", "true"); est la clé pour résoudre ce problème.

Ma date et l'heure avant

2012-11-08 00:00:00 

Après avoir ajouté V8Compatible

2012-11-08 13:28:35 

Hope this helps

+0

merci, je l'ai utilisé comme ça, mais il imprime 2012-04-24 00:00 : 00.0 – Jadic

+0

@Jadic Et en passant quel pilote utilisez-vous? – user75ponic

+0

oracle.jdbc.OracleDriver, et j'utilise ojdbc14.jar – Jadic

Questions connexes