SQL - 如何return 数据列表

SQL - How to return a list of data

我在下面有这个 SQL 方法,它假设 return 多行数据,但每次我尝试显示数据时它只 returning 一个项目.

我该如何解决?

//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;
    }

好的...现在我明白了。您正在为 while 循环的每次迭代重新分配 LikeSong 并在 while 循环完成后返回 String 数组。很明显,您只会获得最后一行的值。

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;
}