2012-03-24 16 views
2

私は例外がstmt.executeQuery(query)でスローされます。java.sql.SQLException:一般的なエラー

Connection con=null; 
ResultSet rs=null; 
Statement stmt=null; 

try { 
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
    con=DriverManager.getConnection("jdbc:odbc:locator","locator","locator"); 

    stmt=con.createStatement(); 
    System.out.println("Before query"); 
    String query=null; 
    query="select * from user_location_table"; 
    System.out.println("after query12"); 

    rs=stmt.executeQuery(query); 
    //perform certain operation.... 
    rs.close(); 
    stmt.close(); 
    con.close(); 
} catch(Exception e) { 
    e.printStackTrace(); 
} 

次のコードを使用していjava.sql.SQLException

java.sql.SQLException: General error 
at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6986) 
at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7114) 
at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(JdbcOdbc.java:3110) 
at sun.jdbc.odbc.JdbcOdbcStatement.execute(JdbcOdbcStatement.java:338) 
at sun.jdbc.odbc.JdbcOdbcStatement.executeQuery(JdbcOdbcStatement.java:253) 
at com.test.Temp.main(Temp.java:29) 

を取得します。

user_location_tableは、次のフィールドに事前

+0

これは、データベースにアクセスする際のエラーが原因と考えられます。それは一貫して起こりますか?データベース接続の詳細が正しいことを確認しましたか? – Bernard

答えて

3

私はそれを得る:

は最終的にはnullをチェックするが、あなたの近くに文をブロックし、移動を追加します。

update_timeのデータ型timestamp(6)を使用するため、エラーがスローされます。データ型としてタイムスタンプの列を含むselect文を実行しようとすると例外がスローされます。代わりに、私たちは、これが正常に動作します

query="select latitude,longitude,to_char(update_time,'HH24:MI:SS'),to_char(update,time,'DD-MON-YY') from user_location_table";  

を選択するために、次のコードを使用することができ、前のコードの

は、私はそれをテストしています。

乾杯!

+2

JDBC/ODBCブリッジの代わりに** real ** JDBCドライバを使用する必要があります。 Oracleの「ネイティブ」JDBCには、タイムスタンプ列に問題はありません。 JDBC/ODBCブリッジはバグがあり(あなたが発見したように)、遅いです。 –

0

user_id:number not null, 
latitude:number, 
longitude:number, 
update_time:timestamp(6) 

おかげ思考のカップルが含まれています。最初の実行で唯一起こっているのであれば、dbに無効なものがあり、それがコンパイルされている可能性があります。第二に、あなたは最終的なブロックであなたの接続とステートメントを閉じていないので、何かが漏れている可能性があります。したがって、例外が発生した場合、接続を終了していない可能性があり、DBにロックを作成している可能性があります。

try { 
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
    con=DriverManager.getConnection("jdbc:odbc:locator","locator","locator"); 

    stmt=con.createStatement(); 
    System.out.println("Before query"); 
    String query=null; 
    query="select * from user_location_table"; 
    System.out.println("after query12"); 

    rs=stmt.executeQuery(query); 
    //perform certain operation.... 

} catch (Exception e) { 
    e.printStackTrace(); 
} 
finally { 
    try { 
    if (rs!=null) 
     rs.close(); 
    } catch (SQLException e) { 
    e.printStackTrace(); 
    } 
    try { 
     if (stm!=null) 
     stmt.close(); 
     } catch (SQLException e) { 
     e.printStackTrace(); 
    } 
    try { 
    if (con!=null) 
     con.close(); 
    } catch (SQLException e) { 
    e.printStackTrace(); 
    } 
} 
関連する問題