Соединение Java NetBeans JDBC, работающее в режиме отладки, а не при запуске

#java #sql-server #netbeans

#java #sql-сервер #netbeans

Вопрос:

Я создаю небольшой внутренний инструмент (непроизводственный код), который получает некоторые данные из нашей базы данных MS SQL. Я хотел попробовать NetBeans 6.9.1, поэтому использую это.

У меня есть эта функция для подключения к БД, и у меня есть системный DSN для настройки FAND_DEV в качестве собственного клиента SQL.

 private static Connection GetConnection() {
            Connection conn = null;
        try {            
            conn = DriverManager.getConnection("jdbc:odbc:FAND_DEV");
        } catch (SQLException ex) {
            Logger.getLogger(DAL.class.getName()).log(Level.SEVERE, null, ex);
        }

        return conn;
}
  

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

Однако, когда я пытаюсь запустить (запустить основной проект в NetBeans), он выдает исключение для подключения к БД. Любая помощь по этому вопросу была бы высоко оценена.

 java.sql.SQLException: [Microsoft][ODBC Driver Manager] Invalid string or buffer length
        at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6957)
        at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7114)
        at sun.jdbc.odbc.JdbcOdbc.SQLGetDataString(JdbcOdbc.java:3907)
        at sun.jdbc.odbc.JdbcOdbcResultSet.getDataString(JdbcOdbcResultSet.java:5698)
        at sun.jdbc.odbc.JdbcOdbcResultSet.getString(JdbcOdbcResultSet.java:354)
        at sun.jdbc.odbc.JdbcOdbcConnection.buildTypeInfo(JdbcOdbcConnection.java:1503)
        at sun.jdbc.odbc.JdbcOdbcConnection.initialize(JdbcOdbcConnection.java:381)
        at sun.jdbc.odbc.JdbcOdbcDriver.connect(JdbcOdbcDriver.java:174)
        at java.sql.DriverManager.getConnection(DriverManager.java:582)
        at java.sql.DriverManager.getConnection(DriverManager.java:207)
        at gosDbCopy.db.DAL.GetConnection(DAL.java:53)
  

Комментарии:

1. Похоже, что это тонкая ошибка многопоточности глубоко внутри кода JDBC-ODBC. Действительно, попробуйте использовать только JDBC, как предлагает @John.

Ответ №1:

С MS SQL вы должны иметь возможность использовать JDBC вместо использования моста JDBC-ODBC. Однако причина может быть связана с этим. Причина также может быть в типе данных, которые вы возвращаете. Это, кажется, дает один из примеров этого.

Комментарии:

1. В итоге я отказался от этого и просто переключился на JDBC.