Я пытаюсь поговорить с Java-приложением в базе данных Microsoft SQL Server.Java JDBC -> SQL Server
- Я скачал sqljdbc_4.0.2206.100_enu.tar.gz с веб-сайта Microsoft, поскольку это не размещалось в нормальном Maven стиле библиотеки Java репозиториев.
- Я вручную устанавливаю локальный репозиторий Maven.
- Я использую следующий суперпростой тестовый код:
- Я могу получить доступ к базе данных в SQLWorkbenchJ, которая является инструментом запросов SQL на основе Java и получает нормальные мгновенные ответы на эти SQL-команды.
- Сервер SQL Server 2005 в Windows 7.
Клиент - это Java 7. Я тоже пробовал Java 8 без разницы.
public static void superSimpleJdbcTest(String jdbcUrl, String user, String password) throws SQLException { try (Connection dbConnection = DriverManager.getConnection(jdbcUrl, user, password)) { System.out.println("opened connection"); try (Statement statement = dbConnection.createStatement()) { System.out.println("created statement"); System.out.println("executing create table command..."); statement.execute("create table something (id int primary key, name varchar(100))"); System.out.println("completed create table command"); System.out.println("executing insert command..."); statement.executeUpdate("insert into something (id, name) values (1, 'Brian')"); System.out.println("insert command completed"); } } }
Он эпизодически работает, но, как правило, висит на команду создания таблицы. Если я прокомментирую это, он зависает в команде вставки. Я не могу представить, что не так.
Каково определение «зависает» в этом случае? –
Я жду несколько минут, и команды statement.execute или statement.executeUpdate никогда не возвращаются. Это тривиальные команды. Когда я запускаю те же команды с другими инструментами базы данных, сервер отвечает мгновенно. – clay
* обычно * его нормально, но эти драйверы/версия были первоначально написаны для Java 5/6, вы пытаетесь с 7 или 8 http://www.microsoft.com/en-us/download/details.aspx?id = 11774 – curtisk