获取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)
我正在使用以下代码
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();
}
stmt.executeQuery(query)
抛出异常。
user_location_table包含以下字段
user_id:number not null,
latitude:number,
longitude:number,
update_time:timestamp(6)
提前致谢
答案 0 :(得分:3)
我明白了。
由于在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";
这很好,我已经测试过了。
干杯!!
答案 1 :(得分:0)
有几点想法。如果它仅在第一次执行时发生,则可能是数据库中存在无效且正在编译的内容。其次,你可能有一些漏洞,因为你没有在finally块中关闭你的连接和语句。因此,如果您遇到异常,则不会关闭连接,并且可能会在数据库上创建锁定。
添加一个finally块并将close语句移动到那里检查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....
} 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();
}
}