1. 程式人生 > >JDBC連接SQL Server

JDBC連接SQL Server

pri 屬性 update 語句 jdb 用戶 輸入數據 其中 偉哥

下載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. 技術分享
技術分享 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連接SQL Server