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

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

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

​

​

 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值