我有一个 JTable 问题,即当从 MySQL 表返回超过 1 行时,JTable 仅显示 1 条记录 - (最后一条),但是当我尝试简单的 System.out.print
它显示所有记录。
这是我的代码:
System.out.println("MySQL Connect Example.");
Connection conn = null;
String url = "jdbc:mysql://xxx.xx.xxx.xx:3306/";
String dbName = "smartcart";
String driver = "com.mysql.jdbc.Driver";
String userName = "xxx";
String password = "xxx";
Statement stmt = null;
ResultSet rs = null;
cartID=jTextField1.getText().trim();
if(cartID.matches("(\\w*)") && !cartID.isEmpty())
{
jLabel2.setText("Searching.....");
try {
Class.forName(driver).newInstance();
conn = DriverManager.getConnection(url+dbName,userName,password);
System.out.println("Connected to the database");
stmt = conn.createStatement();
String query = "SELECT * FROM user_stock WHERE cartID="+cartID;
rs = stmt.executeQuery(query);
jInternalFrame1.setVisible(true);
while (rs.next()) {
jTable1.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{rs.getString("id"), rs.getString("product_name"), rs.getString("product_code"), rs.getString("product_quantity"), rs.getString("product_price"), "0"}
},
new String [] {
"Product No.", "Product Name", "Product Code", "Product Quantity", "Product Price", "Discount"
}
));
}
conn.close();
System.out.println("Disconnected from database");
}
catch (Exception e) {
e.printStackTrace();
}
}
最佳答案
您正在为每个返回的行重新创建一个新的 TableModel,而不是为所有行创建一个模型:
String query = "SELECT * FROM user_stock WHERE cartID="+cartID;
rs = stmt.executeQuery(query);
jInternalFrame1.setVisible(true);
javax.swing.table.DefaultTableModel model = new javax.swing.table.DefaultTableModel();
model.setColumnIdentifiers(new String [] {
"Product No.", "Product Name", "Product Code", "Product Quantity", "Product Price", "Discount" });
jTable1.setModel(model);
while (rs.next()) {
model.addRow(new Object [] {
rs.getString("id"), rs.getString("product_name"), rs.getString("product_code"), rs.getString("product_quantity"), rs.getString("product_price"), "0"});
}
警告:我没有测试或执行上面的代码,但修复拼写错误或缺少括号应该不难。
现在,您还可以简化生活并直接重复使用 ResulSetTableModel
这一切都为您完成。
关于Java JTable 不显示 MySQL 中的所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15090723/