0

是否可以将整个数据库表、行和列提取到黑莓中的表单中?我已经能够将记录中的值检索到富文本字段中,但我想将它们检索到文本框中,以便可以从表单中更新各个列和行。这是我一直在研究的代码

 //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 列。黑莓 ui 中的AnyField都有方法setCookie, getCookie, isDirty. 您也可以FocusListener为每个设置Field(我不喜欢在每个更改事件上调用保存到数据库,但这样做是为了让焦点保持合理)。

所以想法是您获取数据并将其放入EditFields(每个值一个字段,因此将有两个字段用于名称和电子邮件)。您将字段行 ID 和列名保存到 cookie。并且在每个焦点离开事件中,您都会检查字段是否脏并安全地保存更改的数据以防万一。

这是一个相当粗略的想法,听起来与 OOP 相去甚远(这意味着将来很难重用或扩展)。但它应该工作。

于 2012-04-24T08:39:21.680 回答