繁体   English   中英

来自数据库的Java JTable数据

[英]Java JTable data from database

我是java的新手,我需要在jtable中显示联接的表/查询的帮助。

首先,我已经完成了从1个表中显示数据的工作:

  • 从1个表格中选择数据
  • 将结果插入其实体,并将每个实体插入到列表中
  • 返回列表以查看并将行插入到jtable

我正在使用DAO模式,该模式具有工厂,接口,实现,实体和视图。

那如果我从其他表中选择数据怎么办?

这是我获取书的工具中的获取方法

 public List get(String find) {
    try {
        ps = db.connect().prepareStatement("SELECT * FROM books WHERE title like ? ");
        ps.setString(1, "%" + find + "%");

        status = db.execute(ps);
        if (status) {
            books = db.get_result();
            listBooks = new ArrayList<>();

            while (books.next()) {
                entity_books b = new entity_books();
                b.setId(books.getInt(1));
                b.setId_category(books.getInt(2)); 
                b.setTitle(books.getString(3));
                listBooks.add(b);
            }
            books.close();
            return listBooks;
        }
    } catch (SQLException e) {
        System.out.println(e.getMessage());
    }
    return null;
}

然后我认为:

listBooks = booksDAO.get(find.getText());
    model = (DefaultTableModel) book_table.getModel();
    model.setRowCount(0);

    listBooks.forEach((data) -> {
        model.addRow(new Object[]{
            data.getId(),
            data.getId_category(),
            data.getTitle(),

        });
    });

这工作正常,但我希望查询加入表,以便可以看到类别名称,而不仅仅是ID类别。 我可以进行查询,但是如何将其应用于代码?

这是联接表的查询

select title,category from book b
join category c on c.id = b.id_category    

通常,如果我仅选择1个表,则会将其插入其实体(book table-> bookEntity),那么如何处理多个表呢?

我没有使用准备好的语句,但是这段代码对我有效。

String sql = "SELECT * FROM customer c JOIN company cmp ON c.company_idcompany = cmp.idcompany";

        ResultSet rs = stmt.executeQuery(sql);
        //STEP 5: Extract data from result set
        while (rs.next()) {
            //Retrieve this from customer table
            int id = rs.getInt("idcustomer");
            //Retrieve this from customer table
            String username = rs.getString("company_username");

            //Display values
            System.out.println("ID: " + id);
            System.out.println("Username: " + username);
        }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM