sql-如何返回数据列表

uurv41yg  于 2021-07-26  发布在  Java
关注(0)|答案(2)|浏览(545)

我在下面有一个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;
    }
xriantvc

xriantvc1#

内部 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;
}
rpppsulh

rpppsulh2#

好吧…现在我明白了。你在重新分配任务 LikeSong 对于while循环的每次迭代,并在while循环完成后返回字符串数组。所以很明显,你只会得到最后一行的值。

相关问题