我試圖將我的Java代碼連接到Microsoft SQL Server 2008 R2 Express數據庫。我已經下載了Microsoft SQL Server JDBC Driver 3.0,並將sqljdbc4.jar添加到我的類路徑中。我正在使用Netbeans,並且在我的項目中也包含了sqljdbc4.jar。將SQL Server 2008連接到Java:登錄失敗,出現用戶錯誤
我在SQL Server Management Studio中創建了一個名爲TestDB1的數據庫,並添加了一些用於測試的列和值。我通過右鍵單擊服務器JACOB = PC \ SQLEXPRESS-> Properties-> Secuity並從Windows身份驗證模式更改爲SQL Server和Windows身份驗證模式,從Windows身份驗證模式更改。
然後,我通過右鍵單擊JACOB-PC/SQLEXPRESS-> Secuity Folder-> Logins文件夾下的窗口資源管理器中的登錄文件夾創建了一個新登錄名,並添加了新的登錄名。我給它命名爲jhaip2,切換到SQL Server身份驗證並將密碼設置爲jacob。強制執行密碼策略並強制密碼過期未被選中。默認數據庫設置爲TestDB1。然後在TestDB1-> Secuity-> Users-> jhaip2-> Database角色成員資格下,我將jhaip2設置爲db_owner(我無法在管理工作室中登錄數據庫而沒有這樣做,可能不是正確的做法?)。然後我重新啓動了服務器。
現在對於我的java代碼,它基本上是JDBC Driver 3.0示例代碼的直接副本,除非沒有Windows身份驗證。
package databasetest1;
import java.sql.*;
public class connectURL {
public static void main(String[] args) {
// Create a variable for the connection string.
String connectionUrl = "jdbc:sqlserver://localhost:1433;" + "databaseName=TestDB1;";
// Declare the JDBC objects.
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
try {
// Establish the connection.
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
System.out.println("Driver okay");
con = DriverManager.getConnection(connectionUrl,"jhaip2","jacob");
System.out.println("Connection Made");
}
// Handle any errors that may have occurred.
catch (Exception e) {
e.printStackTrace();
}
finally {
if (rs != null) try { rs.close(); } catch(Exception e) {}
if (stmt != null) try { stmt.close(); } catch(Exception e) {}
if (con != null) try { con.close(); } catch(Exception e) {}
}
}
}
當我運行時,它打印出「Driver okay」,所以我假設我的驅動程序設置正確。然後它打印錯誤:
com.microsoft.sqlserver.jdbc.SQLServerException: Login failed for user 'jhaip2'.
無論我使用什麼用戶名,它總是失敗。我有一種感覺,我設置了錯誤的用戶。如果任何人都可以給我一些關於如何正確設置用戶的幫助,或者有關如何簡單連接到Java中的SQL Server數據庫的任何指導,我將不勝感激。
你正確添加用戶到數據庫引擎的具體數據庫 – mKorbel
你有沒有試着用SQL Server管理控制檯內的用戶名和密碼登錄?也許你的sqlserver被配置爲使用windows驗證而不是sql server驗證。 – Omnaest
@ user625146我忘記了這一點,同意更改Windows對混合模式的支持,+1和SQL2008R2通過默認關閉了網絡管道...... – mKorbel