用jdbc连接oracle数据库时遇到了一个奇怪的问题:
stmt = conn.createStatement();
rs = stmt.executeQuery(sqlStr);
...
rs.getString(2);
这样取得的一个时间(Date)类型的字段的值是:2009-02-09 14:58:34.0如果把上面的第一句改成stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
取得的结果就是:2/9/2009 14:50:2不知道什么原因,不知有没有人遇到过?
stmt = conn.createStatement();
rs = stmt.executeQuery(sqlStr);
...
rs.getString(2);
这样取得的一个时间(Date)类型的字段的值是:2009-02-09 14:58:34.0如果把上面的第一句改成stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
取得的结果就是:2/9/2009 14:50:2不知道什么原因,不知有没有人遇到过?
和格式化应该没有关系
但是现在问题确实出现了,不知道是是不是jdbc本身的原因,不知有没有其他人遇到过类似情况?
java.sql.Date date = rs.getDate(2);
java.text.SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
str = df.format(date);
楼主可以在SQL里面把这个转成字符串!要不然改下数据库或程序!
现在正在考虑取出时间来转,
但是我查询数据库的sql是一个通用程序处理的,我并不知道当前字段该是什么类型的,
对于按序号取的好处理 :int colType = rs.getMetaData().getColumnType(columnIndex);
这样就可以取得字段类型了,
不知道有没有办法知道字段名,取得字段的columnIndex
我这边测试了很多次,就是不一样,select sysdate from dual直接一个简单的sql,取系统时间。
请问你的数据库和jdbc分别是什么版本的?
Specification-Title: "Oracle JDBC driver classes for use with JDK1.4"
Specification-Version: "Oracle JDBC Driver version - 9.0.2.0.0"
Specification-Vendor: "Oracle Corporation" .
Implementation-Title: "ojdbc14.jar"
Implementation-Version: "Oracle JDBC Driver version - 9.0.2.0.0"
Implementation-Vendor: "Oracle Corporation"
Implementation-Time: "Tue Apr 6 01:10:57 2004"数据库版本是9.2.0.1.0
java.sql.Date date = rs.getDate(2);
java.text.SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
str = df.format(date);