0

我正在尝试在我的 Inventory 系统中生成一个 JTable,当用户单击查看账单按钮Image of my Billing Form时,我想将我的数据库表中的记录显示到 JTable 中。

在此处输入图像描述

数据库结构

比尔大师

  1. Bill_Id (Primary Key INT):-存储账单号
  2. Bill_Date(日期):存储账单日期
  3. Customer_Name (VARCHAR(50)):客户名称
  4. Total_amt (NUMBER(6)) :总账单金额
  5. Cash_Disc (Number(2)):折扣
  6. Grand_Total(Number(6)):总计(Total-Discnt)
  7. UID(VARCHAR(10)) 存储谁生成了账单。(EMPLOYEE ID)

    Bill_Details

  8. Bill_Detailid(INT PRIMARY KEY) 详细账单一号
  9. Bill_Id(Bill_Master 的外键)
  10. Item_Id(库存外键)
  11. 数量 (INT)
  12. 率(数(5))
  13. 总计(人数(5))

当用户使用查询单击查看账单按钮时,我想显示详细账单

Select * from Bill_Master Inner join Bill_Details on Bill_Master.Bill_Id=Bill_Details.Bill_Id.

数据库连接类型:ODBC 请帮助生成表。

4

2 回答 2

2

您可以从 ResultSet 中获取数据并使用向量将表的每一行添加到 DefaultTableModel。

像下面的例子:

try {
        ResultSetMetaData rm = rs.getMetaData();
        int j = rm.getColumnCount();
        JTable table=new JTable();
        int rowCount = table.getRowCount();
        DefaultTableModel model = (DefaultTableModel) table.getModel();
        Vector v = null;
        if (rowCount == 0) {
            while (rs.next()) {
                v = new Vector();

                for (int i = 1; i <= j; i++) {
                    String type = rm.getColumnTypeName(i);
                    // System.out.println(type);
                    switch (type) {
                        case "FLOAT":
                            v.add(rs.getFloat(i));
                            break;
                        case "COUNTER":
                            v.add(rs.getInt(i));
                            break;
                        case "VARCHAR":
                            v.add(rs.getString(i));
                            break;
                        case "INTEGER":
                            v.add(rs.getInt(i));
                            break;
                        case "DATETIME":
                            v.add(rs.getString(i));
                            break;
                        case "MEDIUMINT":
                            v.add(rs.getInt(i));
                            break;
                        case "LONGBLOB":
                            v.add(rs.getTime(i));
                            break;
                        default:
                            v.add(rs.getString(i));
                    }
                }
                model.addRow(v);
            }

这里模型是您必须在其上添加行的表的 DefaultTableModel。你明白我的意思吗?或者有什么疑问。?

于 2013-10-28T10:03:30.487 回答
1
while(resultset.next()){
    // iterate through the results, get necessary column values add them into table model
    Vector v = new Vector();
    v.add(resultset.getString(0));
     .
     .
    model.addRow(v)

}

table.setModel(model)

遵循一些关于如何使用 jTable 的教程

于 2013-10-28T10:12:09.410 回答