Хобрук: Ваш путь к мастерству в программировании

executeQuery никогда не возвращается в среде IDE NetBeans, но работает при запуске с помощью java

Я использую NetBeans IDE 7.0.1 и только что тестировал соединение Microsoft SQL Server с использованием JDBC от Microsoft. У меня есть эта тестовая программа:

package testsql;
import java.sql.*;
public class TestSQL {

    public static void main(String[] args) {
        Statement stmt = null;
        ResultSet rs = null;
        Connection con = null;

        try {
            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
            String connectionURL = 
                    "jdbc:sqlserver://foo.bar.com:1433;" +
                    "databaseName=flintstone;integratedSecurity=true;";
            con = DriverManager.getConnection(connectionURL);
        } catch (SQLException e) {
            System.out.println("SQL Exception: " + e.toString());
        } catch (ClassNotFoundException e) {
            System.out.println("Class Not Found Exception: " + e.toString());
        }

        try {
            String SQL = con.nativeSQL("SELECT COUNT(*) AS Count FROM fred");
            stmt = con.createStatement();
            rs = stmt.executeQuery(SQL);
            while (rs.next()) {
                System.out.println("Count = " + rs.getString("Count"));
            }
        } catch (SQLException e) {
            System.out.println("SQL Exception: " + e.toString());
        }

    }
}

Для свойства NetBeans VM Options установлено значение -Djava.library.path=C:\lib.

Когда я запускаю код в среде IDE, программа зависает при выполнении запроса и работает «навсегда». Ошибка не возвращается и тайм-аут не возникает.

Однако, если я соберу пакет, а затем запущу его с помощью java -Djava.library.path=C:\lib -jar TestSQL.jar, я получу ожидаемые данные: Count = 7349.


  • Вы проверяли журналы? Также вы можете сохранить методы System.out.println() до и после вашего вызова, чтобы быть уверенным, что он действительно там висит. 22.08.2012
  • Да, я проверил журналы и использовал println() здесь, там и везде, прежде чем опубликовать этот вопрос, и именно так я подтвердил, что зависал вызов executeQuery(). 11.09.2012

Ответы:


1

У меня сейчас проект работает в IDE. Оказалось, что это версия JDK, которую я использовал. Замена JDK1.6 на JDK1.7 устранила проблему, теперь все работает как положено.

22.08.2012
  • Скорее всего, ваш JDK 1.6 был версией 1.6 с обновлением 29, в котором была ошибка, из-за которой соединения с SQL Server зависали (кстати, в JDK 1.7 Update 1 или 2 была такая же проблема). 25.08.2012
  • Марк, вы совершенно правы. Это была версия 1.6 обновление 29. Сейчас я на версии 1.7 обновление 6. 10.09.2012
  • Новые материалы

    #093 | Моделирование вспышки эпидемии с помощью JavaScript — Часть 3
    TLDR: Я сделал симуляцию вспышки эпидемии, в которую можно поиграть здесь . Мой холст, моя сцена Мой HTML — это всего лишь один div с классом stage, и вот как я настроил на нем свой объект..

    numberToString.js (8kyu 16)
    Алгоритм кодовых войн Проблема Нам нужна функция, которая может преобразовать число в строку. 숫자를 문자열로 변환하는 함수를 작성해라. Решение 01 function numberToString(n) { return n.toString(); }..

    Лучшие практики для быстрого изучения языка программирования
    Изучение языка программирования может быть сложной задачей, но при правильном подходе определенно возможно быстро выучить язык программирования. Хорошее понимание языка программирования может..

    Использование данных из Adobe Analytics в предложениях Adobe Target
    Я уверен, что все видели эти всплывающие окна в интернет-магазинах, которые говорят что-то вроде « 15 человек просматривают этот товар прямо сейчас! » или « 105 человек из Мичигана купили это..

    Машинное обучение и его набор данных в CreateML
    Когда я впервые начал учиться в Apple Developer Academy, у меня был момент неуверенности в моем интересе к машинному обучению. Нужно ли мне сменить карьеру моей мечты с специалиста по данным на..

    Обучение требует воли
    Недавно я прочитал отличную статью Шейна Легга и Джоэла Венесса из DeepMind. http://arxiv.org/pdf/1109.5951v2.pdf В статье «универсальный интеллект» агента π определяется как: Поэтому..

    Безопасность по дизайну делает всех счастливыми
    Заложенная безопасность делает всех счастливыми Если вы никогда не смотрели Louis C.K. рассказать о том, как Все удивительно, и никто не счастлив ; побаловать себя. Сделайте это прямо..