數據庫登錄身份驗證方式有兩種
其中服務器名稱即為安裝SQLServer2008的電腦,充當數據庫服務器,在筆者這里就是自己的電腦名稱。
身份驗證方式有兩種:windows身份驗證和SQLServer身份驗證。對於選用windows身份驗證,登錄時不需要輸入密碼,登錄者是這台電腦的用戶;SQLServer身份驗證登錄需要輸入用戶名和密碼,而sa用戶是數據庫服務器默認的sqlserver身份登陸者。服務器角色sysadmin是具有最大權限的角色,該角色對任何用戶創建的數據庫都可以瀏覽和修改。
-
//創建windows身份驗證登錄的用戶
-
create login [DESKTOP-T2FR3H7\Administrator] from windows;
下面討論如何在eclipse中通過jdbc連接數據庫,分別采用windows身份和sqlserver身份。
1 正確導入sqljdbc.jar包到項目工程的build path目錄下,此時會看到.jar下面有兩個子包com.microsoft.sqlserver.jdbc包和microsoft.sql包,而SQLServerDriver驅動類就在第一個子包下面
2 采用SQLServer身份登錄連接數據庫服務器代碼如下
-
public static void method1()
-
{
-
try {
-
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); //將數據庫驅動器類加載到jvm中
-
} catch (ClassNotFoundException e) {
-
e.printStackTrace();
-
}
-
String dbURL="jdbc:sqlserver://localhost:1433;DatabaseName=aa";//數據庫連接地址
-
try {
-
Connection conn=DriverManager.getConnection(dbURL,"sa","123456");//需要輸入登錄用戶名和登錄密碼
-
System.out.println("Connection Successful!");
-
} catch (SQLException e) {
-
e.printStackTrace();
-
}
-
}
3 采用windows身份驗證登錄
需要做額外工作,且dbURL為"jdbc:sqlserver://localhost:1433;integratedSecurity=true;databasename=aa"
//integratedSecurity 身份驗證方式,當為true時將使用當前的windows用戶賬戶憑據進行身份驗證;當為false時,在連接中指定用戶ID和密碼
代碼如下
-
public static void method2()
-
{
-
try {
-
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
-
} catch (ClassNotFoundException e) {
-
e.printStackTrace();
-
}
-
String dbURL="jdbc:sqlserver://localhost:1433;integratedSecurity=true;DatabaseName=aa";
-
try {
-
Connection conn=DriverManager.getConnection(dbURL);
-
System.out.println("Connection Successful!");
-
} catch (SQLException e) {
-
e.printStackTrace();
-
}
-
}
出現這種情況報錯是因為第一次使用繼承身份驗證方式,需要做一些額外工作。
1 將sqljdbc_auth.dll文件復制到C:/windows/system32目錄下
2為保險起見, 同時也復制到jdk/bin目錄下(jre/bin目錄下也需要復制一份)
Sqljdbc_auth.dll文件在sqljdbc\chs\auth\x64目錄下 x86代表計算機是32位,x64代表計算機是64位,應該根據自己電腦的情況靈活選擇。
