0

好的,所以我正在使用 ObservableList,它工作正常,但现在我需要使用 observable 列表将行插入和更新 SQL 数据库表中的行。我发现很少有关于在 JavaFX 和 SQL 数据库之间工作的信息……数据表的所有示例都有在 java 代码中创建的数据。当我在这篇文章中看到“更新 SQL 数据库”时,我充满了希望:

从 Glassfish 服务器上的 FoxPro 数据更新 sql 数据库

但不适用于我的情况。

所以问题是,如何启动从 ObservableList 中读取的代码,以便运行我的 SQL Insert 语句?如果您能指出一个使用 ObservableList 并创建/添加/更新 SQL 表的示例代码,我将不胜感激。

谢谢!

更新问题:

我不能在这里发布相关代码,因为相关部分是我没有的。但是,我在想我需要做的是这样的事情:

mylist.moveToFirst();
while (mylist.next()) {
    make connection // think I got it
    INSERT INTO mytable (name, address, phone) VALUES (observablename, observableaddress, observablephone // think I got this as well

显然,我正在将我对其他领域的知识应用到 ObservableList,但我这样做是为了展示我知道如何处理我的 ObservableList(mylist)。

再次感谢您的帮助。

4

2 回答 2

1

今天结结巴巴,这个问题还没有真正得到回答。一旦我了解了更多关于这种情况的信息,我就重新发布了一个更具体的新问题,这个问题也没有得到回答,但我确实想通了,并在此处发布了一个答案:了解我的 ObservableList

但是,为了整洁,让我在这里发布一些代码以帮助我记住,并帮助其他看到这个问题并说“是的,但是解决方案是什么?!?!?”的人

通常,它看起来像这样:

  1. 我喜欢打开我的连接并首先准备我的陈述。
  2. 使用迭代器从列表中获取变量
  3. 在迭代器中,将变量添加到准备好的语句并执行。

我在某处读到了有关批量执行语句的信息,但是我对每个列表所做的更新很少,这似乎太复杂了,所以我只是在迭代器中单独进行每个更新。

具体来说,这里有一些代码:

Connection con;
con = [your connection string]; // I actually keep my connection string in its own class
        // and just call it (OpenDB.connect()). This way I can swap out the class OpenDB
        // for whatever database I'm using (MySQL, MS Access, etc.) and I don't have to
        // change a bunch of connection strings in other classes.
PreparedStatement pst;
String insertString = "INSERT INTO People (Name, Address, Phone) VALUES (?, ?, ?)";
pst = con.prepareStatement(insertString);

for(Person p : mylist) { // read as: for each Person [a data model defined in a class
        // named Person] which in this set of statements we shall call 'p' within the list
        // previously defined and named 'mylist' ... or "For each Person 'p' in 'mylist'"
    String name = p.name.get(); // get the name which corresponds to the Person in this object of 'mylist'
    String address = p.address.get(); // ditto, address
    Integer phone = p.phone.get(); // ditto, phone. Did as integer here to show how to add to pst below

    pst.setString(1, name); // replace question mark 1 with value of 'name'
    pst.setString(2, address); // ditto, 2 and 'address'
    pst.setInt(3, phone); // ditto, 3 and 'phone'

    pst.executeUpdate();

我就是这样做的。不确定这是否是“正确”的方法,但它确实有效。欢迎任何意见,因为我还在学习。

于 2013-07-26T01:57:58.957 回答
0

在 JavaFX 中,您通常会成为创建示例的人 :)

ObservableList 支持侦听器,这些接收事件会告诉您默认情况下添加或更新了什么。这里的 javadocs 中有一个很好的例子。

要获取更新事件,您需要为在此处创建列表的方法提供“提取器” 。这应该采用列表中对象的一个​​实例,并提供一个您要侦听的属性数组。

于 2013-05-18T09:10:29.483 回答