从Oracle数据库中获取时间戳时遇到问题。
该表创建如下:
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 :(得分: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。
答案 1 :(得分:0)
请发布确切的错误。另外,为什么要尝试从包含时间戳的内容中检索字符串?根据您的需要查看getTimestamp
对象的ResultSet
方法。