今天结结巴巴,这个问题还没有真正得到回答。一旦我了解了更多关于这种情况的信息,我就重新发布了一个更具体的新问题,这个问题也没有得到回答,但我确实想通了,并在此处发布了一个答案:了解我的 ObservableList。
但是,为了整洁,让我在这里发布一些代码以帮助我记住,并帮助其他看到这个问题并说“是的,但是解决方案是什么?!?!?”的人
通常,它看起来像这样:
- 我喜欢打开我的连接并首先准备我的陈述。
- 使用迭代器从列表中获取变量
- 在迭代器中,将变量添加到准备好的语句并执行。
我在某处读到了有关批量执行语句的信息,但是我对每个列表所做的更新很少,这似乎太复杂了,所以我只是在迭代器中单独进行每个更新。
具体来说,这里有一些代码:
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();
我就是这样做的。不确定这是否是“正确”的方法,但它确实有效。欢迎任何意见,因为我还在学习。