JDBC-ODBC SQLException: общая ошибка

Я использую JDK 1.6. При этом я хочу подключиться к базе данных Access. Для этого я зарегистрировал системный DNS и попытался подключить эту базу данных с помощью соединения JDBC-ODBC.

Когда я подключаю его и проверяю, запуская простой запрос, чтобы проверить, правильно ли установлено соединение.

Вот мой фрагмент кода для выполнения запроса.

public void testConnection() {
    Connection conn = DBUtil.getConnection();
    Statement stmt = null;

    try {
        stmt = conn.createStatement();

        ResultSet rs = stmt.executeQuery("SELECT id FROM inventory");

        System.out.println("Connection Successful");
    } catch (Exception ex) {
        ex.printStackTrace();
    } finally {
        try {
            if (stmt != null) {
                stmt.close();
            }

            conn.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

Я вызываю метод testConnection() более одного раза.

Теперь дело в том, что первый раз запрос работает нормально, остальные три раза выдает ошибку, о которой ниже.

java.sql.SQLException: General error
at sun.jdbc.odbc.JdbcOdbc.throwGenericSQLException(JdbcOdbc.java:7086)
at sun.jdbc.odbc.JdbcOdbc.SQLAllocStmt(JdbcOdbc.java:173)
at sun.jdbc.odbc.JdbcOdbcConnection.prepareStatement(JdbcOdbcConnection.java:465)
at sun.jdbc.odbc.JdbcOdbcConnection.prepareStatement(JdbcOdbcConnection.java:443)

Пожалуйста, дайте мне знать, где что-то пошло не так?

Примечание. Я запускаю программу в 64-разрядной версии Windows 7. Зарегистрированный источник данных с использованием 32-битного драйвера на локальном компьютере (из пути: %windir%/SYSWOW64/odbcad32.exe)


person Parth Bhagat    schedule 20.01.2014    source источник


Ответы (1)


Я действительно не уверен в этом, но попробуйте что-то вроде этого:

public void testConnection() {
    Connection conn = null;
    PreparedStatement pre =null;
    ResultSet rs =null;

    try {
        conn = DBUtil.getConnection();
        PreparedStatement pre = conn.prepareStatement("select id from inventory");
        rs = pre.executeQuery();

        System.out.println("Connection Successful");
    } catch (Exception ex) {
        ex.printStackTrace();
    } finally {
            conn.close(); 
    }
}
person ravibagul91    schedule 28.01.2014