关于LitePal插入数据重复的问题解决

其实思路很简单,在你每次保存数据之前,先查询数据库判断该数据是否在数据库中已经存在,如果已经存在和将要存储的数据相同的数据,就对数据库中的数据进行删除,然后再保存该数据,这样就不会有重复的数据。下面给一下代码:

Litepal给出的查询操作有三种:

1.Song song = LitePal.find(Song.class, id);

2.List allSongs = LitePal.findAll(Song.class);

3.List songs = LitePal.where("name like ? and duration < ?", "song%", "200").order("duration").find(Song.class);

第一种用于查询给定id的单条数据,我们去重操作由于要遍历数据库或者查找符合条件的数据,所以我们使用第二种或者第三种

第二种

    //name和duratin是你要存入的重复的数据
    Song song = new Song;
    Listsongs = 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 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();

​

​

 

你可能感兴趣的:(android开发笔记,Litepal,去重复数据,插入数据不重复)