java - 如何在不使用 vector 的情况下在JTable中显示MySQL数据?

标签 java swing jtable

如何在不使用 vector 的情况下在JTable中显示MySQL数据?

我正在做 Java Swing 应用程序,我想显示数据库中的报告。我正在使用 JTable 显示数据库中的数据。我尝试过以下代码,但它不显示数据库中的数据。我的数据库连接也是正确的。

int i;
static Vector<Vector<String>> data = new Vector<Vector<String>>();

String[] columnNames = {"Registration id", "First Name", "Middle Name", "Last Name", "Address", "Dob", "Age", "Date Of Registration", "Register Rfid No."};
public AdmissionReport()
{
    initComponents();

    //this is the model which contain actual body of JTable
    DefaultTableModel model = new DefaultTableModel();
    model.setColumnIdentifiers(columnNames);
    //jTable1=new JTable(model);
    jTable1 = new JTable();
    jTable1.setModel(model);
    int i1 = jTable1.getRowCount();
    if (i1 > 1) {
        model.removeRow(0);
        i1 = i1 - 1;
    }

    String str = "select rid,fname,mname,lname,address,dob,age,dor,rfidtagdata from schoolrfid.registration";
    Connection cn;
    ResultSet rs;
    Statement st;

    String rid, fname, mname, lname, add, dob, age, dor, rfidtag;

    try {
        // Change the database name, hosty name,
        // port and password as per MySQL installed in your PC.
        cn = DriverManager.getConnection("jdbc:mysql://" + "localhost:3306/schoolrfid", "root", "root");
        st = cn.createStatement();

        rs = st.executeQuery(str);
        System.out.println("connected to database.. ");
        // int i=0;
        while (rs.next()) {

            //Vector <String> d=new Vector<String>();
            rid = (rs.getString("rid"));
            fname = (rs.getString("fname"));
            mname = (rs.getString("mname"));
            lname = (rs.getString("lname"));
            add = (rs.getString("address"));
            dob = (rs.getString("dob"));
            age = (rs.getString("age"));
            dor = (rs.getString("dor"));
            rfidtag = (rs.getString("rfidtagdata"));

            i = 0;
            String[] data = {rid, fname, mname, lname, add, dob, age, dor, rfidtag};

            model.addRow(data);
            i++;

        }
        if (i < 1) {
            JOptionPane.showMessageDialog(null, "No Record Found", "Error", JOptionPane.ERROR_MESSAGE);
        }
        if (i == 1) {
            System.out.println(i + " Record Found");
        } else {
            System.out.println(i + " Records Found");
        }

    } catch (SQLException e) {

        e.printStackTrace();
    }

}

最佳答案

JTable 后面的 TableModel 处理表后面的所有数据。为了在表中添加和删除行,您需要使用 DefaultTableModel

要使用此模型创建表:

JTable table = new JTable(new DefaultTableModel(new Object[]{"Column1", "Column2"}));

添加行:

DefaultTableModel model = (DefaultTableModel) table.getModel();
model.addRow(new Object[]{"Column 1", "Column 2", "Column 3"});

您还可以通过 removeRow(int row) 删除行,这将从模型中删除 row at row 的行。

有关 DefaultTableModel 的完整详细信息可以找到 here

<小时/>

与 MySQL 类似,您可以添加如下所示的行

DefaultTableModel memberTable = (DefaultTableModel) table.getModel();
while(rs.next())
{
    memberTable.addRow(new Object[]{rs.getString('rid'),rs.getString('fname'),rs.getString('lname'),rs.getString('address'),.....});
}
<小时/>

另外看看这个答案

https://stackoverflow.com/a/17655017/1575570

关于java - 如何在不使用 vector 的情况下在JTable中显示MySQL数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23490612/

相关文章:

java - 从外观上使用标准按钮

java - Android:OnTextChanged 电子邮件验证未按预期工作

java - 我的 checkGPS 方法从未运行过,gps 保持 0.0,0.0

java - 如何刷新第二个表格

java - TimingFramework和系统时间

java - JTable 行边框?

java - 如何使用锁包装器进行自动关闭?

java - Swing 的 GroupLayout 和 setContentPane - 丢失组件?

java - 在 Applet 上显示进度条时出现问题

java - 如何向 JTable 中的现有行添加新行