java.sql.SQLException:一般错误

Tou*_*one 2 java odbc database-connection jdbc oracle10g

得到 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)
Run Code Online (Sandbox Code Playgroud)

我正在使用以下代码

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();
}
Run Code Online (Sandbox Code Playgroud)

在 处抛出异常stmt.executeQuery(query)

user_location_table 包含以下字段

user_id:number  not null,
latitude:number,
longitude:number,
update_time:timestamp(6)
Run Code Online (Sandbox Code Playgroud)

提前致谢

Tou*_*one 5

我得到它。

由于在update_time 中使用了数据类型timestamp(6) 引发了该错误。每当我们尝试执行包含以timestamp 作为数据类型的列的select 语句时,就会抛出异常。

我们可以使用以下代码代替之前的代码进行选择

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

这很好用,我已经测试过了。

干杯!!

  • 您应该使用 **real** JDBC 驱动程序而不是 JDBC/ODBC 桥接器。Oracle 的“原生”JDBC 没有时间戳列的问题。JDBC/ODBC 桥有问题(正如您刚刚发现的那样)并且速度很慢。 (3认同)