SQLITE显示分配给表的数据



我正在制作一个纪念 CountDownTimer值(最佳分数)的Android应用程序。我已经构建了一个存储值的SQLite数据库。但是现在我想创建一个新活动(例如登录活动),其中用户签名他们的名字,然后CountDownTimer活动仅在此用户分数中打开。

在活动中,您可以通过查询数据库创建的光标从数据库中提取数据。然后,您使用提取的数据填充各个视图或视图。

假设您的数据库具有一个名为 timervalues 的表,带有2列,名为CDT_VALUE和USERID,则提取数据的代码可以沿着: -

的行为。
    Cursor csr = db.query("timervalues",null,"userid=?",new String[]{Long.toString(userid_to_find)},null,null,null);

然后,您可以使用以下内容从光标中检索数据: -

    long[] scores = new long[csr.getCount];
    while (csr.moveToNext) {
        scores[csr.getPosition] = csr.getLong(csr.getColumnIndex("cdt_value");
    }
    csr.close();

因此,如果您的ID设置为 tv_score ,并且您想显示第一个分数,则可以使用: -

    this.findViewById(R.id.tv_score).setText(Long.toString(scores[0]));

如果您想将分数显示为列表,则使用listView,那么您不会使用一系列longs,您会使用一系列对象(您可以使用长),否则您将直接使用光标。

因此,假设您的ID设置为 lv_scorelist ,则可以使用: -

    ListView scorelist = this.findViewById(R.id.lv_scorelist);
    Cursor csr = db.query("timervalues",null,"userid=?",new String[]{Long.toString(userid_to_find)},null,null,null);
    sca = new SimpleCursorAdapter(this,android.R.layout.simple_list_item_1,csr,new String[]{"cdt_value"},new int[]{android.R.id.text1},0);
    scorelist.setAdapter(sca);

注释

  • 对于光标适配器,必须存在名为 _id 的列,可以通过使用" rowId as as _id, *"代替,而不是,可以实现这一点(如果未用WITHOUT ROWID定义了表Timervalues)提取光标时,null作为query方法的第二个参数,而不是

    • Cursor csr = db.query("timervalues",null,"userid=?",new String[]{Long.toString(userid_to_find)},null,null,null);

    • 它可以是

    • Cursor csr = db.query("timervalues","rowid AS _id,*","userid=?",new String[]{Long.toString(userid_to_find)},null,null,null);

最新更新