JDBC連接SQL Server
阿新 • • 發佈:2017-08-22
pri 屬性 update 語句 jdb 用戶 輸入數據 其中 偉哥
DatabaseName=master; master表示數據源。如圖。
在運行還出現一個問題就是,用windows身份驗證可以登錄數據庫,但是使用SQL Server身份驗證卻提示失敗。
一般出現錯誤會報告錯誤代碼,我這裏報告的錯誤代碼是18456 。你可以用谷歌搜索一下: SQL Server 2008 錯誤代碼 18456.
這裏我簡單的提供一下解決辦法。
首先windows帳號是可以登錄的。
查找問題的過程:
第一步: 啟動所有與SQL有關的服務,問題依舊;
第二步: 查看windows防火墻,被默認啟動了,不啟動選擇項被Disabled。兩個提示“由於安全考慮,某些設置由組策略控制”“Windows防火墻正在使用您的域設置”,先用gpedit.msc打組策略編輯器,機算機配置--管理模板--網絡--網絡連接--Windows防火墻--標準配置文件,查看右邊各選項屬性,都是未配置狀態,問題不在這裏。
第三步:用windows帳號登錄,連接成功後,右擊實例,選擇屬性->安全性。確定“服務器身份驗證”選擇的是“SQL Server和Windows身份驗證模式” 通過這三個步驟,問題就差不多解決了。 還以一點,別忘了給sa用戶登錄權限。 雙擊sa帳號 選擇狀態。
下載jdbc驅動包
下載地址,我下載的是exe版本的,其實是格自解壓包。下載完畢之後,雙擊運行,會解壓在當前目錄下。
Microsoft SQL Server JDBC Driver 3.0\sqljdbc_3.0\chs\auth\x64\sqljdbc_auth.dll文件 復制到C:\Windows\SysWOW64目錄下。(64bit系統)
Microsoft SQL Server JDBC Driver 3.0\sqljdbc_3.0\chs\auth\x86\sqljdbc_auth.dll 文件 復制到 C:\Windows\System32 (32位系統,未經過驗證)
然後將 Microsoft SQL Server JDBC Driver 3.0\sqljdbc_3.0\chs\sqljdbc4/jar 包導入到項目中。
源代碼
1 import java.sql.*; 2 public class Conn{ 3 public static void main(String[] args) { 4 String JDriver="com.microsoft.sqlserver.jdbc.SQLServerDriver"; 5 //SQL數據庫引擎 6 String connectDB="jdbc:sqlserver://ABYSS-PC\\MYABYSS:64160;DatabaseName=master"; 7 //數據源 !!!!註意若出現加載或者連接數據庫失敗一般是這裏出現問題 8 // 我將在下面詳述 9 try { 10 //加載數據庫引擎,返回給定字符串名的類 11 Class.forName(JDriver); 12 }catch(ClassNotFoundException e) 13 { 14 //e.printStackTrace(); 15 System.out.println("加載數據庫引擎失敗"); 16 System.exit(0); 17 } 18 System.out.println("數據庫驅動成功"); 19 20 try { 21 String user="sa"; 22 //這裏只要註意用戶名密碼不要寫錯即可 23 String password="*liluotinghua33*"; 24 Connection con=DriverManager.getConnection(connectDB,user,password); 25 //連接數據庫對象 26 System.out.println("連接數據庫成功"); 27 Statement stmt=con.createStatement(); 28 //創建SQL命令對象 29 30 //創建表 31 System.out.println("開始創建表"); 32 //創建表SQL語句 33 String query= "create table TABLE1(ID 34 NCHAR(2),NAME NCHAR(10))"; 35 stmt.executeUpdate(query);//執行SQL命令對象 36 System.out.println("表創建成功"); 37 38 //輸入數據 39 System.out.println("開始插入數據"); 40 String a1="INSERT INTO TABLE1 VALUES(‘1‘,‘旭哥‘)"; 41 //插入數據SQL語句 42 String a2="INSERT INTO TABLE1 VALUES(‘2‘,‘偉哥‘)"; 43 String a3="INSERT INTO TABLE1 VALUES(‘3‘,‘張哥‘)"; 44 stmt.executeUpdate(a1);//執行SQL命令對象 45 stmt.executeUpdate(a2); 46 stmt.executeUpdate(a3); 47 System.out.println("插入數據成功"); 48 49 //讀取數據 50 System.out.println("開始讀取數據"); 51 ResultSet rs=stmt.executeQuery("SELECT * FROM 52 TABLE1");//返回SQL語句查詢結果集(集合) 53 //循環輸出每一條記錄 54 while(rs.next()){ 55 //輸出每個字段 56 System.out.println(rs.getString("ID")+"\t"+rs.getString("NAME")); 57 } 58 System.out.println("讀取完畢"); 59 60 //關閉連接 61 stmt.close();//關閉命令對象連接 62 con.close();//關閉數據庫連接 63 }catch(SQLException e){ 64 e.printStackTrace(); 65 System.out.print(e.getErrorCode()); 66 //System.out.println("數據庫連接錯誤"); 67 System.exit(0); 68 } 69 } 70 }
出現的問題
String connectDB="jdbc:sqlserver://ABYSS-PC\\MYABYSS:64160;DatabaseName=master";
先講解一下這段代碼。
其中ABYSS-PC\\MYABYSS 表示服務器名字,兩個反斜杠表示轉義。什麽是服務器的名字呢,如下圖:
64160 表示端口號,一般情況下默認的是1433,特殊情況下如我的便是隨機分配的。
驗證端口號:
1、打開任務管理器,選擇服務,查看SQL Server實例的 PID號為7284,我的電腦運行了兩個數據庫實例,我只連接第一個實例。 2、打開命令提示符。輸入 netstat -ano。 7284所對應的端口號是64160.查找問題的過程:
第一步: 啟動所有與SQL有關的服務,問題依舊;
第二步: 查看windows防火墻,被默認啟動了,不啟動選擇項被Disabled。兩個提示“由於安全考慮,某些設置由組策略控制”“Windows防火墻正在使用您的域設置”,先用gpedit.msc打組策略編輯器,機算機配置--管理模板--網絡--網絡連接--Windows防火墻--標準配置文件,查看右邊各選項屬性,都是未配置狀態,問題不在這裏。
第三步:用windows帳號登錄,連接成功後,右擊實例,選擇屬性->安全性。確定“服務器身份驗證”選擇的是“SQL Server和Windows身份驗證模式” 通過這三個步驟,問題就差不多解決了。 還以一點,別忘了給sa用戶登錄權限。 雙擊sa帳號 選擇狀態。
JDBC連接SQL Server