2013-05-18 40 views
0

好的,所以我正在使用ObservableList,它工作正常,但現在我需要使用可觀察列表來插入行並更新SQL數據庫表中的行。我發現在JavaFX和SQL數據庫之間工作的信息很少......數據表的所有示例都有在java代碼中創建的數據。我希望,當我看到在這個崗位「更新SQL數據庫」:從observablelist插入/更新SQL表

Update sql database from FoxPro data on Glassfish server

,但它並不適用於我的情況。

所以問題是,我如何開始從ObservableList讀取代碼,以便我可以運行我的SQL插入語句?如果您可以指向我使用ObservableList的示例代碼並創建/添加/更新SQL表,我將非常感謝。

謝謝!

UPDATE質疑:

我真的不能在這裏發佈相關的代碼,因爲相關的部分是什麼都不用我。然而,我在想什麼,我需要做的是這樣的:

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知識,但我這樣做來證明什麼,我不要」 t知道如何處理我的ObservableList(mylist)。

再次感謝您的幫助。

回答

1

今天捆綁鬆散的結局,這個問題還沒有真正回答。一旦我瞭解了更多的情況,我轉發了一個更具體的新問題,這個問題也沒有得到答覆,但我做了算出來,並在這裏發佈了答案:Understanding my ObservableList

但是,爲了整潔,讓我在這裏發佈一些代碼來幫助我記住,並幫助其他人看到這個問題並說:「是的,但是什麼是解決方案?!?!? 「

一般地,它看起來是這樣的:

  1. 我喜歡開我的連接,並準備我的聲明(S)第一。
  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(); 

這就是我如何做的。不知道這是否是「正確」的方式,但它的工作原理。歡迎任何意見,因爲我還在學習。

0

在JavaFX你通常要創建的例子:)人

ObservableList支持監聽器,這些接收該告訴你已經添加或默認更新的事件。在javadocs here中有一個很好的例子。

要獲取更新事件,您需要爲創建列表here的方法提供「提取器」。這應該獲取列表中的對象的實例並提供要收聽的屬性的數組。

+0

謝謝你的信息。然而,我不明白這是如何幫助我將我的ObservableList綁定到我的SQL插入語句。 listener屬性非常有用,我使用ObservableList在TableView中顯示數據的原因。但是,我現在如何使用它來編寫插入語句? – John

+0

如果您收到一個添加了項目的事件,那麼您可以插入它們,更新更新的項目等。 –

+0

我確信這對完成此操作的人來說是完全合理的,但是這個答案對我來說沒有任何幫助,他從未見過這個在行動中。你可以指向我的一些代碼,這實際上是功能性的嗎? – John