gpt4 book ai didi

java - 使用数据库查询更新 JTable

转载 作者:行者123 更新时间:2023-12-02 07:34:38 25 4
gpt4 key购买 nike

我正在开发的程序包含两个类,GUI 和 DatabaseHelper。使用的表模型是DefaultTableModel。

GUI 包含一个简单的 JTable。它在启动时使用 DatabaseHelper 中的数据进行初始化。这有效。

但是,当尝试将新数据加载到表中时,事情就没那么简单了。

到目前为止我的方法是:

model = DatabaseHelper.LoadData() // returns a default table model with new data.
tabel = new JTable();
tabel.setModel();

现在发生的情况是加载的数据被附加到已经存在的 JTable 上。

如果可能的话,我想仅使用默认表模型来实现解决方案。感谢您的任何建议!

编辑:

public void initGUI(){

setJMenuBar(makeMenuBar());
container = new JPanel(new BorderLayout());

model = db.initialiseTable(); // Load initialisation data from the database

table = new JTable();
table.setModel(model);
table.setPreferredScrollableViewportSize(new Dimension(500, 70));
table.setFillsViewportHeight(true);
scrollPane = new JScrollPane(table);

container.add(scrollPane, BorderLayout.CENTER);
add(container);
}

从数据库返回新模型:

public DefaultTableModel loadData(){
try {
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/version1", "root", "root");
System.out.println("\nDatabase Connection Established.\n");

String query = "SELECT * FROM table WHERE test_number = 2";

stmt = con.createStatement();
rs = stmt.executeQuery( query );

md = rs.getMetaData();
columns = md.getColumnCount();

while (rs.next()) {
Vector row = new Vector(columns);

for (int i = 1; i <=columns-1; i++){
row.addElement( rs.getObject(i+1) );
}
data.addElement( row );
}
}catch(SQLException e){
e.printStackTrace();
}catch(ClassNotFoundException e){
e.printStackTrace();
}

columnNames.add(" ");
columnNames.add("Column 1");
columnNames.add("Column 2");

DefaultTableModel model = new DefaultTableModel(data, columnNames);

return model;
}

ActionPerformed,代码处理从 DatabaseHelper 返回的新模型

            model = new DefaultTableModel();
model = db.loadData();

table = new JTable();
table.setModel(model);

最佳答案

DatabaseHelper.LoadData() 中可能存在错误。由于某种原因,它不会创建新模型,但总是返回相同的模型。

DatabaseHelper.LoadData()中创建一个新模型,它应该可以工作。

关于java - 使用数据库查询更新 JTable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12422584/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com