关于LitePal插入数据重复的问题解决
程序员文章站
2022-06-02 17:03:41
...
其实思路很简单,在你每次保存数据之前,先查询数据库判断该数据是否在数据库中已经存在,如果已经存在和将要存储的数据相同的数据,就对数据库中的数据进行删除,然后再保存该数据,这样就不会有重复的数据。下面给一下代码:
Litepal给出的查询操作有三种:
1.Song song = LitePal.find(Song.class, id);
2.List<Song> allSongs = LitePal.findAll(Song.class);
3.List<Song> songs = LitePal.where("name like ? and duration < ?", "song%", "200").order("duration").find(Song.class);
第一种用于查询给定id的单条数据,我们去重操作由于要遍历数据库或者查找符合条件的数据,所以我们使用第二种或者第三种
第二种
//name和duratin是你要存入的重复的数据
Song song = new Song;
List<Song>songs = LitePal.findAll(Song.class);
for (int i = 0; i < songs.size(); i++) {
if (songs.get(i).getName() == name
&& songs.get(i).getDuration() == duration) {
songs.get(i).delete();
}
}
song.setName(name);
song.setDuration(duration);
song.save();
第三种
//name和duratin是你要存入的重复的数据
Song song = new Song;
List<Song> songs = LitePal.where("name = ? and duration = ?", name,duration).find(Song.class);
if (songs == null || songs.size() == 0) {
continue;
} else {
for (int i = 0; i < songs.size(); i++) {
songs.get(i).delete();
}
}
song.setName(name);
song.setDuration(duration);
song.save();