2014-09-26 47 views
0

我試圖讓Java應用程序與Microsoft SQL Server數據庫對話。Java JDBC - > SQL Server

  • 我從Microsoft網站下載了sqljdbc_4.0.2206.100_enu.tar.gz,因爲它不在普通的Maven樣式的Java庫存儲庫中。
  • 我手動安裝在本地Maven存儲庫中。
  • 我使用以下超級簡單測試代碼:
  • 我可以訪問SQLWorkbenchJ中的基於Java的SQL查詢工具中的數據庫,並獲得對這些SQL命令的正常即時響應。
  • 服務器是Windows 7上的SQL Server 2005.
  • 客戶端是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"); 
          } 
         } 
        } 
    

它零星的工作,但通常掛在create table命令。如果我註釋掉它,它掛在插入命令上。我無法想象什麼是錯的。

+0

在這種情況下,「掛起」的定義是什麼? – 2014-09-26 16:16:29

+0

我等了幾分鐘,並且statement.execute或statement.executeUpdate命令永遠不會返回。這些都是微不足道的命令。當我用其他數據庫工具運行相同的命令時,服務器立即響應。 – clay 2014-09-26 16:18:11

+0

*通常*可以,但這些驅動程序/版本最初是爲Java 5/6編寫的,您正在嘗試使用7或8 http://www.microsoft.com/en-us/download/details.aspx?id = 11774 – curtisk 2014-09-26 16:30:04

回答

0

當SQLWorkbenchJ應用程序運行時,我的簡單Java測試應用程序將打開連接並永久掛在任何SQL命令上而不會出現任何錯誤。

只要我退出SQLWorkbenchJ應用程序,我的簡單Java測試應用程序就會按預期完美運行。這真的很奇怪,我最終偶然發現了答案。

我切換到使用RazorSQL作爲SQL控制檯,似乎沒有任何像這樣的問題。

0

我已經成功使用了JTDS driver和Microsoft驅動程序(JDBC4)。我還沒有嘗試SQLWorkbenchJ,因爲我主要使用SQuirreL來測試驅動程序。

+2

儘管這個鏈接可能回答這個問題,但最好在這裏包含答案的重要部分,並提供供參考的鏈接。如果鏈接頁面更改,則僅鏈接答案可能會失效。 - [來自評論](/ review/low-quality-posts/11194392) – 2016-02-09 00:02:38

+0

很好的建議。謝謝! – 2016-03-04 19:20:10