gpt4 book ai didi

java - 如何将数据插入同步更新java中的JTable的mysql数据库?

转载 作者:搜寻专家 更新时间:2023-10-30 21:50:54 25 4
gpt4 key购买 nike

enter image description here

我在下表中获取数据到上面的 GUI JTable

CREATE TABLE store_room(
store_id int,
store_capacity int
);

当我向这个 sql 表中插入新记录时,它必须立即同步更新 jtable谁能告诉我该怎么做?

注意:- 问题不清楚,我会稍微解释一下

我的插入数据 GUI 是这样的 enter image description here

我的类结构如下

我创建了一个 java bean 类来表示一个表的元组。

public class StoreRoom{
private int storeId;
private int storeCapacity;

public int getSstoreId() {
return storeId;
}

public void setStoreId(int storeId) {
this.storeRoomId = storeId;
}

//getter setter 方法//

}

为了表示表行为,我创建了一个名为 StoreRoomData 的类,如下所示

public class  StoreRoomData {

public static void insert(StoreRoom bean){
// some code to insert like below
String sql="INSERT INTO StoreRoom(store_id ,store_capacity )"+
"values(?,?);";
ResultSet keys=null;
try (
Connection conn = DBUtil.getConnection(DBType.MYSQL);
PreparedStatement stmt = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
){
stmt.setInt(1, bean.getSstoreId());
stmt.setInt(2, bean.getSstoreCapacity());



int affacted = stmt.executeUpdate();
}

}

在一个表单中,我创建了一个 bean 对象并调用 setMethods 将所有 GUI 输入设置为 bean 对象并将其传递给插入方法,该方法作为 StoreRoomData 类如下所示

StoreRoom bean = new StoreRoom();

bean.setStoreId(Integer.parseInt(textBox1.getText()));



StoreRoomData.insert(bean);

希望一切顺利

最佳答案

问题不是很清楚。你如何插入新记录?您有相应的 Java 方法吗?

如果是这样,您可以实现 observer design pattern .通过此模式,您可以定义一个观察者对象,该对象在插入新记录时得到通知。你的代码看起来像这样

public interface DBObserver{
public void notifyNewRecordInserted();
}

public class MyTable extends JTable implements DBOserver{
public void notifyNewRecordInserted(){
this.refresh();
}

public void refresh(){
//some code to refresh the table
}
}

public class DBManager(){
private List<DBObserver> observers;

public void addObserver(DBObserver observer){
this.observers.add(observer);
}


public DBObserver removeObserver(DBObserver observer){
this.observers.remove(observer);
return observer;
}

public void insert(Record record){
//some code to insert the new record

//notify observers
this.notifyObservers();
}


private void notifyObservers(){
for(DBObserver observer: this.observers){
observer.notifyNewRecordInserted();
}
}
}

这样您就可以在插入新记录时自动更新每个需要更新的组件,即使您在第一次开发解决方案时不知道该组件可能是什么。

换句话说,现在您知道要更新您的表,但将来您可能会注意到,每当插入新记录时,您也想更新另一个表。

您所要做的就是在您的新类中实现 DBObserver 接口(interface),并通过调用 addObserver() 使该类的对象自行注册。

notifyObservers 方法通知所有注册的观察者。该方法甚至不必知道这些组件是什么。


关于java - 如何将数据插入同步更新java中的JTable的mysql数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22381583/

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