首页 > 解决方案 > SQL - 如何返回数据列表

问题描述

我下面有这个 SQL 方法,它假设返回多行数据,但每次我尝试显示数据时它只返回一项。

我该如何解决?

//Constant
    public static final String COL_4 = "LikeSong";
    

//Database Table
    @Override
        public void onCreate(SQLiteDatabase db) {
            db.execSQL("CREATE TABLE UserInfo(ID INTEGER PRIMARY KEY AUTOINCREMENT, Users_Name TEXT, PlaylistName TEXT,likeAlbum TEXT,LikeSong TEXT)");
        }

public String[] getLikedSongs() {
        SQLiteDatabase db = this.getReadableDatabase();
        String[] LikeSong = null;
        Cursor cursor = db.rawQuery(" SELECT " + COL_4 + " FROM " + Table_Name + " WHERE " + COL_4 + " IS NOT NULL", null);
        while (cursor.moveToNext()) {
            String note = cursor.getString(0);
            LikeSong = note.split(",");
        }
        cursor.close();
        db.close();
        return LikeSong;
    }

标签: javaandroidsqlsqliteandroid-sqlite

解决方案


在每次迭代的while循环内,您都会更改 的值LikeSong,因此当循环结束时,LikeSong会为其分配最后一个值。
我认为您想要一个由您的方法返回的数组列表,getLikedSongs()如下所示:

public List<String[]> getLikedSongs() {
        SQLiteDatabase db = this.getReadableDatabase();
        List<String[]> list = new ArrayList<>();
        Cursor cursor = db.rawQuery(" SELECT " + COL_4 + " FROM " + Table_Name + " WHERE " + COL_4 + " IS NOT NULL", null);
        while (cursor.moveToNext()) {
            String note = cursor.getString(0);
            LikeSong.add(note.split(","));
        }
        cursor.close();
        db.close();
        return LikeSong;
}

推荐阅读