java通過JDBC鏈接SQLServer2012

文章來源:點擊打開鏈接

下面請一字一句地看,一遍就設置成功,比你設置幾十遍失敗,費時會少得多。

 

首先,在連接數據庫之前必須保證SQL Server 2012是採用SQL Server身份驗證方式而不是windows身份驗證方式。如果在安裝時選用了後者,則重新設置如下:

http://blog.163.com/jackie_howe/blog/static/19949134720122261121214/

 

當你保證SQL Server 2012是採用SQL Server身份驗證方式後,開始如下配置:

一、因爲SQL Server 2012裝好後,默認協議是沒有開啓的,所以要打開SQL Server配置管理器中開啓:

1、安裝好SQL Server 2012後,運行 開始  所有程序  Microsoft SQL Server 2012  配置工具 →SQL Server配置管理器,如下圖1所示:


2、打開的窗口如下圖所示。在左邊欄找到 SQL Server網絡配置選項,點開它的小箭頭,會看到“【你的數據庫名】的協議” (圖中是ERIC2012的協議),選中它,看右邊欄。如下圖2所示:

圖2

(1)如果Named Pipes 未啓用,則右鍵→啓用

(2)右鍵單擊 TCP/IP,選擇 啓用

(3)雙擊TCP/IP(右鍵→屬性),在彈出的窗口中選擇 “IP地址” 選項卡,將IP1和IP10的【IP地址】設爲127.0.0.1,並將所有【IPx】的【已啓用】設爲是。接着,拖動下拉條到最下方,將 IPAll 中的【TCP端口】設成 【1433】,其餘不變。如下圖3和圖4所示:

圖3

圖4

3、重新啓動計算機。

4、接下來使用telnet命令測試1433端口是否打開。首先要保證telnet服務開啓。開啓win7 telnet的方法在這裏:

http://blog.163.com/jackie_howe/blog/static/199491347201251723939691/

 

5、完成上一步後。開始菜單  運行cmd  輸入:telnet 127.0.0.1 1433,(注意telnet與127之間有空格,1與1433之間有空格)。如下圖:

圖5

6、若提示“不能打開到主機的連接,在端口 1433: 連接失敗”,則說明1433端口沒有打開,需要重新進行以上配置。若連接成功,顯示如圖6所示:

圖6

 

二、環境變量CLASSPATH配置:

1、下載Microsoft JDBC Driver 4.0 for SQL Server

在這裏下載:http://www.microsoft.com/zh-cn/download/details.aspx?id=11774

4.0版本支持的 SQL Server有:

Microsoft®SQL Server® 2012

Microsoft®SQL Server® 2008 R2

Microsoft®SQL Server® 2008

Microsoft®SQL Server® 2005

Microsoft®SQL Azure

 

下載sqljdbc_4.0.2206.100_chs.tar.gz(2.2M),解壓文件,得到sqljdbc.jar和sqljdbc4.jar。如果你使用的是jre1.7版本,則忽略sqljdbc.jar(因爲它用不了,而且如果和sqljdbc4.jar一起用會出錯),只留下sqljdbc4.jar。

以下設置均針對jre1.7版本(1.7以下應該也適用):

在D盤新建一個文件夾,命名爲sqljdbc4,將sqljdbc4.jar複製一個進去。

圖7

2、右擊 我的電腦  屬性  高級系統設置(高級)  環境變量,在系統變量中雙擊CLASSPATH變量(或選中CLASSPATH後  編輯),在最後面追加 “;D:\sqljdbc4 \sqljdbc4.jar” (注意最前面有個 ; )若不存在CLASSPATH,就新建CLASSPATH變量,並且將其值設爲“D:\sqljdbc4 \sqljdbc4.jar”。如圖8所示:

圖8

3、連續點擊 確定 以退出環境變量配置。

4、接下來的工作非常重要(因爲沒做我糾結了幾天沒成功)!!

有幾個地方需要注意:

(1)我們需要將sqljdbc4.jar類庫文件拷貝到D:\Program Files\Java\jdk1.7.0\jre\lib\ext目錄下。(看你安裝在哪個盤,如果是C盤,則最前面的D改爲C,下同)

 

(2)我們需要將sqljdbc4.jar類庫文件拷貝到D:\Program Files\Java\jre7\lib\ext目錄下

 

 最好是,只要是jre文件夾,都複製一個sqljdbc4.jar到jre7\lib\ext裏去!!

 

(3)如果是使用Tomcat做服務器(我使用的是Tomcat7),那麼我們需要將sqljdbc4.jar類庫文件拷貝到C:\apache-tomcat-7.0.11\lib目錄下。

 

(4)如果是使用Tomcat做服務器,那麼我們需要將sqljdbc4.jar類庫文件拷貝到D:\apache-tomcat-7.0.11\webapps\gaofei\WEB-INF\lib目錄下(gaofei目錄是我的應用,這個路徑相信你會看明白)

 

注意,只有sqljdbc4.jar !!如果把sqljdbc.jar和sqljdbc4.jar都拷在一起的話,這樣就算你全都做對了,也會持續出現有“此驅動程序不支持JRE1.7,請使用支持JDBC4.0的sqljdbc4.jar的類庫”的問題。因爲jdk默認地選擇了sqljdbc.jar(前面我已經提到,只留下sqljdbc4.jar)。

 

三、使用Eclipse測試連接SQL Server 2012數據庫:

1、打開SQL Server 2012,在其中新建數據庫 Test,然後退出SQL Server 2012。

2、運行Eclipse,新建一個Java Project 名爲 Test。

3、右單擊src,依次選擇 Build Path  Configure Build Path,在打開的窗口的右邊選擇 Libraries標籤,然後單擊 Add External JARs,找到 sqljdbc4.jar 文件並打開,然後單擊 OK 完成構建路徑的配置。如圖9(我是漢化版的):


示例代碼:

package test;

import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;

public class Test {
    public static void main(String[] args) {
        Connection conn;
        Statement stmt;
        ResultSet rs;
        String url = "jdbc:sqlserver://localhost:1433;DatabaseName=library;";
        String sql = "select * from UUSER";
        try {
            // 連接數據庫
            conn = DriverManager.getConnection(url, "sa", "123456");
            // 建立Statement對象
            stmt = conn.createStatement();
            /**
             * Statement createStatement() 創建一個 Statement 對象來將 SQL 語句發送到數據庫。
             */
            // 執行數據庫查詢語句
            rs = stmt.executeQuery(sql);
            /**
             * ResultSet executeQuery(String sql) throws SQLException 執行給定的 SQL
             * 語句,該語句返回單個 ResultSet 對象
             */
            while (rs.next()) {
                int id = rs.getInt("分類");
                String name = rs.getString("姓名");
                String age = rs.getString("單位");
                System.out.println("分類:" + id + "\t姓名:" + name + "\t單位:" + age);
            }
            if (rs != null) {
                rs.close();
                rs = null;
            }
            if (stmt != null) {
                stmt.close();
                stmt = null;
            }
            if (conn != null) {
                conn.close();
                conn = null;
            }
        } catch (SQLException e) {
            e.printStackTrace();
            System.out.println("數據庫連接失敗");
        }
    }
}




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章