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