2013-09-22 104 views
2

我想連接到我的數據庫使用sqljdbc4,我很新,所以我跟着幾個教程,但它仍然似乎不工作,當我嘗試運行程序我得到這個異常:難以連接到數據庫使用SQLserver jdbc

com.microsoft.sqlserver.jdbc.SQLServerException: Login failed for user ''.  ClientConnectionId:f181fd37-7e28-4392-ac86-02914c2090e1 
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:216) 

這是我的代碼:

try { 

     Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); 

     Connection con = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databaseName=DBank;","",""); 

     } catch (ClassNotFoundException e) { 
      e.printStackTrace(); 
     } catch (SQLException e) { 
      e.printStackTrace(); 
     } 
    return null; 

回答

5

您沒有傳遞任何身份驗證憑據。如果您想使用集成安全性(Windows身份驗證),則需要明確指定在您的連接URL 中,您需要加載所需的本地庫。

請在MSDN上的Windows上參閱Connecting with Integrated Authentication On Windows

這主要歸結於包括含(32位或64位)sqljdbc_auth.dlljava.library.path系統屬性(見鏈接瞭解詳細信息)的文件夾並添加integratedSecurity=true到連接字符串:

DriverManager.getConnection(
    "jdbc:sqlserver://localhost:1433;databaseName=DBank;integratedSecurity=true"); 
+0

非常感謝!我正在尋找解決方案的時間,無法理解爲什麼它不起作用,現在就工作。 – javaLovah

+0

我在一段時間裏很安靜。我通過Proxool使用驅動程序,並將「integratedSecurity」指定爲屬性,看起來它應該根據MS文檔工作。果然,轉移到URL解決了問題。謝謝! –

1

你傳入空的用戶名和密碼,同時連接到getConnection方法的數據庫:

DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databaseName=DBank;","",""); 

嘗試提供該數據庫的用戶名和密碼,例如:

DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databaseName=DBank;","myusername","mypassword"); 
+0

我沒有密碼和用戶名配置在我的數據庫中,我已經刪除了「」,「」,但我仍然得到相同的異常 – javaLovah