【问题标题】:How to get the data from Database with a set of string array如何使用一组字符串数组从数据库中获取数据
【发布时间】:2015-10-21 10:31:00
【问题描述】:

我有一组字符串是:

"1,2,5,6,9,17,24"

每个都是“用户”表的用户 ID。

如何从表中获取多行数据,其中userID 是字符串中指定的那些?

我的建议是用子字符串分割字符串,for 循环dbhelper 中的每个 ID,但我不知道这样做。

这是我Activity的代码:

private void loadChatData() {
    String GroupName = Groupname;
    String participantID = dbHelper.getParticipantID(GroupName);
    participants = dbHelper.getParticipantList(participantID);
    madapter = new FriendListByGridAdapter(GroupinformationActivity.this, participants);
    groupdetailsdelist.setAdapter(madapter);
    madapter.notifyDataSetChanged();
}

participantID 的输出为“1,2,5,6,9,17,24”。

这是DBHelpers中方法的代码:

  public List<Friend> getParticipantList(String participantID) {
      openForWrite();
      List<Friend> list = new ArrayList<Friend>();
      String selectQuery ="SELECT "
            + KEY_FRIEND_NAME + ","
            + KEY_PICTURE
            + " FROM "
            + TABLE_FRIEND
            + " WHERE "
            + KEY_FRIEND_ID + " = "
            + "'"+ participantID + "'";

    Cursor cursor = db.rawQuery(selectQuery, new String[]{});

    if (cursor.moveToFirst()) {

        do {
            Friend temp = new Friend();
            temp.setFriendpicture(cursor.getString(cursor.getColumnIndex(KEY_PICTURE)));
            temp.setFriend_name(cursor.getString(cursor.getColumnIndex(KEY_FRIEND_NAME)));

            list.add(temp);
        } while (cursor.moveToNext());
    }

    // closing connection
    cursor.close();
    db.close();

    Log.d("friend list","" + list.size());
    return list;
}

我只想让所有friendNames 和picturepaths 显示在与字符串中的userIDs 相对应的listview 中。

这是我的“朋友”表的示例: Table_Friend

【问题讨论】:

  • @FrankN.Stein nono 先生!字符串数组为 1,2,5,6,9,17,24,每一个都是 KEY_FRIEND_ID 数据库中的示例:1 MellisaNg Female 0100000000 |||| 2 Frank N. Stein 男 0200000000

标签: java android arrays string


【解决方案1】:

如果我理解正确,您希望在 1 个查询中获取所有 ID。所以你可以只创建一个简单的sql,例如:

"SELECT * FROM TABLE_FRIEND WHERE KEY_FRIEND_ID in (participantID)";

然后使用:

db.rawQuery(sql,null);

【讨论】:

  • @FrankN.Stein 如何更改 getParticipantList() 方法签名以接受字符串数组
  • 我的评论基于此:String参与者ID = dbHelper.getParticipantID(GroupName);
  • 你说得对,我忽略了这个问题。
【解决方案2】:

这可能会对您有所帮助:

String participentIDArray[] = participentID.split(",");
List<Friend> list = new ArrayList<Friend>();
for(int i = 0; i < participentIDArray.length; i++) {
    list.addAll(getDataFromDatabase(participentIDArray[i]));
}
madapter = new FriendListByGridAdapter(GroupinformationActivity.this, list);
groupdetailsdelist.setAdapter(madapter);
madapter.notifyDataSetChanged();

根据participentID从数据库中获取数据的方法:

public ArrayList<Friend> getDataFromDatabase() {
    List<Friend> list = new ArrayList<Friend>();
    // Add your code to get data from database
    return list;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-13
    • 1970-01-01
    相关资源
    最近更新 更多