0

わかりました、ObservableList を使用していますが、これは正常に機能していますが、Observable List を使用して 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

今日、ルーズエンドを結び付けていますが、この質問には実際には答えがありません. 状況について詳しく知ったら、より具体的な新しい質問を再投稿しましたが、その質問にも回答がありませんでしたが、それを理解して、ここに回答を投稿しました: Understanding my 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 hereに良い例があります。

更新イベントを取得するには、ここでリストを作成するメソッドに「エクストラクタ」を提供する必要があります。これは、リスト内のオブジェクトのインスタンスを取得し、リッスンするプロパティの配列を提供する必要があります。

于 2013-05-18T09:10:29.483 に答える