我从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)


这是怎么引起的,我该如何解决?

最佳答案

这是跟踪的前几行的简单翻译(从下至上阅读注释):

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数据库创建准备好的语句。

只是不要使用该糟糕的驱动程序。您不是第一个遇到特定于数据库的问题的人。请使用真实的Oracle JDBC driver

关于java - 在Java.sql.SQLException中获取时间戳记结果:常规错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7676753/

10-12 05:06