在上一篇文章中,我们学会了使用LitePal进行存储数据的功能。确实,比起直接使用Android原生的API,LitePal明显简单方便了太多。那么,在增删改查四种操作中,我们已经把“增”学完了,今天就让我们继续趁热打铁,学习一下如何使用LitePal进行修改和删除操作。还没有看过前一篇文章的朋友建议先去参考 Android数据库高手秘籍(5):LitePal的存储操作 。
LitePal的项目地址是:https://github.com/LitePalFramework/LitePal
传统的修改和删除数据方式
上篇文章中我们已经得知,SQLiteDatabase类中提供了一个insert()方法用于插入数据,那么类似地,它还提供了update()和delete()这两个方法,分别用于修改和删除数据。先来看一下update()方法的方法定义:
1 |
public int update(String table, ContentValues values, String whereClause, String[] whereArgs) |
update()方法接收四个参数,第一个参数是表名,第二个参数是一个封装了待修改数据的ContentValues对象,第三和第四个参数用于指定修改哪些行,对应了SQL语句中的where部分。
那么比如说我们想把news表中id为2的记录的标题改成“今日iPhone6发布”,就可以这样写:
1 2 3 4 |
SQLiteDatabase db = dbHelper.getWritableDatabase(); ContentValues values = new ContentValues(); values.put("title", "今日iPhone6发布"); db.update("news", values, "id = ?", new String[] {"2"}); |
其作用相当于如下SQL语句:
1 |
update news set title='今日iPhone6发布' where id=2; |
可以看出,比起直接使用SQL语句,update()方法的语义性明显更强,也更容易让人理解。
接下来再看一下delete()方法的方法定义:
1 |
public int delete(String table, String whereClause, String[] whereArgs) |
delete()方法接收三个参数,第一个参数同样是表名,第二和第三个参数用于指定删除哪些行,对应了SQL语句中的where部分。
那么比如说我们想把news表中所有没有评论的新闻都删除掉,就可以这样写:
1 2 |
SQLiteDatabase db = dbHelper.getWritableDatabase(); db.delete("news", "commentcount = ?", new String[] {"0"}); |
其作用相当于如下SQL语句:
1 |
delete from news where commentcount=0; |
由此可见,Android给我们提供的这些帮助方法,在很大程度上确实简化了不少数据库操作的复杂度。不过LitePal显然做到了更好,下面就让我们学习一下如何使用LitePal来进行修改和删除操作。
使用LitePal修改数据
LitePal修改数据的API比较简单,并没有什么太多的用法,也比较好理解,方法都是定义在DataSupport类中的,我们先来看一下方法定义:
1 |
public static int update(Class<?> modelClass, ContentValues values, long id) |
这个静态的update()方法接收三个参数,第一个参数是Class,传入我们要修改的那个类的Class就好,第二个参数是ContentValues对象,这三个参数是一个指定的id,表示我们要修改哪一行数据。
那么比如说我们想把news表中id为2的记录的标题改成“今日iPhone6发布”,就可以这样写:
1 2 3 |
ContentValues values = new ContentValues(); values.put("title", "今日iPhone6发布"); DataSupport.update(News.class, values, 2); |
可以看出,总体来讲还是比原生的用法要简单一些的,首先我们避免掉了要去获取SQLiteDatabase对象的步骤,其次在指定修改某一条id记录的时候只需要传入这个id即可,语法更简练。
那么有的朋友可能会问了,也许我想修改的是某一个条件下的所有数据,而不是仅仅修改某个id的数据,那该怎么办呢?别担心,LitePal还提供了另外一个简便的方法,方法定义如下:
1 |
public static intd class="crayon-code"> public static int看过前一篇文章的朋友建议先去参考 Android数据库高手秘籍(5):LitePal的存储操作 。
LitePal的项目地址是:https://github.com/LitePalFramework/LitePal 传统的修改和删除数据方式上篇文章中我们已经得知,SQLiteDatabase类中提供了一个insert()方法用于插入数据,那么类似地,它还提供了update()和delete()这两个方法,分别用于修改和删除数据。先来看一下update()方法的方法定义:
update()方法接收四个参数,第一个参数是表名,第二个参数是一个封装了待修改数据的ContentValues对象,第三和第四个参数用于指定修改哪些行,对应了SQL语句中的where部分。 那么比如说我们想把news表中id为2的记录的标题改成“今日iPhone6发布”,就可以这样写:
其作用相当于如下SQL语句:
可以看出,比起直接使用SQL语句,update()方法的语义性明显更强,也更容易让人理解。 接下来再看一下delete()方法的方法定义:
delete()方法接收三个参数,第一个参数同样是表名,第二和第三个参数用于指定删除哪些行,对应了SQL语句中的where部分。 那么比如说我们想把news表中所有没有评论的新闻都删除掉,就可以这样写:
其作用相当于如下SQL语句:
由此可见,Android给我们提供的这些帮助方法,在很大程度上确实简化了不少数据库操作的复杂度。不过LitePal显然做到了更好,下面就让我们学习一下如何使用LitePal来进行修改和删除操作。 使用LitePal修改数据LitePal修改数据的API比较简单,并没有什么太多的用法,也比较好理解,方法都是定义在DataSupport类中的,我们先来看一下方法定义:
这个静态的update()方法接收三个参数,第一个参数是Class,传入我们要修改的那个类的Class就好,第二个参数是ContentValues对象,这三个参数是一个指定的id,表示我们要修改哪一行数据。 那么比如说我们想把news表中id为2的记录的标题改成“今日iPhone6发布”,就可以这样写:
可以看出,总体来讲还是比原生的用法要简单一些的,首先我们避免掉了要去获取SQLiteDatabase对象的步骤,其次在指定修改某一条id记录的时候只需要传入这个id即可,语法更简练。 那么有的朋友可能会问了,也许我想修改的是某一个条件下的所有数据,而不是仅仅修改某个id的数据,那该怎么办呢?别担心,LitePal还提供了另外一个简便的方法,方法定义如下:
|