写给初学者26_android_数据持久化_LitePal_更简单的数据库操作
2017-04-25 20:55
525 查看
安卓26_数据持久化-SQLite第三方开源库
实际上SQLiteDataBase当中提供的诸多方法是容易让人头大的,很多又经验的开发者会对其做一次封装,并且开源化。这确实会对开发带来不小的提速,但是还是建议充分理解最基本的东西以后再来接触第三方开源库。关于数据库的第三方开源库常见的有OrmLite、LitePal等。这里介绍LitePalLitePal
如果你的英语能力不错,那么建议直接去LitePal的开源库地址上参看。地址:https://github.com/LitePalFramework/LitePal这是一个非常好用的第三方数据库封装库,能够给前期数据库知识不扎实的开发者减轻不少的压力。
1.添加依赖
使用Studio做开发,这一点是几乎逃避不了的。如果是Eclipse那么下载jar包并且导入就好了。dependencies { compile 'org.litepal.android:core:1.5.1' }
2.配置一个litepal.xml
首先需要assets文件夹下,新建一个litepal.xml文件,然后复制下面的代码进去。<?xml version="1.0" encoding="utf-8"?> <litepal> <!-- 定义应用程序的数据库名称。 默认情况下,每个数据库名称应以.db结尾。 如果您没有使用.db命名数据库, LitePal会为您自动加上后缀。 --> <dbname value="litePalDemo" /> <!-- 定义数据库的版本。 每次你想要 要升级您的数据库,版本标签将有所帮助。 修改您在映射标记中定义的模型,只需修改 使版本值加一,升级数据库 将自动处理,不用担心。 --> <version value="1" /> <!-- 在列表中使用映射标签定义您的模型,LitePal将会 为每个映射类创建表。 支持的字段 模型中定义的将被映射成列。 --> <list></list> <!-- 定义.db文件应该在哪里。 “internal”表示.db文件 将存储在数据库文件夹的内部存储器中 一个可以访问。 “external”表示.db文件将被存储在路径到主外部存储设备上的目录, 该应用程序可以放置它拥有哪些所有人的持久文件可以访问。 “内部”将作为默认值。 <storage value="external" /> --> </litepal>
这里需要注意的是第一点,关于对AS不太熟悉的小伙伴,可能对Assets文件的创建有些迷惑。
另外创建xml文件的时候,会发现文件跑到了res文件下面去了。这里直接选择创建file就好了,不然AS会默认将你创建的文件放到res下面去。当然关于为什么需要这样,初学的同志们暂时不用知道,当你以后做一些混合开发的时候会了解到的。
这个xml文件的用处很明确
dbname配置项目的数据库名称。版本配置数据库的版本。 每次你想升级数据库,加上这里的值。
列表配置映射类。
存储配置应存储数据库文件的位置。 内部和外部是唯一有效的选项。
3.清单文件添加内容
这我们进行很多操作的时候,都需要传递Context作为参数,这是很烦躁的一件事情,LitePal也帮我们解决掉了这个事情。只需要向像下面这么做。<manifest> <application android:name="org.litepal.LitePalApplication" ... > ... </application> </manifest>
添加一句话到application标签中,如果自己有Application了那么清单文件中肯定是注册的自己的,不过可以选择继承,或者不要忘记初始化。
public class MyOwnApplication extends AnotherApplication {
@Override public void onCreate() { super.onCreate(); // 初始化 LitePal.initialize(this); } ... }
上面都是一些基本的配置操作,做好了基本的配置操作后就可以开始去使用了。
创建表
1.直接一个java类,并且继承DataSupport
public class Student extends DataSupport {// 继承自DataSupport private int age; private float height; @Column(unique = true, defaultValue = "unKnow")// 唯一和默认值为unKnow private String name; @Column(ignore = true)// 忽略 private String other; public int getAge() { return age; } public void setAge(int age) { this.age = age; } public float getHeight() { return height; } public void setHeight(float height) { this.height = height; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getOther() { return other; } public void setOther(String other) { this.other = other; } }
将该类的完整类名添加到litePal.xml中的List标签中去。
<list> <mapping class = 完整包名.Student"></mapping> </list>
如果这个时候你再回想SQLiteDataBase,应该就会很舒服了,SQLiteDataBase繁琐的数据库语句,和参数列表居多的方法得到解决了。
我们没有添加id列,但是LitePal依旧为我们以id作为了主键,并且@Column(ignore = true)注解后,info并没有创建到表列中来。
更新表
如果你还记得SQLiteDataBase的更新表操作,那么真的而是太痛苦了,我们不但要更改Version来激活onUpgrade,还得注意表的相关操作。十分的不便。使用LitePal将会方便很多。1.如果是新建表,创建一个新的类,更改一下数据库版本就好。
2.如果对原有表进行一个的修改,那么修改后,更改一下数据库版本就好。
<version value="修改" ></version>
简单粗暴
数据库基本操作-增加
Student student = new Student(); student.setAge(10); // .... student.save();
简单的异常,save方法来源于DataSupport。免去了繁琐的数据库语句、
数据库的基本操作-修改
最常用的方法
就像普通逻辑一样,删除,修改,都离不了查询的操作Student studentToUpdate = DataSupport.find(Student.class, 1); studentToUpdate.setAge(19); // 修改 studentToUpdate.save();// 保存
还提供了
findFirstfindLast
findAll
findBySQL
也可以
int id = 10; Student studentToUpdate = new Student(); studentToUpdate.setAge(19); // 修改 studentToUpdate.update(id);// 更新到id为10
还可以
Student studentToUpdate = new Student(); studentToUpdate.setAge(19); // 修改 studentToUpdate.updateAll("name = ?","xxx");
数据库的基本操作-删除
DataSupport.delete(Student.class,10);// 删除id为10的 DataSupport.deleteAll(Student.clas,"age > ?",19);//删除年纪大于19的
数据库的基本操作-查询
主要是查询所有和模糊查询List<Student> studentList = DataSupport.findAll(Student.class);// 有重载的方法,可以根据id来查询 // 条件查询 并且以名字排序 List<Student> studentList = DataSupport.where("name like ?", "song%").order("age").find(Student.class);
基本操作就是这样,十分强大的一个三方库
相关文章推荐
- Android数据库操作—— GreenDao让你的数据操作更简单
- Android之使用ContentResolver对通信录中的数据进行简单操作
- 简单比较Python的数据持久化操作
- Android开发—数据库应用—访问数据表(SQLite OpenHelper) —添加检索操作(Retrieve)
- Mysql对空间数据库的支持及使用Hibernate Spatial对空间数据的持久化操作
- Android数据库高手秘籍(五)——LitePal的存储操作
- jquery+ajax+C#实现无刷新操作数据库数据的简单实例
- 【Android 开发】:数据存储之 SQLite 数据库操作(三)
- Android 中短信数据库的简单操作
- Android客户端与数据库交互数据的简单学习
- android 数据之数据库操作
- Android 中短信数据库的简单操作
- android 简单的单例模式数据库操作
- Android客户端与数据库交互数据的简单学习
- 升级Android应用程序的思路-对数据库的操作(保留数据)
- Android数据库操作-正确的把数据插入到数据库中
- Android数据库操作-正确的把数据插入到数据库中(2)
- android数据库简单操作
- [iOS]数据持久化-数据库的简单使用