gpt4 book ai didi

java - 瓦丁 : commit new Items to Database (SQLContainer)

转载 作者:行者123 更新时间:2023-11-29 03:50:43 26 4
gpt4 key购买 nike

我有一个显示图表的应用程序,图表中填充了来自 SQL 表的数据。我一直在寻找让用户“编辑”表格的可能性,以便他可以更改图表。今天我找到了 Vaadin“SQLContainer”插件,这正是我所需要的。我能够连接到数据库并获取我需要的表并将其连接到 Vaadin 表,这样我就可以在 Vaadin 中看到一个数据库表。我已经多次阅读 SQLContainer 的 Vaadin 教程(更新的 AdressBook 教程),但我仍然不明白如何通过 SQLContainer 向数据库提交内容。这是我到目前为止所得到的:

public void displayTable(){ 
try {
connectionPool = new SimpleJDBCConnectionPool(
"org.postgresql.Driver",
"jdbc:postgresql://localhost:5432/database", "username", "password", 2, 5);
FreeformQuery query = new FreeformQuery("select * FROM table", connectionPool);
container = new SQLContainer(query);
container.addListener(new QueryDelegate.RowIdChangeListener() {
public void rowIdChange(RowIdChangeEvent event) {
System.err.println("Old ID: " + event.getOldRowId());
System.err.println("New ID: " + event.getNewRowId());
}
});
} catch (SQLException e) {
e.printStackTrace();
}
table= new Table("Table",container);
table.setSelectable(true);
table.addListener(this);
window.addComponent(table);
}

}

我正在使用 Vaadin 版本 6.6.6 并使用 PostgrSQL。

最佳答案

我看到您的查询只是“select * FROM table”。如果是这种情况,您应该使用 TableQuery 而不是 FreeformQuery。 TableQuery 已经为您直接从单个 SQL 表填充容器的情况实现了所有读/写、排序、过滤等。

使用 TableQuery,您应该能够将 vaadin 表设置为可编辑模式 (setEditable),并且能够直接操作数据库中的值,通过调用 container.commit() 存储它们,除非它处于 writeThrough 和 autoCommit 模式。或者您可以获取表格的一行(一个项目)并在 Vaadin 表单中对其进行编辑。

如果您需要使用 FreeformQuery(用于更复杂的查询,例如 JOINing 两个或多个表),您需要自己实现写支持,如另一个答案中所述。有关此的简单示例,请查看 the implementation of the DemoFreeformQueryDelegate用于 SQLContainer 演示应用程序。

HTH

关于java - 瓦丁 : commit new Items to Database (SQLContainer),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8927405/

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