在上一篇文章中,咱们学会了运用 LitePal 进行存储数据的功用。

的确,比起直接运用 Android 原生的 API,LitePal 显着简略方便了太多。那么,在增修正查四种操作中,咱们现已把 “增” 学完了,今天就让咱们继续趁热打铁,学习一下怎样运用 LitePal 进行修正和删去操作。还没有看过前一篇文章的朋gitee友建议先去参看 Android 数github永久回家地址据库高手秘籍 (五)数据库办理体系——LitePal 的存储操作

LitePal 的项目地址是:github.c数据库办理体系ogithub官网m/LitePalFram…

传统的修正和删去数据办法

上篇文章中咱们现已得知,SQLiteDatabase 类中供给了一个 insert(github中文官网网页) 办法用于插入数据,那么相似地,它还供给了 update() 和 delete() 这两个办法,分别用于修正和删去数据。先来看一下 update() 办法的办法界说:

public i数据库查询句子nt update(String table, Co数据库软件ntentValues valuesandroid下载, String whereClause, String[] whereArgs数组指针)

upd数组的界说ate() 办法接纳四个参数,第一个参数是表数据库体系工程师名,第二个参数是一个封装了待修正数据的 ContentVgithub中文官网网页alues 政策,第三和第四个参数用于指定修正哪些行,对应了 SQL 句子中android什么意思的 where 部分。

那么比如说咱们想把 news 表中github中文官网网页 id 为 2 的记载的标题改成 “今天 iPhone6 发布”,就能够这样写:

SQLiteDataba数据库se db = dbHelper.getWritableDatabase();
ContentValues values = new ContentValGitHubues();
values.put("title", "今天iPhone6发布"数组指针);
db.update("news", values, "id = ?", new String[] {"2"});

其作用相当于如下 SQL 句子:

update数组去重办法 news set title='今天iPhone6发布' whegithub镜像re id=2;

github中文官网网页以看出,比起直接运用 SQL 句子,update() 办法的语义性显着更强,也更简单让人了解。

接下来再看一下 delete() 办法的办法界说:

public int deleteandroid体系(String table,github中文官网网页 Strigithub是干什么的ng whereClause, String[] whe数组去重reArgs)

delete数据库体系的特色() 办法接纳三个参数,第一个参数同样是表名,第二和第三个参数用于指定删去哪些行,对应了 SQL 句子中的 where 部分。

那么比如说咱们想把 news 表中giti全部没有github是干什么的谈论的新闻都删去掉,就能够这样写:

SQLiteDatabase db = dbHelGitper.getWritableDatabase();
db.delete("news", "commentcount = ?", new String[] {"0"});

其作用相当于如下 SQL 语git教程句:

delete from news where commentcount=0;

由此可android是什么手机牌子见,Android 给咱们供给的这些帮忙办法,在很大程度上的确简化了不少数据库操作的凌乱度。不过 LitePal 显着做到了android的drawable类更好,下面就让咱们学习一下怎样运用 LitePal 来进行修正和删去操作。

运用 Lit数据库体系概论第五版课后答案ePal 修正数据

LitePa数据库体系的特色l 修正数据的 API 比较简略,github中文社区并没有什么太多的用法,也比较好了解,方github下载法都是界说在 DataSupport 类中的,咱们先来看一下办法定数据库办理体系义:

public static int update(Class<?> modelClass, ContentValues val数据库规划ues, long id)

这个静态的 update() 办法接纳三个参数,第一个参数是 Class,传入咱们要修正的那个类的 Class 就好,第二个github直播平台永久回家参数是 ContentValues 政策,这三个参数是一个指定的 id,标明咱们要修正哪一行数据。

那么比如说咱们想把 negithubws 表中 id 为 2 的记载的标题改成 “今天 iPhone6 发布”,就能够这样写:

ContentValues values = new ContentValues();
values.put("title", "今天iPhone6发布");
DataSupport.update(News.class, values, 2);

能够看github出,整体来讲仍是giti比原生的用法要简略一些的,首要咱们防止掉了要去获取 SQLiteDatabase 政策的步骤,其次在指定github修正某一条 id 记载的时分只需求传入这个数组公式 id 即可,语法更简练。

那么有的朋友或许会问了,或许我想修正的是某一个条件下的全部数据,而android体系不是只是修正某个 id 的数据,那该怎样办呢?别担忧,LitePal 还供给了其他一个简github中文官网网页洁的办法,办法界说如下:

public static int updateAll(Class&lt数据库体系概论第五版课后答案;?> modelClass, Conteandroid/yunosntValues values, Striandroid竞赛专用包ng... conditions)

updateAll() 办法标明修正多行记载,其间第一个参数仍然是 Class,第二个参数仍是 ContentValues 政策,第三个参数是一个 cgithub中文官网网页onditions 数组,用于指定修正哪些行数据库有哪几种的捆绑条件,回来值标明此次修正影响了多少行数据。

那么比如说咱们想把 news 表中标题为 “今天 iPhone数组初始化6 发布” 的全部新闻的标题改成“今天 iPhone6 Plus 发布”,就能够这样写:

Cgit命令ongithub官网tentValues values = new ContentValues();
values.put(github打不开"title", "今天iPhone6 Plus发布");
DataSupport.updateAll(Ne数据库体系工程师ws.class, vagithub官网lues, "title = ?", "今天iPhone6发布");

前面都没什么好说的,关键咱们看一下终究的这个 conditions 数组,由于它的类型是一个 Strgithub是干什么的ing 数组,咱们能够在这儿填入恣意多个 String 参数,其间最前面一个 String 参数数组的界说用于指定捆绑条件,后边全部的 String 参数用于填充捆绑条件中的占位符 (即? 号),比如捆绑条件中有一个占位符,那么后边就应该填写一个参数,假定有两个占位符,后边就应该填写两个参数,以此类推。

比如说咱们想把 news 表中标题android什么意思为 “今天 iPhone6 发布android的drawable类” 且谈论数量大于 0 的全部新闻的标题改成android手机“今天 iPhone6 Plus 发布”,就能够这样git教程写:

ContentValues values = new ContentValues();
val数据库规划ues.put("titgithub敞开私库le", "今天iPgithub是干什么的hone6 Plus发布");
DataSupport.updateAll(News.class, values, "title = ? and commentcount > ?", "今天iPhonegitlab6发布", "0");

能够看出,通过占位符的办法来完成条件捆绑显着要比原生的 API 愈加简略易用。

那么假定咱们想把 news 表中全部新闻的标题都改成 “今天 iPhone6 发布”,该怎样写呢?其实这就更简略了,只需求把终究的捆绑条件去掉就行了,如下所示:

ContentValues values = new ContentValues();
values.put("t数组指针itle", "今天iPhone6 Plus发布");
DataSupport.updateAll(News.class, values);

怎样样,这种写法是不是感觉语义性数据库查询句子非常强?updateAll() 办法在不指定捆绑条件的情况下就是修正全部行的数据github敞开私库,的确实确是 update all 了。

当然有android平板电脑价格些朋友或许会觉得这样用起来仍是有点凌乱,由于这个 ContentVal数组指针ues 政策很烦人,每次创立它的时分都要写许多繁github中文社区琐的代码。没关系,LitePal 也充分考虑了这种情数组去重办法况,供给了一种不需求 ContentValues 就能修正数据的办法,下面咱们测验运用这种新办法来结束上述同样的功用。

比如把 news 表中 id 为 2 的记载的标题改成 “今天 iPhone6 发布”,就能够这样写:

News upgithub镜像dagithub永久回家地址teNews = new News();
updateNewgithub敞开私库s.setTitle("今天iPhone6发布");

这次咱们并没有用 ContentValues,而是 ne数组排序w 出了一个 News 政策,把要修正的数据直接 set 进去,终究调用一下 update() 办法并传入 id 就能够了。不只不必创立 ContentValu数据库体系的核心是es 政策,连表名都不必指定了,由于 News 政策默许就是修正的 news 表。

这是其间一种用法,那么假定咱们想把 news 表中标题为 “今天 iPhone6 发布” 且谈论数量大于 0 的全部新闻的标题改成“今天 iPhone6android/yunos P数组函数的使用办法lus 发布”,就能够这样写:

News updateNews = new News();
updateNews.setTitle("今github永久回家地址日iPhone6发布"数据库办理体系);
updateNews.updateAll("titlegithub中文社区 = ? and commentcount > ?", "今天iPhone6发布", "0");

android/yunos是非常好了解的,这儿我就不再具体说明了。

可是这种用法有一点需求留神,就是假定咱们想把某一条数据修正成默许值,GitHub比如说将谈论数修正成 0,android下载只是调用 updateNews.setCommentCount(0) 这样是不能批github永久回家地址改成功的,由于即使不调用这行代码,github下载commentCount 的值也默许是 0。所以假定想要将某一列的数据修正成默许值的话,还需求凭借 setToDegit命令fault() 办法。用法也很简略,在 setToDefault() 办法中传入要修正的字段名就能够了 (类中的字段名),比如说咱们想要把 news 表中全部新闻的谈论数清零,就能够这样写:

News updateNews = new News();
updateNews.setToDefault("commentgithub永久回家地址Count");

运用 LitePal 删去数据

LitePal 删去数据的 API 和github是干什么的修正数组的界说数据是比较相数组词似的,可是愈加的简略一些,咱们先来github中文社区看一下 DataSupport 类中的办法界说,如下所示:

public static int delete(Class<?> modelClassgithub是干什么的, long id)

delete() 办法接纳两个github是干什么的参数,第一个参数是 Class,传入咱们要删去的那个类的 Class 就好,第二个参数是一个指定的 id,标明咱们要删去数组去重哪一行数据。

那么比如说咱们想Android删去 news 表中 id 为 2 的记载,就能够这样写:

DataSupport.delete(News.clagithub敞开私库ss, 2);

需求留神的是,这不只仅会将 news 表中 id 为 2 的记载数据库删去,同时还会将其它表中以 news id 为 2 的这条记载作为外键的数据一起删去掉,由于外键已然不存在了,那么这么数据也就没有保存的含义了。android是什么手机牌子

说起来或许有点拗口,咱们数据库软件仍是举例看一下。比如 news 表中现在有两条数据,如下图所示:

Android数据库高手秘籍(六)——LitePal的修正和删去操作

然后 commgitlabent 表中也有两条数据,如下图所示:

Android数据库高手秘籍(六)——LitePal的修正和删去操作

其间 comment 表中两条数据的外键都是 2,指向的 news 表中 id 为 2 的这条记载。那么下面咱们实行如下删去句子数组词

int deleteCount = DataSupport.delete(News.class, 2);
Log.d("TAgithub打不开G", "delete count is " + deleteCounandroid下载安装t);

其间 delete() 办法的回来值标明被删去的记载数,打印作用如下所示:

Android数据库高手秘籍(六)——LitePal的修正和删去操作

能够看到,有三条记载被删去了,那咱们再到 news 表中查询一下:

Android数据库高手秘籍(六)——LitePal的修正和删去操作

OK,只剩下一条记载了,数组公式id 为 2 的那条记载的确被删去了。那么再到 comment 表中看一下呢,如下图所示:

Android数据库高手秘籍(六)——LitePal的修正和删去操作

数据全没了!为什么呢?由于 comment 表中的两条数据都是以 ngithubews 表中 id 为 2 的数据作为外键的,现在外键不存在了,那么这数据库规划两条数据天然也没有存在的含义了,android下载安装因此被删去的记载数一共是 3 条。这样是不是就好了解了许多呢?

除了删去指定 id 的数据之外,DataSupport 中也供给了github镜像一个通过 whegithub直播平台永久回家re 句子来批量删去数据的办法,先看一下办法界说:

public sgithub打不开tatic int deleteAll(Class<?> modelClass, String... conditions)

看起来很眼熟吧?非常数据库体系的特色简略,de数据库leteAll() 办法接纳两个参数,第一个参数是 Class,传入咱们要删去的那个类的 Class 就好,第二个参数是一个 conditions 数组,用于指定删去哪些行的捆绑条件,回来值标明此次删去了多少行数据,用法和 updateAll() 办法是底子相同的。

那么比如说咱们想把 ne数组指针ws 表中标题为 “今天 iPhone6 发布” 且谈论数等于 0 的全部新闻都删去掉,就能够这样写:

DataSupport.deleteAll(News.class, "t数组函数的使用办法itle = ? and comandroid体系ment数组去重办法count = ?", "今天iPhone6发布github镜像", "0");

而假定咱们想把 news 表中全部的数组公式数据全部删去掉,就能够这样写:

DataSupport.deleteAll(News.class);

在不指定捆绑条件的情况下,deleteAll() 办法就会删去表中全部的数据了。

除了 DataSupport 类中供给的静态删去办法之外,还有一个删去办法是作用于政策上的,即数组词任何一个承继自 DataSupport 类的实例都能够通过数据库体系概论第五版课后答案调用 delete() 这个实例办法来删去数据。但条件是这个政策一定是要耐久化之后的,一个非耐久化的政策假定调用github敞开私库了 d数据库有哪几种elete() 办法则不会产生任何作用。

比如说下面这种写法:

这儿 new 出了一个 N数组公式ews 政策,这个政策显着是没有耐久化的,那么此刻调用 delete() 办法则不会删去任何数据。

但假定咱们之前将这个政策耐久化过了数组公式,那么再gitee调用 delete() 办法就会把这个方github中文官网网页针对应的数据删去掉了,比如:

news.setTitle("这是一条新闻标题");
news.setContent("这是一条新闻内容");

一个政策假定 save 过了之后,那就是耐久化的了。除了调用 save() 办法之外android竞赛专用包,通过 DataSupport 中供给的查询办法从数据库中查出来的政策也是通过耐久化的,查询android什么意思的功用咱们会在下篇博客中说明。

其他还有一个简略的办法能够帮忙咱们判别一个政策是否是耐久化之后的,DataSupport 类中供给了一个 isSaandroid下载ved() 办法数据库查询句子,这个办法回来 true 就标明该政策是通过耐久化的,回来 false 则数组的界说标明该政策未通过耐久化。那么删去一个政策对应的数据也就能够这样写了:

好了,这样咱们就把 LitePal 中供给的修正和删去数据操作的用法底子都学习完了,那么今天的文章就到这儿,下一篇文章中会初步说明查询数据的用法,感兴趣的朋友请继续阅读github中文官网网页