2012-04-24 14 views
0

データベーステーブル、行、列全体をブラックベリーのフォームにフェッチすることはできますか? 私はrichtextfieldにレコードから値を取得することができましたが、私はフォームから個々の列と行を更新できるようにテキストボックスにそれらを取得したいと思います。 HERESにコード私はブラックベリーでsqliteテーブル全体を取得

//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(); 
    } 
+0

tryブロック内でdbとstatementを閉じると、将来のデータベースでエラーが発生する –

+0

ok datの問題はソートすることができます。しかし、私が指摘しようとしている問題は、テキストフィールドにそれらを取得したいということです。それ? – techie

答えて

1

に取り組んできた私は、完全なソリューションを提供したくない - それが動作して、テストを必要とし、教育の面で非常に役立つことはありません。

これは問題ありません。テーブルのどの行にも行ID列があります。ブラックベリーUIのFieldには、setCookie,getCookie,isDirtyというメソッドがあります。 FieldごとにFocusListenerを設定することもできます(私はすべての変更イベントでデータベースに保存を呼び出すのは嫌ですが、合理的なサウンドを残してこれを行う)。

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

これはかなり大まかな考えであり、OOPから遠ざかります(これは、再利用や将来の拡張が難しいことを意味します)。しかし、それは動作するはずです。

+0

私はブラックベリーの開発で使用されているクッキーの概念については不明です。私はディスをもっと研究しても構いませんが、返事をお願いします。 – techie

関連する問題