2013年11月16日 星期六

[Java] 使用 Eclipse 連接SQL server

開發環境:
DB: SQL Server 2008 R2
JRE: 1.7


以下分5步驟:
1. DB設定, 開啟TCP/IP.
2. 新增帳號,  使用username及password登入SQL Server.
3. 安裝 Microsoft JDBC Driver 4.0 for SQL Server.
4. 設定 Eclipse 的ClassPath.
5. Test in Java.


1. DB設定, 開啟TCP/IP.

解決以下錯誤訊息:
連接到主機 localhost (連接埠 1433) 的 TCP/IP 連接已經失敗。錯誤: "Connection refused: connect。確認連接屬性。確認 SQL Server 執行個體是否在主機上執行並接受在通訊埠的 TCP/IP 連接。確認防火牆未封鎖通訊埠的 TCP 連接。"。

1.1 Start -> Microsoft SQL Server 2008 R2 -> Configuration Tools -> SQL Server Configuration Manager:











1.2  在[TCP/IP] 上按右鍵 -> [內容] .













1.3  tab [Protocol] 設定 [Enable]=Yes, 及tab [IP Address] 設定 [TCP Port]=1433



1.4  最後記得 restart SQL Server.















2. 新增帳號,  使用username及password登入SQL Server.

2.1 登入DB, 在[Logins] 按右鍵 [New Login...].













2.2 新增帳號[user123456789].














2.3 在tab [Status],  將 [Login] enable.















3. 安裝 Microsoft JDBC Driver 4.0 for SQL Server.

3.1 下載 JDBC driver
http://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=11774

3.2 執行 sqljdbc_4.0.2206.100_enu.exe, 解壓縮至指定的資料夾. 如: C:\Program Files (x86)\Microsoft JDBC Driver 4.0 for SQL Server


4. 設定 Eclipse 的ClassPath.

4.1 在tool bar 選擇 [Run] -> [Run Configurations...] -> 右側的 tab [Classpath] -> 在User Entries 下, 點選按鈕 [Add External JARs...].
4.2  彈出檔案視窗, 選取步驟3的JDBC JAR檔(sqljdbc4.jar).
sqljdbc.jar:   支援Java Runtime Environment (JRE) 5.0或較舊的版本.
sqljdbc4.jar: 支援Java Runtime Environment (JRE) 6.0 以上的版本.
如果選錯版本, 會出現以下錯誤訊息:
        java.lang.UnsupportedOperationException: 此驅動程式不支援 Java Runtime Environment (JRE) 版本 1.7。請使用提供 JDBC 4.0 支援的 sqljdbc4.jar 類別庫。



5. Test in Java.



import java.*;
import java.sql.*;

public class ConnectionTest {
public static void main(String[] args) {
    try
    {
        Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
        Connection conn = DriverManager.getConnection("jdbc:sqlserver://localhost;"
            + "databaseName=MyTesting;user=user123456789;password=123456789;");
             
        DatabaseMetaData metadata = conn.getMetaData();           
        System.out.println("Database Name: "+ metadata.getDatabaseProductName());
             
        } catch (Exception e) {
            e.printStackTrace();
        }        
    }
}


輸出結果: