Giúp lấy dữ liệu từ mysql ra jtable. Giúp em sửa code

van.duc0409

Member
12/9/11
39
0
6
Mình làm 1 bài quản lí thiết bị nhưng vướng chỗ này ạ. Bác nào giúp mình nha. Thanks các bác.

Đây là class mysqlConnect của em ạ,
PHP:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package quanlithietbiphonghoc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import javax.swing.JOptionPane;

/**
 *
 * @author VanDuc
 */
public class MySqlConnect {
    private Connection conn;
    private Statement sta;
    private ResultSet res;

    public MySqlConnect() {
    }
        
    public void Connect(String url, String user, String pass) {
        try {
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            conn = DriverManager.getConnection(url, user, pass);
        }
        catch(Exception e) {
            System.out.print(e.getMessage());
        }
    }
    
    public void close() {
        if(conn != null) {
            try {
                conn.close();
                System.out.print("Da dong ket noi");
            }
            catch(Exception e){}
        }
    }
    
    public ResultSet resultSet(String s) {
        try {
            sta = conn.createStatement();
            res = sta.executeQuery(s);
        }
        catch(Exception e) {
            System.out.print(e);
        }
        return res;
    }
    
    public int edit(String s) {
        int a = -1;
        try {
            sta = conn.createStatement();
            a = sta.executeUpdate(s);
            sta.close();
        }
        catch(Exception e) {
            System.out.print(e);
        }
        return a;
    }
    
}
Đây là đoạn code của em. Bài dài quá em post 1 đoạn thôi nha
trước đoạn này đã khởi tạo mysqlConnect mysql = new mySqlConnect() rồi ạ.

PHP:
public void updateTB() {
        Vector vt = new Vector();
        vt.add("Ma Thiet Bi");
        vt.add("Ten Thiet Bi");
        vt.add("Xuat xu");
        vt.add("Nam san xuat");
        String s = "SELECT * FROM TB";
        
        DefaultTableModel model = new DefaultTableModel(vt, 0);
        jTable1.setModel(model);
        
        try {       
            while(mysql.resultSet(s).next()) {  // có lẽ đoạn này sai
                int ma = mysql.resultSet(s).getInt("mathietbi");
                String ten = mysql.resultSet(s).getString("tenthietbi");
                System.out.print(ma);  // test doc du lieu
                System.out.print(ten);  // test doc du lieu
                String xx = mysql.resultSet(s).getString("xuat xu");
                int nam = mysql.resultSet(s).getInt("nam");
                listTB.add(new ThietBi(ma, ten, xx, nam));
            }
        }
        catch(Exception e) {
            System.out.print(e);
        }
        
      //  System.out.print(listTB.get(0).getTenTB());
        
//       for(ThietBi i : listTB) {
//           model.addRow(i.toObject());
//       }
    }
Ý định của em là cho dữ liệu từ csdl vào jtable nhưng vẫn vướng cái chỗ lấy dữ liệu ra đấy ạ. em test cái dòng mã và tên ko được. cái đoạn "System.out.print(ma);" "System.out.print(tên);" đó ạ

Lỗi báo là thế này ạ
java.sql.SQLException: Before start of result set
Dữ liệu thì trong database đã có rồi ạ.
 

Nancru

CongDongJava Project Leader
Staff member
9/10/11
1,640
307
83
Ðề: Giúp lấy dữ liệu từ mysql ra jtable. Giúp em sửa code

gọi phương thức resultset 1 lần thôi, cứ while là gọi, rồi trong while cũng gọi, bao giờ nó chạy đc đến first row đây :-?
 

van.duc0409

Member
12/9/11
39
0
6
Ðề: Giúp lấy dữ liệu từ mysql ra jtable. Giúp em sửa code

gọi phương thức resultset 1 lần thôi, cứ while là gọi, rồi trong while cũng gọi, bao giờ nó chạy đc đến first row đây :-?
Mình không hiểu ý bạn nói. bạn nói rõ hơn tí đc không.
 

Nancru

CongDongJava Project Leader
Staff member
9/10/11
1,640
307
83
Ðề: Giúp lấy dữ liệu từ mysql ra jtable. Giúp em sửa code

PHP:
            while(mysql.resultSet(s).next()) {  // có lẽ đoạn này sai
                int ma = mysql.resultSet(s).getInt("mathietbi");
                String ten = mysql.resultSet(s).getString("tenthietbi");
                System.out.print(ma);  // test doc du lieu
                System.out.print(ten);  // test doc du lieu
                String xx = mysql.resultSet(s).getString("xuat xu");
                int nam = mysql.resultSet(s).getInt("nam");
                listTB.add(new ThietBi(ma, ten, xx, nam));
mỗi lần bạn gọi mysql.resultSet(s) tức là nó lại chạy vào database lấy dữ liệu với query là s
trong đoạn lệnh while này gọi cả 5 lần tức là lấy dữ liệu 5 lần và ko lần nào liên quan đến nhau

cách giải quyết là
PHP:
ResultSet temp = mysql.resultSet(s);
while(temp.next())
   int ma = temp.getInt("mathietbi");
 

van.duc0409

Member
12/9/11
39
0
6
Ðề: Giúp lấy dữ liệu từ mysql ra jtable. Giúp em sửa code

thanks bạn:D:D
 

nhoc_cham_hieu

New Member
3/3/12
24
1
3
Mình hỏi cái! Thế lấy dữ liệu ra jtable thì có bắt buôc phải dùng vector không? Mình thấy bạn trên ví dụ sử dung Vector vậy thì thường thì lấy dữ liệu ra jtable người ta dùng gì? ví dụ vector thì sẽ dùng ra sao?
Và cái dòng listTB.add(new ThietBi(ma, ten, xx, nam)); làm gì nhỉ
Liệu mình không viết vào thì dữ liệu có hiển thị trên jtable không (mình thực hành mà vẫn không đưa đc dl ra jtabled dc.
Mình cũng chỉ mới học thôi, các bạn biết giúp mình với.
 

Nancru

CongDongJava Project Leader
Staff member
9/10/11
1,640
307
83
Mình hỏi cái! Thế lấy dữ liệu ra jtable thì có bắt buôc phải dùng vector không? Mình thấy bạn trên ví dụ sử dung Vector vậy thì thường thì lấy dữ liệu ra jtable người ta dùng gì? ví dụ vector thì sẽ dùng ra sao?
Và cái dòng listTB.add(new ThietBi(ma, ten, xx, nam)); làm gì nhỉ
Liệu mình không viết vào thì dữ liệu có hiển thị trên jtable không (mình thực hành mà vẫn không đưa đc dl ra jtabled dc.
Mình cũng chỉ mới học thôi, các bạn biết giúp mình với.
Nếu có vấn đề hãy tạo chủ đề khác để thảo luận nhé.