我正在我的音乐应用程序中创建一个“最近播放”的播放列表。我创建了一个数据库来存储与歌曲相关的信息。我当前的代码所做的是,每当我播放一首歌时,它都会将它添加到数据库中,并且我可以成功地显示它。但问题是当我播放同一首歌两次时,数据库没有更新。 例如,我分别播放了歌曲A、歌曲B、歌曲C、歌曲D。然后它将显示歌曲 A、歌曲 B、歌曲 C、歌曲 D。但是如果我再次分别播放歌曲 A、歌曲 B、歌曲 C、歌曲 D 和歌曲 B。然后它再次显示相同的(歌曲 A、歌曲 B、歌曲 C、歌曲 D)。但我想要的是:歌曲 A、歌曲 C、歌曲 D、歌曲 B。它应该更新并显示播放的最新歌曲,这就是我的意思。我不知道该怎么做。
建表代码:
public void onCreate(SQLiteDatabase sqLiteDatabase) {
String CREATE_TABLE = "CREATE TABLE " + TABLE_NAME+ "("
+ KEY_ID + " INTEGER PRIMARY KEY,"
+ KEY_NAME + " TEXT,"
+ KEY_ARTIST + " TEXT,"
+ KEY_DURATION + " INTEGER,"
+ KEY_ART + " TEXT"
+ ");";
sqLiteDatabase.execSQL(CREATE_TABLE);
}
获取和显示数据的代码:
public ArrayList<SongInfoModel> getRecentlyPlayed(){
ArrayList<SongInfoModel> rpList = new ArrayList<>();
String selectQuery = "SELECT * FROM " + TABLE_NAME;
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(selectQuery,null);
if(cursor.moveToFirst()){
do{
long id = cursor.getLong(0);
String SongName = cursor.getString(1);
String artistName = cursor.getString(2);
long dur = cursor.getLong(3);
String Art = cursor.getString(4);
SongInfoModel sh = new SongInfoModel(id,SongName,artistName,dur,null,Art);
rpList.add(sh);
}while (cursor.moveToNext());
}
return rpList;
添加数据的代码:
public void addSong(SongInfoModel songInfoModel){
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(KEY_ID, songInfoModel.getSongID());
values.put(KEY_NAME, songInfoModel.getSongName());
values.put(KEY_ARTIST, songInfoModel.getArtistName());
values.put(KEY_DURATION, songInfoModel.getDuration());
values.put(KEY_ART, songInfoModel.getAlbumIDArtwork());
db.insert(TABLE_NAME,null,values);
db.close();
}
最佳答案
在创建查询 ")";
中更改表查询尾随分号String CREATE_TABLE = "CREATE TABLE " + TABLE_NAME+ "("
+ KEY_ID + " INTEGER PRIMARY KEY,"
+ KEY_NAME + " TEXT,"
+ KEY_ARTIST + " TEXT,"
+ KEY_DURATION + " INTEGER,"
+ KEY_ART + " TEXT"
+ ")";
sqLiteDatabase.execSQL(CREATE_TABLE);
关于android - 将数据插入表中,如果已经存在,则将其带到顶部 SQLite,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47937575/