Class hỗ trợ kết nối cở sở dữ liệu

Discussion in 'IO' started by chuotfx, 30/3/11.

  1. chuotfx Member

    Cơ sở dữ liệu đối với 1 chương trình là rất quan trọng, nên việc thao tác với nó thì rất nhiều, nhất là trong 1 project thì hâu như bạn đề phải select, update nó thường xuyên.

    Nhiều bạn mới học về CSDL thì rất là lúng túng vì có quá nhiều các kết nối khác nhau và quá nhiều kiểu CSDL....Hầu hết các bạn chọn giải pháp là học thuộc và code cùng 1 đoạn vào nhiều nơi trong project của mình.

    Mình cũng làm 1 project quản lý nên cũng rất mệt về việc này nên đã viết 1 class để sử dụng có việc kết nối và thao tác với CSDL, tuy nó đơn giản là thực hiện select và update table nhưng mọi việc từ new driver, connection, statement.... đề đc ẩn đi và người coder sẽ tiện sử dụng.....

    Code :

    PHP:


    import java
    .awt.Component;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.Properties;

    import javax.swing.JOptionPane;

    public class 
    DataSQL {

        private 
    Connection connect=null;    
        private 
    Statement statement=null;   
        private 
    ResultSet result =null;
        
        private 
    Component c;
        
        public 
    DataSQL(Component c){    
            
    this.c=c;
            
            try {
                Class.
    forName("com.hxtt.sql.access.AccessDriver").newInstance();
            } 
            catch (
    Exception e) {
                
    JOptionPane.showMessageDialog(c,"Không có driver kết nối","Lỗi",JOptionPane.ERROR_MESSAGE);
            } 
        }
        
    /**
         * Hàm kết nối
         */
        
    private void getConnect(){
            if(
    connect==null){
                
    Properties info=new Properties();
                
    info.put("charSet","utf-8");
                
    info.put("user","Admin");
                
    info.put("password","220789");
                try {
                    
    connect DriverManager.getConnection("jdbc:access:/DataTKB.mdb",info);
                } catch (
    SQLException e) {
                    
    JOptionPane.showMessageDialog(c,"Không kết nối được với cơ sỡ dữ liệu","Lỗi",JOptionPane.ERROR_MESSAGE);
                }
            }
        }
        
    /**
         * Hàm lấy Statement
         */
        
    protected void getStatement(){
            
    // Kiểm tra statement nếu = null hoặc đã đóng.
            
    try {
                if(
    this.statement==null || this.statement.isClosed()){
                    
    // Khởi tạo một statement mới.
                    
    this.statement connect.createStatement();  
                }
            } catch (
    SQLException e) {
                
    JOptionPane.showMessageDialog(c,"Không thực thi được","Lỗi",JOptionPane.ERROR_MESSAGE);
            }

        }
        
    /**
         * Lấy dữ liệu từ cơ sở dữ liệu
         */
        
    public ResultSet excuteQuery(String Query) {
            try{
                
    getConnect();
                
    getStatement();
                
    // Thực thi câu lệnh.
                
    this.result statement .executeQuery(Query);
            }
            
    // Nếu không thành công ném lỗi ra ngoài.
            
    catch(Exception e){
                
    JOptionPane.showMessageDialog(c,"Không thực hiện được lệnh","Lỗi",JOptionPane.ERROR_MESSAGE);
            }
            
    // Trả kết quả ra ngoài.
            
    return this.result;
        }
        
    /**
         * Nạp dữ liệu vào
         * @throws SQLException 
         */
        // Thức thi các câu lệnh Inser, Update, Delete
        
    public void executeUpdate(String Querythrows SQLException{
            try{
                
    getConnect();
                
    getStatement();
                
    // Thực thi câu lệnh.
                
    statement.executeUpdate(Query);
            }
             catch(
    Exception e){
                 
    JOptionPane.showMessageDialog(c,"Không thực hiện được lệnh","Lỗi",JOptionPane.ERROR_MESSAGE);
             }
             
    this.Close();
        }
        
    /**
         * Đóng kết nối
         */
        
    public void Close() throws SQLException{

            if(
    result!=null){
                
    this.result.close();
                
    this.result null;
            }
                
    this.statement.close();
                
    this.statement null;

                
    this.connect.close();
                
    this.connect =null;
            
        }
    }

    Việc sử dụng thì nó đc add vào 1 project nên mình kô làm tùy chọn cho nó, và mặc định lun.

    Nếu bạn muốn dùng thì edit lại :

    PHP:
     Class.forName("com.hxtt.sql.access.AccessDriver").newInstance();
    thay đổi url để phù hợp với hệ quản trị CSDL bạn đang dùng

    PHP:
    Properties info=new Properties();
                
    info.put("charSet","utf-8");
                
    info.put("user","Admin");
                
    info.put("password","220789"); 
    thay đổi thông tin bảo mật của nó, là user và pass mà bạn dùng với csdl của bạn

    PHP:
    connect DriverManager.getConnection("jdbc:access:/DataTKB.mdb",info); 
    Thay đổi URL connection để phù hợp, ở đây mình dùng với access nên mới thế, bạn dùng cái khác thì sẽ có url khác

    -----------------------------------------------------------
    Khi sử dụng trong project thì bạn chĩ vẫn new đối tượng của class ra

    DataSQL data = new DataSQL();

    và khi dùng select thì gọi hàm : excuteQuery(String Query)
    tham số truyền vào là 1 chuổi string dạng câu lệnh sql
    vidu : data.excuteQuery("select * from user");

    tương tự với update là hàm : executeUpdate(String Query);


    --------------------------------------------------------------

    Chúc các bạn thành công !
  2. LongTTH New Member

    Ðề: Class hỗ trợ kết nối cở sở dữ liệu

    cho mình hỏi dùng MySQL thì thay cái này
    PHP:
    Class.forName("com.hxtt.sql.access.AccessDriver").newInstance();  
    bằng cái gì?
    còn cái này:
    PHP:
    connect DriverManager.getConnection("jdbc:access:/DataTKB.mdb",info);  
    thì thay bằng
    PHP:
    connect DriverManager.getConnection("jdbc:mysql:/ThuVienQuangTrung",info);  
    nếu csdl tên là ThuVienQuangTrung hay sao?
  3. nguyenthanhson37 New Member

    Ðề: Class hỗ trợ kết nối cở sở dữ liệu

    Bạn cho mình hỏi cái này kết nối bằng access thông qua driver của nó luôn phải ko, nếu đúng bạn có driver của access ko có thể send cho mình được không,dùng cái này cho nhỏ gọn.
  4. Ðề: Class hỗ trợ kết nối cở sở dữ liệu

    Cái câu này có nghĩa là load Driver mình import vào thư viện bắt đầu tiến hành kết nối database :x . Hiện nay mình thấy ít người kết nối với Access .
    Vào đây xem này .

    http://devapp.sun.com/product/jdbc/drivers
  5. dungdn19 New Member

    Ðề: Class hỗ trợ kết nối cở sở dữ liệu

    quá hay:D
    thanks bạn, đọc mấy bài viết của bạn này toàn thấy toàn đúng cái mình đang tìm hiểu

Chia sẻ trang này



Ve may bay di Ha Noi | Ve may bay di Vinh | Ve may bay di Hue | Ve may bay di Da Nang | Ve may bay di Nha Trang | Ve may bay di Da Lat | Ve may bay di Phu Quoc | Ve may bay di Sai Gon | Ve may bay di TPHCM | Ve may bay di Buon Me Thuot | Ve may bay di Hai Phong | Ve may bay di Dong Hoi | Ve may bay Vietjet Air | Phong ve may bay Vietjet Air | Ve may bay Vietnam Airlines | Phong ve may bay Vietnam Airlines | Ve may bay Vietnam Airlines | Ve may bay gia re | Ve may bay | Mua ve may bay | Jetstar | Vietnam Airlines | Air Asia | Tiger Airways | Ve may bay di My | Vietjet Air | Ve may bay di Ha Noi | Ve may bay di Da Nang | Ve may bay di Hai Phong | Ve may bay di Vinh