[java] Kết nối CSDL Access bằng driver Access ( dùng nhanh gọn hơn ODBC nhiều )

Discussion in 'CSDL cho java' started by chuotfx, 21/12/10.

  1. chuotfx

    chuotfx Member

    theo như các thầy dạy ở trường thì việc kết nối cơ sở dữ liệu thông qua JDBC có nhiều phương pháp khác nhau, và thầy đã demo cầu nối JDBC và ODBC

    nhưng cầu nối ODBC có 1 số bất lợi

    • mỗi khi muốn dùng thì phải tạo đối tượng ODBC từ win
    • kô hỗ trợ UTF-8 ( cho dù nó kêt nối với hệ quản trị cơ sỡ dữ liệu nào đi nữa...)
    • Và quan trọng là vào phòng thi gặp máy bà điên kô kết nối đc là đi lun, nên cái này thuộc dạng hên xui và ăn ở ( điển hình là anh Liêm, tuy cài win 7, nhưng vào ODBC kô có Access nên ngậm đắng mà cài lại XP )
    • còn cái j nữa thì anh em tự tìm
    Bây giờ quan tâm tới driver, đối với ODBC thì JDBC của java chỉ quan tâm tới kết nối, còn lại nó kô quan tâm tới hệ CSDL còn với cách dùng drive thì chúng ta cần phải quan tâm đến hệ quản trị CSDL ===> tức là mỗi nhà sản xuất CSDL thì học cung cấp cho chúng ta 1 driver để kết nối tới nó
    Vì vậy, vơi SQL, MySQL, DB,Access.... thì chúng hoàn toàn khác nhau.
    ==========================================
    Lúc này, phục vụ cho thi nên dùng Access :
    Ưu điểm :

    • nhõ, nhẹ, cơ động cao
    • thích hợp cho những bạn con nhà nghèo mà ba má lại động ( như mình chẳng hạn ) thì kô có laptop nên mỗi lần làm CSDL thì tới máy khác là phải cài lại toàn bộ hệ CSDL, quá tốn thời gian, còn Access thì chúng ta chỉ copy file đem theo là xong
    • Còn những ai làm thực tập nhận thức các đề từ 84 đếm 103 ( là quản lý ) thì dùng cái này sướng hơn nhiều ....
    • hỗ trợ UTF-8 nếu dùng các phiên bản cao hơn thì có lun UTF-16 hay 32, nêu việc sữ dụng tiếng việt là vô tư...
    • .....
    Khuyết điểm:

    • Chậm hơn ODBC ( cái này là hiễn nhiên )
    • Nếu mà kết nối và thực hiện lệnh liên tục thì em nó tự ái, tự dis liền...nên cái này chú ý nghe
    • Vì access kô mạnh nên các bạn chỉ dùng nó vào mấy cái nhõ nhõ, còn làm những cái lớn thì dùng SQL là ok nhất....
    • .....
    Tiếp theo là tải driver, cái này phải nhờ anh Google là ok nhất
    còn kô các bạn có thể tải từ link này :
    Code:
    http://www.mediafire.com/?7rr9zhac37r2zdb
    Tiếp theo là việc sử dụng driver như thế nào , mình sẽ demo trên NetBean và Eclipse cho xem

    Add driver thành thư viện của IDE

    • Eclipse : kích chuột phải vào project và chọn properties
    [​IMG]
    • NetBean

    [​IMG]


    ============================
    tiếp theo là cách kết nối

    PHP:
    Class.forName("com.hxtt.sql.access.AccessDriver");
    Connection con DriverManager.getConnection("jdbc:access:/Demo2.mdb");
    com.hxtt.sql.access.AccessDriver là URL để kiểm tra driver với CSDL
    jdbc:access:/Demo2.mdb cũng như những cái khác, bao gồm 3 phần jdbc là của java, access là của Access , còn /Demo2.mdb là file Access nó đặt tại mã nguồn thì kô cần đường dẫn, nếu đặt chỗ khác thì các bạn chỉnh lại đường dẫn cho nó... nên cơ động là chỗ này

    ===========
    thế là coi như xong, việc còn lại thì dùng y như ODBC thui, rất là đơn giản

    =================
    Sau đây mình cung cấp thêm 1 trạng thái bảo vệ CSDL của bạn, nhưng muốn dùng nó thì bạn phải cài đặt user, pass cho hệ quản trị CSDL của mình

    PHP:
    Properties info=new Properties();
                
    info.put("charSet","utf-8");
                
    info.put("user","Admin");
                
    info.put("password","123456");
    dùng đối tượng Properties, vì đã dùng driver thì kô có hỗ trợ sẳn hết như ODBC nên đôi lúc mình phải tùy chĩnh

    như trên là dùng utf-8
    user đăng nhập vào CSDL là "Admin"
    pass là "123456"

    sử dụng như thế này

    PHP:
    Connection con DriverManager.getConnection("jdbc:access:/Demo2.mdb",info);
    mình bỏ nó vào chỗ kết nối

    ================================================
    để kết thúc tut này sẽ demo 1 bài dùng driver

    code
    PHP:
    package AccessJava;

    import java.awt.Color;
    import java.awt.Dimension;
    import java.awt.FlowLayout;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.ResultSetMetaData;
    import java.sql.Statement;
    import java.util.Properties;
    import java.util.Vector;

    import javax.swing.JFrame;
    import javax.swing.JRootPane;
    import javax.swing.JScrollPane;
    import javax.swing.JTable;
    import javax.swing.table.JTableHeader;

    public class 
    DemoDriverAccess extends JFrame {
        public  
    DemoDriverAccess() {
            
    super("Demo Driver Access");
            
    setDefaultCloseOperation(EXIT_ON_CLOSE);
            
    setLayout(new FlowLayout(FlowLayout.CENTER));
            
    addItem();
            
    setUndecorated(true);
            
    getRootPane().setWindowDecorationStyle(JRootPane.PLAIN_DIALOG);
            
    pack();
            
    setVisible(true);
        }
        
        private 
    void addItem() {
            try {
                
                
    Properties info=new Properties();
                
    info.put("charSet","utf-8");
                
    info.put("user","Admin");
                
    info.put("password","123456");
                Class.
    forName("com.hxtt.sql.access.AccessDriver");
                
    Connection con DriverManager.getConnection("jdbc:access:/Demo2.mdb",info);
                
                
    Statement stmt con.createStatement();
                
    ResultSet rs stmt.executeQuery("select * from ten");
                
    ResultSetMetaData rsm rs.getMetaData();
                
                
    //----&#&#&#&#[ tạo tiêu đề &#&#&#&#]----//
                
    int numCol rsm.getColumnCount();
                
    Vector vtCol = new Vector(numCol,numCol);
                for(
    int i=1;i<=numCol;i++){
                    
    vtCol.add(rsm.getColumnName(i));
                }
                
                
    //----&#&#&#&#[ tạo data&#&#&#&#]----//
                
    Vector vtData = new Vector(10,10);
                
    Vector temp;
                while(
    rs.next()){
                    
    temp = new Vector(numCol);
                    for(
    int i=1;i<=numCol;i++){
                        
    temp.add(rs.getString(i));
                    }
                    
    vtData.add(temp);
                }
                
                
    JTable table = new JTable(vtData,vtCol);
                
    JTableHeader header table.getTableHeader();
                
    header.setBackground(Color.YELLOW);
                
    table.setPreferredScrollableViewportSize(new Dimension(50070));
                
    table.setFillsViewportHeight(true);
                
    add( new JScrollPane(table));
                
            } catch (
    Exception e) {
            }
            
        }

        public static 
    void main(String&#&#&#&#[&#&#&#&#] args) {
            
    new DemoDriverAccess();
        }

    }

    kết quả chạy

    [​IMG]

    trong đó có 1 số lệnh rất hay, các bạn tự tìm hiểu nghe, làm cho bài java mình thêm đẹp

    Cuối cùng, chúc các bạn thành công :ghost34:
    p/s: nếu thấy hay thì thanks 1 cái coi như là động viên mình, hehehehe
    JoayJin_Tee and mar007 like this.
  2. nhohb

    nhohb New Member

    Ðề: [java] Kết nối CSDL Access bằng driver Access ( dùng nhanh gọn hơn ODBC nhiều )

    cái này chỉ cho phép thực hiện mỗi lần 50 lệnh truy vấn thui, hết 50 lần thì nó bắt mua bản quyền đó, nếu bạn chạy 1 ứng dụng lên và thực hiện 50 lần truy vấn csdl thì nó không cho làm nữa, chán thật, nếu như thế này thì làm sao làm các dự án lớn đây, có ai giúp tôi cái khác không, Thanks nhiều nhé các bạn!
  3. geminious

    geminious Member

    Ðề: [java] Kết nối CSDL Access bằng driver Access ( dùng nhanh gọn hơn ODBC nhiều )

    Mình thấy thằng này là JDBC Type 4 mà :-? mà Type 4 làm dự án thì cứ MySQL với SQLServer mà chơi chứ có dự án nào xài access đâu :-?
  4. pr0t0ss9x

    pr0t0ss9x New Member

    Ðề: [java] Kết nối CSDL Access bằng driver Access ( dùng nhanh gọn hơn ODBC nhiều )

    cứ SQL cho nó lành :D
  5. ken.culu

    ken.culu New Member

    Ðề: [java] Kết nối CSDL Access bằng driver Access ( dùng nhanh gọn hơn ODBC nhiều )

    Cho mình hỏi làm sao để chèn 1 Jtable vào TextArea được bạn nào có VD cụ thể giúp mình với thank
  6. chuotfx

    chuotfx Member

    Ðề: [java] Kết nối CSDL Access bằng driver Access ( dùng nhanh gọn hơn ODBC nhiều )

    ác quá bạn ơi, Jtable sao chén vào đc TextArea, kiếm cái component nào đó mà bỏ nó vào, vấn đề này kô liên quan đến DataBase, bạn nên lập topic mà hỏi
  7. ce_itcn

    ce_itcn Moderator

    Ðề: [java] Kết nối CSDL Access bằng driver Access ( dùng nhanh gọn hơn ODBC nhiều )

    Ở đâu có cái hướng dẫn đọc, hiển thị , bổ sung, xóa cơ sở dữ liệu không nhỉ?
  8. thanhvan12

    thanhvan12 New Member

    Ðề: [java] Kết nối CSDL Access bằng driver Access ( dùng nhanh gọn hơn ODBC nhiều )

    Chào các bạn

    Các bạn đang tìm hiểu về access thì hãy vào :http://videobook.vn/ACCESS-CO-BAN/vi/bvct/id260/ để có thể download một cách miễn phí tài liệu access cơ bản , bạn chỉ cần vào đăng kí thành viên để được download miễn phí :-B


    Chúc các bạn thành công !>:D<
  9. hongtamtk

    hongtamtk Member

    Ðề: [java] Kết nối CSDL Access bằng driver Access ( dùng nhanh gọn hơn ODBC nhiều )

    Làm thì được quan trọng Access ko hổ trợ Unicode, viết chương trình xong rồi mới thấy điều đó, xui vãi~X(

Chia sẻ trang này