java - 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;
}
解决方案
在每次迭代的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;
}
推荐阅读
- amazon-web-services - 保留 LogGroup 并在重新部署 Lambda 时重用它
- java - 如何在jsp中动态创建Select标签?
- javascript - 在字符串最后一次出现之前替换附加文本
- java - 如何在RequestParm中将多个值转换为枚举?
- c# - 在泛型和继承中调用了不正确的显式方法
- ruby-on-rails - 在变量中定义类名而不实例化它
- reactjs - 在与 Spring Boot 捆绑的 React 中读取环境变量
- windows - 如何使用 windows Mingw 编译器生成 .gcov 中间文本文件以及 lcov 如何使用这些 .gcov 文件?
- laravel - 我使用了 laravel 分页链接,但我得到了大 icos。< > 在顺风 css 代码中调用
- qt - 将 QML 位置插件缩放级别提高到 19 以上