выполнение останавливается без ошибок при подключении к jdbc

#java #sql-server #jdbc #database-connection

#java #sql-сервер #jdbc #database-connection

Вопрос:

Только что закончил настройку всего и запустил свой код. но java не выдает никаких ошибок, поэтому я не знаю, что не так. Вот моя настройка win7 — sql server 2008 express r2 — eclipse-все на одном компьютере (localhost). Вот код:

 Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
    String connectionUrl = "jdbc:sqlserver://localhost:1433;"  
        "databaseName=MyDatabase;user=sa;password=test;";
    System.out.println("AAA");

    Connection conn = DriverManager.getConnection(connectionUrl);

    System.out.println("BBB");

    Statement stmt = conn.createStatement();
    ResultSet rs = stmt.executeQuery("SELECT * FROM Friends");
  

таким образом, до печати AAA ошибок не возникает. Затем ничего не происходит. Ошибок нет, и BBB никогда не печатается. Что-то не так с объявлением Connection conn, но что? Сообщений об ошибках вообще нет, так на что мне теперь смотреть? Спасибо

Ответ №1:

Попробуйте обернуть код вокруг try / catch, как показано ниже:

 try {
  //your code here
} catch(SQLException e) {
  e.printStackTrace();
}
  

В ‘catch’ вы должны увидеть некоторые подробности о том, что происходит.

Хороший учебник по JDBC находится по адресуhttp://www.jdbc-tutorial.com

Удачи!

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

1. на самом деле у меня это уже есть. но не опубликовал это. извините. что дальше?

2. Опубликуйте трассировку стека любого исключения, которое вы получаете.

3. Да, опубликуйте трассировку стека, чтобы мы могли получить лучшее представление о том, что у вас происходит.

4. При запуске кода не было выдано никаких исключений. Консоль просто выводит AAA

Ответ №2:

Попробуйте проверить, является ли значение connectionUrl правильным или нет. Ваше время ожидания до истечения времени ожидания входа в базу данных при вызове DriverManager.getConnection(connectionUrl) равно DriverManager.getLoginTimeout() . Попробуйте проверить это значение.

Ответ №3:

Я предполагаю, что ваш sql server не запущен, и Windows истекает в ожидании его появления.

Подтвердите, что sql server запущен, и подтвердите, что вы можете ping localhost .

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

1. Здравствуйте, я проверил свои службы SQL Server (SQLEXPRESS), и он запущен. Также в моей конфигурации сети sql у меня есть следующее: Протоколы для SQLEXPRESS-> TCP / IP включены. Когда я щелкаю правой кнопкой мыши -> свойства-> затем перехожу на вкладку Ip-адреса, у меня все IP-адреса активны и включены, установлено значение «Да». Однако IP-адреса для всех из них представляют собой какое-то странное длинное шестнадцатеричное число fe80:: a0aa: 58f5: b2ed: fb79!. Может ли это быть проблемой? Также у меня отключен брандмауэр Windows.

Ответ №4:

Потратив более 8 часов на решение этой проблемы, все свелось к глупому драйверу MS jdbc! Я НЕ МОГУ ПОВЕРИТЬ, ЧТО ИХ СОБСТВЕННЫЕ ДРАЙВЕРЫ НЕ РАБОТАЮТ С ИХ ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ!!! БОЖЕ. Итак, после множества поисков все свелось к использованию jtds jdbc driver, и это работает! вздох. Держитесь подальше от драйвера MS jdbc! Я надеюсь, что это поможет другим сэкономить немного времени.

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

1. LOL, жаль это слышать, но, по крайней мере, вы нашли проблему! Драйверы MS JDBC не работают со своей собственной базой данных, да? Почему я не удивлен…