欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

关于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();

​

​