0

我无法从 sql 获取所有行数据。

数据库处理程序.java

public HashMap<String, String> getChannelDetails(){
    HashMap<String,String> channels = new HashMap<String,String>();
    String selectQuery = "SELECT  * FROM " + TABLE_CHANNEL;

    SQLiteDatabase db = this.getReadableDatabase();
    Cursor cursor = db.rawQuery(selectQuery, null);
    // looping through all rows and adding to list
    if (cursor.moveToFirst()) {
        do {
            channels.put("title", cursor.getString(1));
            channels.put("url", cursor.getString(2));
            channels.put("create_at", cursor.getString(3));
        } while (cursor.moveToNext());
        Log.d("SELECT", channels.toString());
        Log.d("Count", Integer.toString(cursor.getCount()));
    }

    cursor.close();
    db.close();
    // return channels
    return channels;
}

显示结果.java

for(int i = 0; i < 13; i++){
         HashMap<String, String> allchannel = db.getChannelDetails(); 
         String id = allchannel.get("id");
         String title = allchannel.get("title");
         String url = allchannel.get("url");
         String date = allchannel.get("created_at");
         titles[i] = title;
         Toast.makeText(context,titles[i]+" "+url+" "+ date, Toast.LENGTH_SHORT).show();
         }

cursor.getCount() 有 13 个,但是输出只重复显示最后一行数据。

4

1 回答 1

2

将您的方法更改为以下内容:

public ArrayList<HashMap<String, String>> getChannelDetails(){
ArrayList<HashMap<String, String>> list=new ArrayList<HashMap<String, String>>();
    String selectQuery = "SELECT  * FROM " + TABLE_CHANNEL;

    SQLiteDatabase db = this.getReadableDatabase();
    Cursor cursor = db.rawQuery(selectQuery, null);
    // looping through all rows and adding to list
    if (cursor.moveToFirst()) {
        do {
            HashMap<String,String> channels = new HashMap<String,String>();

            channels.put("title", cursor.getString(1));
            channels.put("url", cursor.getString(2));
            channels.put("create_at", cursor.getString(3));
            list.add(channels);
        } while (cursor.moveToNext());
        Log.d("Count", Integer.toString(cursor.getCount()));
    }

    cursor.close();
    db.close();
    // return channels
    return list;
}

现在使用这个列表来遍历结果。

于 2012-11-07T06:47:50.147 回答