我有一组字符串:
"1,2,5,6,9,17,24"
,每个都是“用户”表的用户ID。
如何从一个表中获取多行数据,其中userID
是String中指定的那些?
我的建议是将字符串拆分为子字符串,并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 ID 的输出为“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;
}
我只想让所有friendName
和picturepath
显示在对应于字符串中的listview
的{{1}}中。
以下是我的“朋友”表的示例: Table_Friend
答案 0 :(得分:1)
如果我理解正确,您想要在1个查询中获取所有ID。所以你可以创建一个简单的sql,例如:
"SELECT * FROM TABLE_FRIEND WHERE KEY_FRIEND_ID in (participantID)";
然后使用:
db.rawQuery(sql,null);
答案 1 :(得分:0)
这可能会对您有所帮助:
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;
}