2011-10-06 65 views
0

我從Oracle數據庫中獲取時間戳時遇到問題。在java.sql.SQLException中獲取時間戳結果:一般錯誤

表創建如下:

create table csi(start_time timestamp); 

然後我選擇的值如下:

import java.sql.*; 

public class hel 
{ 
    public static void main(String args[]) 
    { 
     try 
     { 
      Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
      Connection con=DriverManager.getConnection("jdbc:odbc:mohit","system","rock"); 
      PreparedStatement ps=con.prepareStatement("select * from csi"); 
      ResultSet rs=ps.executeQuery(); 
      while(rs.next()) 
      { 
       //System.out.println(rs.getString(4)); 
      } 
     } 
     catch(Exception e) 
     { 
      e.printStackTrace(); 
     } 

    } 
} 

但它拋出以下異常:

java.sql.SQLException: General error 
    at sun.jdbc.odbc.JdbcOdbc.createSQLException(Unknown Source) 
    at sun.jdbc.odbc.JdbcOdbc.standardError(Unknown Source) 
    at sun.jdbc.odbc.JdbcOdbc.SQLPrepare(Unknown Source) 
    at sun.jdbc.odbc.JdbcOdbcConnection.prepareStatement(Unknown Source) 
    at sun.jdbc.odbc.JdbcOdbcConnection.prepareStatement(Unknown Source) 
    at hel.main(hel.java:10) 

這是怎麼回事造成的,我該如何解決?

回答

0

請發佈確切的錯誤。另外,你爲什麼試圖從包含時間戳的東西中檢索一個字符串?根據您的需要查看getTimestamp對象ResultSet對象的方法。

+0

它會在執行PreparedStatement時拋出錯誤。 getTimeStamp()是在PreparedStatement之後執行的下一個事情。 – user925689

+0

需要更多信息;這是什麼樣的數據庫?此外,您創建的表稱爲「存儲」,而在查詢中使用「csi」。你確定表「csi」存在,並且從SQL編輯器觸發時,返回的結果會返回結果嗎? –

+0

對不起,這是一個錯誤,我創建了名爲csi的表,它不是store.As我前面說過我使用oracle(10g exp)。 – user925689

2

這裏的軌線的第一幾行簡單的翻譯(從下往上讀評論到頂部):

java.sql.SQLException: General error 
    at sun.jdbc.odbc.JdbcOdbc.createSQLException   // I have to create and throw the SQL exception! 
    at sun.jdbc.odbc.JdbcOdbc.standardError    // Uuuh, something failed? 
    at sun.jdbc.odbc.JdbcOdbc.SQLPrepare     // Let's start preparing it. 
    at sun.jdbc.odbc.JdbcOdbcConnection.prepareStatement // Ah, a prepared statement is been requested. 

它看起來像JDBC的ODBC橋驅動程序不知道如何創建準備語句對於Oracle 10g數據庫。

只是不要使用那個糟糕的驅動程序。你不是第一個遇到DB特定問題的人。改爲使用實際Oracle JDBC driver