0

データベーステーブル全体、行、および列をブラックベリーのフォームにフェッチすることは可能ですか? レコードからリッチテキストフィールドに値を取得できましたが、フォームから個々の列と行を更新できるように、それらをテキストボックスに取得したいと考えています。Heres私が取り組んできたコードです

 //Retrieve data
     try
    {
      add(new RichTextField("Attempting to retrieve data from " + 
                                       "database1.db on the SDCard."));

     Statement st = db.createStatement("SELECT name,email FROM DirectoryItems");

     st.prepare();

     Cursor c = st.getCursor();

     Row r;
     int i = 0;

     while(c.next()) 
     {

     r = c.getRow();
     i++;
  add(new RichTextField(i + ".Name = " + r.getString(0) +
                                              " , " +
      "Email = " + r.getString(1))); //+
      //  " , " +
      //"Phone = " + r.getInteger(1)));
     }

     if (i==0)
    {
    add(new RichTextField("No data in the DirectoryItems table."));
    }
    st.close();
   db.close();
    }
  catch( Exception e ) 
   {         
    System.out.println( e.getMessage() );
    e.printStackTrace();
   }
4

1 に答える 1

1

完全な解決策を提供したくはありません。テストと実行が必要であり、教育の面ではあまり役に立ちません。

それを行うのに問題はありません。テーブル内のすべての行には、行 ID 列があります。FieldブラックベリーUIのすべてには、メソッドsetCookie、、があります。また、すべてに対して設定することもできます (すべての変更イベントでデータベースへの保存を呼び出すのは好きではありませんが、妥当な音を残してフォーカスでこれを実行します)。getCookieisDirtyFocusListenerField

つまり、データを取得してEditFields(値ごとに 1 つのフィールドであるため、名前と電子メール用に 2 つのフィールドがあります) に配置するという考え方です。フィールドの行 ID と列名を Cookie に保存します。そして、すべてのフォーカス休暇イベントで、フィールドが汚れているかどうかを確認し、true の場合は変更されたデータを安全に保存します。

これは非常に大雑把な考え方であり、OOP とはかけ離れているように思えます (これは、再利用や将来の拡張が難しいことを意味します)。しかし、それはうまくいくはずです。

于 2012-04-24T08:39:21.680 に答える