Android数据存储——开源LitePal方法操作数据库

一 配置litepal

1.在app/build.gradle中的dependencies闭包中添加依赖:

compile ‘org.litepal.android:core:1.4.1‘

2.在app/src/mian目录里 new一个Directory,命名为assets目录,在目录中创建一个file,命名litepal.xml。并进行编辑:

1 <?xml version="1.0" encoding="utf-8" ?>
2 <litepal>
3     <dbname value="BookStore"></dbname>
4
5     <version value="1"></version>
6     <list>
7
8     </list>
9 </litepal>

dbname用于指定数据库名,version指定版本号。

3.配置LitePalApplication,修改AndroidMainActivity中的代码,在<application>中添加:

android:name="org.litepal.LitePalApplication"

二 创建和升级数据库

在litepal中采用的是对象关系映射模型,可以使用面向对象的思想来编写数据库,即把表映射成了对应的类,表中的列就是类中的数据类型,再给各种数据写上对应的get和set方法。

(1)创建数据库:

如先创建一个Book表,则创建book类。如下:

 1 public class Book {
 2
 3     private int id;
 4     private String author;
 5     private double price;
 6     private int pages;
 7     private String name;
 8
 9     public int getId() {
10         return id;
11     }
12
13     public void setId(int id) {
14         this.id = id;
15     }
16
17     public String getAuthor() {
18         return author;
19     }
20
21     public void setAuthor(String author) {
22         this.author = author;
23     }
24
25     public double getPrice() {
26         return price;
27     }
28
29     public void setPrice(double price) {
30         this.price = price;
31     }
32
33     public int getPages() {
34         return pages;
35     }
36
37     public void setPages(int pages) {
38         this.pages = pages;
39     }
40
41     public String getName() {
42         return name;
43     }
44
45     public void setName(String name) {
46         this.name = name;
47     }
48 }

在Book类中我们定义了类中对应表中的各列的字段。这就是映射。

将Book类添加到映射模型列表中,修改litepal.xml中的代码如下:注意一定要写完整的类名。

    <list>
        <mapping class="com.example.litepaltest.Book"></mapping>
    </list>

现在只要进行任意一次数据库操作,数据库就会被创建,book表也会被创建,所以使用Litepal.getDatabase()方法来进行最简单的数据库操作,以达到创建数据库和表的目的。

(2)升级数据库:

之前使用SQliteOpenHelper来进行对数据库操作时,虽然也可以升级,但是每次升级会先删除之前存在的表,如果表中存有数据就会造成不必要的损失。而使用litepal则不会在更新时候删除之前存在的表和数据。

如我们在book表中新加一个列,只要在book类中新加入一个字段和相应的方法即可。代码如下:

1     private String press;
2
3     public String getPress() {
4         return press;
5     }
6
7     public void setPress(String press) {
8         this.press = press;
9     }

同时还可以加入一个新的表Category表来分类书籍。新建一个Category类,同样字段对应相应的行,如下:

 1 public class Category {
 2     private int id;
 3     private String categoryName;
 4     private int categoryCode;
 5
 6     public int getId() {
 7         return id;
 8     }
 9
10     public void setId(int id) {
11         this.id = id;
12     }
13
14     public void setCategoryName(String categoryName) {
15         this.categoryName = categoryName;
16     }
17
18     public void setCategoryCode(int categoryCode) {
19         this.categoryCode = categoryCode;
20     }
21 }

这时,只需要在litepal.xml中修改相应的版本号,并加入新添加的表的类名就可。(版本号增加为2)

1 <litepal>
2     <dbname value="BookStore"></dbname>
3
4     <version value="2"></version>
5     <list>
6         <mapping class="com.example.litepaltest.Book"></mapping>
7         <mapping class="com.example.litepaltest.Category"></mapping>
8     </list>
9 </litepal>

三 添加数据

添加数据很简单,只需要将要添加的表继承自LitePalSupport类(原继承DataSupport类,现在已经弃用了)。

public class Book extends LitePalSupport

然后在MainActivity中添加相关要添加的数据,最后用save()进行保存即可。如下:

 1         Button addData = (Button) findViewById(R.id.add_data);
 2         addData.setOnClickListener(new View.OnClickListener() {
 3             @Override
 4             public void onClick(View view) {
 5                 Book book = new Book();
 6                 book.setName("the da wei");
 7                 book.setAuthor("mask");
 8                 book.setPages(33);
 9                 book.setPrice(19.33);
10                 book.setPress("Unkonw");
11                 book.save();
12             }
13         });

如上,先创建出一个Book的实例,然后调用Book类中的设置好的set方法设置数据,然后用save()方法来进行保存数据。

四 更新数据

我们修改表中一本书的价格和出版社,其中有限制条件作者和书名。代码如下:

 1         Button updateData = (Button) findViewById(R.id.update_data);
 2         updateData.setOnClickListener(new View.OnClickListener() {
 3             @Override
 4             public void onClick(View view) {
 5                 Book book = new Book();
 6                 book.setPrice(14.99);
 7                 book.setPress("Auchor");
 8                 book.updateAll("name=? and author=?", "the a", "maskd");
 9             }
10         });

先将表实例化,然后通过set修改要更新的数据,通过updateAll()方法来更新,其中第一个参数是限制的条件,之后是限制条件具体的参数。如果不指定条件语句的话,表示所有的数据都更新。

如果想将列的内容更新为默认值的话,使用如下代码:就可以将目标列中的值设为默认值了。

book.setToDefault("pages");

五 删除数据

删除数据假设还是继承自datasupport类:代码如下

1         Button deleteButton = (Button) findViewById(R.id.delete_data);
2         deleteButton.setOnClickListener(new View.OnClickListener() {
3             @Override
4             public void onClick(View view) {6                 DataSupport.deleteAll(Book.class,"price<?","12.00");
7             }
8         });

其中删除删除deleteAll方法第一个参数是对应的表,第二个和第三个参数相当于SQL语句中的where和对应的数值。

原文地址:https://www.cnblogs.com/Mask-D/p/9515211.html

时间: 2024-07-29 16:14:45

Android数据存储——开源LitePal方法操作数据库的相关文章

Android 数据存储——SQLite实例、判断数据库中表是否存在

本文主要记录一下Android SQLiteDatabase中如何判断数据库中表是否存在,以及测试SQLiteDatabase数据库的基本操作.有关SQLite的详细说明,可以查看转载的Android 数据存储--SQLite使用详解 例子: AndroidManifest.xml--没有做任何修改,创建工程默认 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="

Android数据存储之SQLite的操作

Android作为一个应用在移动设备上的操作系统,自然也就少不了数据的存储.然而SQLite作为一个轻型的关系型数据库,基于其轻量.跨平台.多语言接口及安全性等诸多因数考虑,因而Android较大的数据存储采用了SQLite.SQLite与大多数关系型数据库一样都遵循ACID,语法也非常相似.只要您懂得mysql.sqlserver等关系型数据库的操作,只要查看下SQLite的官方文档便可快速上手.SQLite语法您可通过http://sqlite.org/lang.html进行查看. 接下来看

从零开始学android&lt;数据存储(4)Sqlite数据库存储.三十八.&gt;

从前几章我们分别学习了属性文件存储输数据,内储存存储数据,和外部储存存储数据,今天我们来学习一下android 轻量级数据库Sqlite数据库的数据存储 首先必须了解SQLiteOpenHelper SQLiteDatabase类本身只是一个数据库的操作类,但是如果要想进行数据库的操作,还需要一个android.database.sqlite.SQLiteOpenHelper类帮助下才可以取得进行,但是,SQLiteOpenHelper类是一个抽象类,所以要使用的时候需要定义其子类,并且在子类中

Android数据存储之Sqlite采用SQLCipher数据库加密实战

前言: 最近研究了Android Sqlite数据库(文章地址:http://www.cnblogs.com/whoislcj/p/5506294.html)以及ContentProvider程序间数据共享(http://www.cnblogs.com/whoislcj/p/5507928.html),我们清晰的知道Sqlite数据库默认存放位置data/data/pakage/database目录下,对于已经ROOT的手机来说的没有任何安全性可以,一旦被利用将会导致数据库数据的泄漏,所以我们该

Android数据存储之GreenDao 3.0 详解(一)

前言: 今天一大早收到GreenDao 3.0 正式发布的消息,自从2014年接触GreenDao至今,项目中一直使用GreenDao框架处理数据库操作,本人使用数据库路线 Sqlite---->OrmLite---->GreenDao.今天白天一直在忙着公司的项目需求,只能晚上加班来学习最新的GreenDao 3.0使用方式了. GreenDao 介绍: greenDAO是一个对象关系映射(ORM)的框架,能够提供一个接口通过操作对象的方式去操作关系型数据库,它能够让你操作数据库时更简单.更

android数据存储_SQL数据库

源码下载(免下载积分):下载 对于保存重复或者结构化的数据数据,使用数据库很好的.在android对于数据库的API在 android.database.sqlite包中. 创建并操作数据库: 创建: 1. 继承SQLiteOpenHelper //继承SQLiteOpenHelper类, public class DictionaryOpenHelper extends SQLiteOpenHelper{ 2. 定义相关的成员变量和常量 public static final String D

Android数据存储-通过SharedPreferences实现记住密码的操作

在Android中登陆中,为了实现用户的方便,往往需要根据用户的需要进行记住密码的操作,所以,在Android数据存储中SharedPreferences恰恰可以实现这一点 下面,小编将带领大家通过SharedPreferences实现记住密码的操作 一.首先:介绍下什么是SharedPreferences? SharedPreferences是Android平台上一个轻量级的存储类,用来保存应用的一些常用配置. 二.介绍了SharedPreferences,我们将通过记住SharedPrefe

10、Android数据存储

课程目标: 掌握Android中数据存储的几种方式 熟练使用PreferenceActivity&PreferenceScreen做专业的Setting功能 熟练使用SQLite3来存储数据 深入研究SQLite3数据库特性,并且比对与大型数据库的包括存储过程,主外键关联等特性 了解文件存储的内外存储分别  了解网络存储C/S结构原理 . 重点难点:SQLiteOpenHelper类的使用   SQLIte数据库的特性掌握 考核目标: 说出Android数据存储的几种形式 ? Sqlite3能支

Android数据存储 如何搞定SQLite Database

转载请注明出处:明桑Android 在Android平台下有各种不同方法可以实现应用程序数据的存储和管理(SharedPerferences,File,SQLiteDatabase,网络存储),方法的选择依赖于需要存储的数据类型和数据结构.SQLite数据库能够安全而有效地解决结构化数据的存储问题: 这里主要介绍SQLite相关的用法,以及对数据库常见操作的封装. 最后,作为一个综合案例,做一个简单的学生管理的demo,创建student.db,包括name,grade字段,实现增.删.改.查的