获取时间戳结果为java.sql.SQLException:一般错误

时间:2011-10-06 15:36:20

标签: java oracle jdbc oracle10g

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

这是如何引起的?如何解决?

2 个答案:

答案 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方法。