Kết nối SQL Server kiểu 1 : ODBC – JDBC Bridge

http://www.bodua.com/tailieu.aspx?bdg=41&bdgs=3

Đây là cách mà Aptech hay dùng để kết nối csdl nộp sang Ấn nên mình để tâm chút vậy,Cảm ơn tác giả nhé:D

Người đăng bài : duaca (16/09/2010 03:32:37 PM)

Hướng dẫn kết nối SQL Server trong JAVA
Sử dụng ODBC – JDBC Bridge (Type I)

Với hình thức kết nối này, ta có 2 cách làm như sau :

Cách 1: tạo 1 “System data source” thông qua công cụ “ODBC Data Source Administrator” của hệ điều hành Windows, sau đó viết 1 chương trình bằng Java thực hiện kết nối đến DSN (Data Source Name) đã tạo và đọc dữ liệu từ Database

Cách 2: Sử dụng chuỗi kết nối trực tiếp đến Database  theo cú pháp có dạng

jdbc:odbc:driver={SQL Server};Server=<ServerName>; Database=<YourDB>;UserName=<dbUser>;Password=<***>”

Phần hướng dẫn dưới đây, tôi sẽ giới thiệu cả 2 cách trên và viết chương trình Java để kết nối với 1 Database của SQL Server 2005. Như vậy trước khi bắt đầu, bạn phải tạo ra 1 Database trong SQL Server trên máy của mình có tên là qlCuocHen, trong đó có 1 Table tên là dsNguoiQuen, cụ thể các Fields trong table này, bạn có thể tạo ra theo ý của mình, tuy nhiên để có thể sử dụng trong chương trình minh họa ở dưới (Sau khi đã tạo DSN thành công) thì bạn nên có 3 fields giống như của tôi là hoNQ, tenNQ, sinhNhat. Sau đó tiến hành nhập thông tin cho table này (Thông tin cho khoảng 3 người, có thể nhiều hơn cũng được nhưng đừng nhập ít quá).

 

I / – Kết nối Database sử dụng ODBC – JDBC dựa trên DSN

A – Tạo 1 “System data source name” để sử dụng cho chương trình

Trong Windows, bạn hãy chọn Start – > Control Panel -> Administrative tools -> Data Source (ODBC). Lúc này trên màn hình sẽ xuất hiện công cụ “ODBC Data Source Administrator” của hệ điều hành Windows và bạn hãy tiến hành theo các bước như mô tả dưới đây

Chọn [Tab] System DSN

https://i2.wp.com/www.bodua.com/Pages/3/41/41_Files/image001.jpg

Chọn nút Add để tạo 1 DSN mới trong môi trường, lúc này bạn sẽ thấy xuất hiện cửa sổ sau :

https://i2.wp.com/www.bodua.com/Pages/3/41/41_Files/image002.jpg

Chọn DBMS sẽ sử dụng, trong trường hợp của bài viết minh họa này, tôi minh họa dùng SQL Server, vì thế bạn hãy kéo thanh cuộn xuống phía dưới và dùng chuột chọn mục SQL Server (Nếu máy của bạn chưa cài Microsoft SQL Server thì sẽ không tìm thấy mục này). Giao diện như hình sau

https://i1.wp.com/www.bodua.com/Pages/3/41/41_Files/image003.jpg

Lúc này chọn Finish và tiến hành khai báo các thông số cần thiết cho Data Dource Name sẽ sử dụng cho ODBC Driver như mô tả dưới đây

https://i1.wp.com/www.bodua.com/Pages/3/41/41_Files/image004.jpg

Bạn sẽ phải tiến hành nhập thông tin cho DSN cần tạo

Trong giao diện của cửa sổ trên, ta thấy có 3 mục. Mục “Name” dùng để thông báo cho ODBC Driver biết rằng tên của DSN mà bạn muốn tạo tên là gì, mục “Desciption” cho phép bạn gõ vào chuỗi ký tự dùng để diễn giải chi tiết cho DSN của mình. Mục cuối cùng “Server” : bạn phải chọn tên của “Database Server” – tức là tên của máy tính có cài đặt SQL Server chứa Database mà bạn sẽ kết nối đến (Nếu bạn kết nối đến 1 Database Server trên hệ thống mạng hoặc Internet thì tại mục này, bạn có thể gõ vào địa chỉ IP của server đó, trong trường hợp bạn kết nối đến SQL Server cài trong máy tính của bạn thì nhấn vào nút https://i2.wp.com/www.bodua.com/Pages/3/41/41_Files/image005.jpg và chọn tên của Database Server là tên mà khi cài đặt Microsoft SQL Server bạn đã đặt tên cho máy tính của mình). Trong hình dưới đây, tôi muốn DSN có tên là “qlCuocHen” và Database server trong máy tính của tôi có tên là “BODUA-D778EAB2E

https://i0.wp.com/www.bodua.com/Pages/3/41/41_Files/image006.jpg

Lưu ý :

Nếu bạn quên tên của SLQ Server thì bạn có thể dùng tool “Microsoft SQL Server Management Studio” và nhìn vào phần trên cùng trong trong cửa sổ “Object Browser” là thấy nó …

https://i2.wp.com/www.bodua.com/Pages/3/41/41_Files/image007.jpg

(Nhớ đừng gõ cả phần nằm trong cặp dấu ngoặc đối với Server name nhé)

Bạn chọn “Next” để tiếp tục, trên màn hình sẽ thấy giao diện như hình sau

https://i0.wp.com/www.bodua.com/Pages/3/41/41_Files/image008.jpg

–         Trong giao diện này, có 2 Radio button ở trên cùng cho phép bạn chọn hình thức đăng nhập và chứng thực khi kết nối vào Database. Mục thứ nhất dùng khi muốn chứng thực bằng tài khoản đăng nhập của hệ điều hành windows. Trong ví dụ này tôi chọn cách thứ 2 và chứng thực khi kết nối bằng 1 tài khoản đã tạo trong SQL Server, vì thế tại 2 khung chọn ở phía dưới, Login ID và Password, tôi phải nhập vào tên tài khoản đăng nhập và mật khẩu cần thiết của mình.

Tiếp theo bạn chọn nút Next, cửa sổ tiếp theo sẽ xuất hiện như hình dưới đây. Bạn  phải chỉ ra database mà mình muốn kết nối đến thông qua mục chọn “Change the default database to”(Các mục chọn còn lại của cửa sổ này sẽ do bạn tự tìm hiểu nhé)

http://www.bodua.com/Pages/3/41/41_Files/image009.jpg

Nhấn nút Next

https://i2.wp.com/www.bodua.com/Pages/3/41/41_Files/image010.jpg

Cuối cùng chọn Finish, bạn sẽ thấy cửa sổ như hình sau xuất hiện.

https://i0.wp.com/www.bodua.com/Pages/3/41/41_Files/image011.jpg

Bạn sẽ thấy các thông số mô tả cho 1 ODBC data source xuất hiện, ý nghĩa của những mục đó bạn cứ đọc sẽ hiểu. Cuối cùng ta chọn nút “Test Data Source” để kiểm tra kết nối. Nếu thành công thì bạn sẽ nhận được thông báo thế này

https://i0.wp.com/www.bodua.com/Pages/3/41/41_Files/image012.jpg

Bây giờ, bạn đã nhìn thấy tên của Data Source mà bạn tạo ra xuất hiện trong cửa sổ “ODBC Data source Administrator” (Cửa sổ mà bạn đã mở ra lúc đầu để tạo Data Source)

https://i0.wp.com/www.bodua.com/Pages/3/41/41_Files/image013.jpg

Đến đây, bạn muốn thay đổi lại cấu hình cho Data source của mình thì có thể sử dụng nút “Configure…” ở bên phải của giao diện

Lưu ý :

Khi tạo xong bạn phải nhớ tên của “Data Source Name”, nhìn vào cửa sổ “ODBC Data Source Administrator” ở trên là bạn thấy tên của DSN mà mình vừa tạo là “qlCuocHen” (Trùng với tên của Database mà mình muốn kết nối đến) Hoặc là trong cửa sổ mà bạn đã nhấn nút “Test Data source” bạn cũng sẽ thấy dòng “Data Source Name:qlCuocHen”.

 

B – Sau khi đã có DSN, ta viết 1 chương trình Java  để kết nối đến Databse

Sau khi đã tạo được “Data Source Name” bằng các bước vừa giới thiệu ở trên. Bây giờ chúng ta sẽ viết 1 chương trình nhỏ dùng để đọc dữ liệu từ Database “qlLichHen

 

package test_odbc;

 

import java.sql.Connection;

import java.sql.Driver;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

 

/**

 *

 * @author Nguyen Mai Huy

 */

public class Main {

    private Connection ketNoi = null;

    /**

     * Phương thức khởi tạo mặc nhiên của lớp Main

     * @throws Exception

     */

    public Main() throws Exception {

        Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver“);  

        String Url=”jdbc:odbc:qlCuocHen“;               

        this.ketNoi= DriverManager.getConnection(Url,”nmaihuy”,”1111″);

    }

    /**

     * Phương thức cho phép truy xuất Databse để đọc thông tin của 1 Table

     * và trả về kết quả đọc được cho 1 đối tượng ResultSet

     * @param tbName – Tên của Table muốn đọc dữ liệu

     * @return Kết quả đọc được dưới dạng 1 ResultSet Object tương ứng với nHàng và nCột

     * trong đó nHàng tương ứng với thông tin của n đối tượng được lưu trữ trong bảng

     * và n Cột tương ứng với số Fields có trong Table cần truy vấn

     * @throws SQLException

     */

    public ResultSet GetData(String tbName)throws SQLException {

        ResultSet kq=null;

        Statement stCmd = this.ketNoi.createStatement();

        String sqlQuery = “select * from ” + tbName;

        kq = stCmd.executeQuery(sqlQuery);

        return kq;

    }

    /**

     * Phương thức dùng để đóng kết nối với  Database Source Name

     * @throws Exception

     */

    public void Close() throws Exception {

        if (this.ketNoi != null) this.ketNoi.close();  //–Nếu kết nối còng đang mở thì đóng lại

    }

    /**

     *

     * @param args

     */

    public static void main(String[] args) {

        try {

            Main mh = new Main();

            ResultSet rs = mh.GetData(“dsNguoiQuen”);

            while(rs.next())

            {

                System.out.println(rs.getString(“hoNQ”)+ ” ” +rs.getString(“tenNQ”)+ rs.getString(“sinhNhat”));

            }

            mh.Close();

        } catch (Exception e) {

            e.printStackTrace();

        }

    }

}

Thực thi chương trình, ta nhận được kết quả thế này (Table của tôi chứa thông tin của 3 người bạn)

https://i2.wp.com/www.bodua.com/Pages/3/41/41_Files/image014.jpg

 

II / – Kết nối Database sử dụng ODBC – JDBC bằng connection string

Chương trình minh họa theo cách này cũng giống như ví dụ trên, chỉ khác nhau ở chỗ sử dụng chuỗi kết nối trong hàm khởi tạo mặc nhiên của lớp Main. Cú pháp cơ bản để sử dụng cho chuỗi kết nối như sau

jdbc:odbc:driver={SQL Server};Server=<ServerName>; Database=<YourDB>;UserName=<dbUser>;Password=<***>

–         Tất cả những vị trí nằm trong cặp dấu <> thuộc cú pháp trên sẽ tùy theo tình huống cụ thể mà bạn phải đưa thông số cho quá trình kết nối Database theo thực tế chương trình của mình. Ý nghĩa

<ServerName> : Bạn phải chỉ ra tên của Database server name mà bạn muốn kết nối đến. Trong trường hợp của ví dụ dưới đây, database server trong máy của tôi có tên là : BODUA-D778EAB2E

<YourDB> : Chính là tên cơ sở dữ liệu dùng cho chương trình của bạn đã được tạo ra trong Microsoft SQL Server. Trong ví dụ này, Database của tôi có tên là : qlCuocHen

<dbUser> : Đây là tên của tài khoản đã được tạo ra trong SQL Server và đã được cấp quyền tác động lên Database trong quá trình chương trình hoạt động. Trong ví dụ dưới, tôi sử dụng tài khoản sa

<***> : Chính là mật khẩu đăng nhập cho tài khoản ở trên.

 

 

package test_jdbc_driver;

 

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

/**

 *

 * @author Nguyen Mai Huy

 */

public class Main {

    private Connection ketNoi=null;

    /**

     * Default constructor

     * @throws ClassNotFoundException

     * @throws SQLException

     */

    public Main() throws ClassNotFoundException, SQLException{

        Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver“);

        String strConnect=”jdbc:odbc:driver={SQL Server};Server=BODUA-D778EAB2E;                                   Database=qlCuocHen;UserName=sa;Password=123456″;

        this.ketNoi= DriverManager.getConnection(strConnect);

    }

    /**

     * Phương thức cho phép truy xuất Databse để đọc thông tin của 1 Table

     * và trả về kết quả đọc được cho 1 đối tượng ResultSet

     * @param tbName – Tên của Table muốn đọc dữ liệu

     * @return Kết quả đọc được dưới dạng 1 ResultSet Object tương ứng với nHàng và nCột

     * trong đó nHàng tương ứng với thông tin của n đối tượng được lưu trữ trong bảng

     * và n Cột tương ứng với số Fields có trong Table cần truy vấn

     * @throws SQLException

     */

    public ResultSet GetData(String tbName)throws SQLException {

        ResultSet kq=null;

        Statement stCmd = this.ketNoi.createStatement();

        String sqlQuery = “select * from ” + tbName;

        kq = stCmd.executeQuery(sqlQuery);

        return kq;

    }

    /**

     * Phương thức dùng để đóng kết nối với  Database Source Name

     * @throws Exception

     */

    public void Close() throws Exception {

        if (this.ketNoi != null) this.ketNoi.close();  //–Nếu kết nối còng đang mở thì đóng lại

    }

    /**

     *

     * @param args

     */

    public static void main(String[] args) {

        try {

            Main mh = new Main();

            ResultSet rs = mh.GetData(“dsNguoiQuen”);

            while(rs.next())

            {

                System.out.println(rs.getString(“hoNQ”)+ ” ” +rs.getString(“tenNQ”)+ ”  –  “+ rs.getString(“sinhNhat”));

            }

            mh.Close();

        } catch (Exception e) {

            e.printStackTrace();

        }

    }

}

 

Thực thi chương trình, ta nhận được kết quả thế này (Cũng giống như kết quả của ví dụ trên)

https://i2.wp.com/www.bodua.com/Pages/3/41/41_Files/image015.jpg

ĐũaCả

 

Gửi phản hồi

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s