2014-09-26 5 views
0

Я пытаюсь поговорить с 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"); 
          } 
         } 
        } 
    

Он эпизодически работает, но, как правило, висит на команду создания таблицы. Если я прокомментирую это, он зависает в команде вставки. Я не могу представить, что не так.

+0

Каково определение «зависает» в этом случае? –

+0

Я жду несколько минут, и команды statement.execute или statement.executeUpdate никогда не возвращаются. Это тривиальные команды. Когда я запускаю те же команды с другими инструментами базы данных, сервер отвечает мгновенно. – clay

+0

* обычно * его нормально, но эти драйверы/версия были первоначально написаны для Java 5/6, вы пытаетесь с 7 или 8 http://www.microsoft.com/en-us/download/details.aspx?id = 11774 – curtisk

ответ

0

Когда приложение SQLWorkbenchJ запущено, мое простое тестовое приложение Java откроет соединение и просто будет вечно вешать любую команду SQL без каких-либо ошибок.

Как только я выхожу из приложения SQLWorkbenchJ, мое простое тестовое приложение Java работает отлично, как ожидалось. Это было действительно странно, и я в конце концов наткнулся на ответ.

Я переключился на использование RazorSQL в качестве консоли SQL, и у вас, похоже, нет таких проблем.

0

Я успешно использовал как JTDS driver, так и драйвер Microsoft (JDBC4). Я не пробовал SQLWorkbenchJ, так как я в основном использую SQuirreL для проверки драйверов.

+2

Хотя эта ссылка может ответить на вопрос, лучше включить здесь основные части ответа и предоставить ссылку для справки. Ответные ссылки могут стать недействительными, если связанная страница изменится. - [Из обзора] (/ review/low-quality-posts/11194392) –

+0

Хороший совет. Благодаря! –

Смежные вопросы