Android:日常学习笔记(10)———使用LitePal操作数据库

引入LitePal

什么是LitePal

  LitePal是一款开源的Android数据库框架,采用了对象关系映射(ORM)的模式,将平时开发时最常用的一些数据库功能进行了封装,使得开发者不用编写一行SQL语句就可以完成各种建表、増删改查的操作。并且LitePal很“轻”,jar包大小不到100k,而且近乎零配置,这一点和Hibernate这类的框架有很大区别。目前LitePal的源码已经托管到了GitHub上。

关于对象关系映射:

  我们使用的对象语言是面向对象语言,而使用的数据库则是关系型数据库,将面向对象的语言与面向关系的数据库之间建立一种映射关系,这就是对象关系映射。我们可以不用编写任何SQL语句,而用面向对象的设计思想操作数据库

配置LitePal

  1.添加依赖

  

  2.编写XML配置文件

<?xml version="1.0" encoding="utf-8" ?>
<litepal>
<dbname value="BookStore"></dbname> //数据库名称
<version value="1"></version>     //数据库版本
<list></list>
</litepal> 

 说明:

<dbname>是数据库的名字
<version>是数据库的版本号
<list>是数据库的映射模型(数据库表)
<mapping>是数据库的映射模型的地址(数据库表结构)

  3.配置LitePalApplication

    <application
android:name="org.litepad.LitePalApplication"
.....>
....
</application>

创建和升级数据库

创建数据库及Book表

1.定义JavaBean

public class Book {
private int id;
private String author;
private double price;
private int pages;
private String name; public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} .....
}

2.将Book类添加到映射模型列表中

<?xml version="1.0" encoding="utf-8" ?>
<litepal>
<dbname value="BookStore"></dbname>
<version value="1"></version>
<list>
<mapping class="com.example.zy.dealhelper.database.Book"></mapping>
</list>
</litepal>

3.调用命令创建数据库

public void onClick(View v) {
Connector.getDatabase();
}

4.litePal会自动创建数据库和Mapping对象类的数据表

升级数据库

  LitePal升级数据库非常简单,你完全不需要思考任何的逻辑,只需要修改你想改的任何内容,然后将版本后递增即可。比如我们要往Book表中添加一列,如press(出版社),直接在JavaBean中添加即可。

public class Book {
private int id;
private String author;
private double price;
private int pages;
private String name;
private String press;//出版社 public String getPress() {
return press;
} public void setPress(String press) {
this.press =
press;
}

......
}

或者想多创建一张表,你也只需要再写一个JavaBean类就好。

public class Catagory {
private int id;
private String categoryName; public int getId() {
return id;
} public void setId(int id) {
this.id = id;
}
  ......
}

别忘了最后再LitePal的配置文件中,加入mapping和更新版本号

增删改查

添加数据

使用LitePal添加数据异常简单:

   我们只需要创建出模型类并将数据设置好,调用save()方法即可。

前提:

  要执行CURD操作的数据表必须继承自DataSupport

  

实例:

            public void onClick(View v) {
Book book =new Book();
book.setName("The Da Vinci Code");
book.setAuthor("Dan Brown");
book.setPages(454);
book.setPrice(16.96);
book.setPress("Unknow");
book.save(); //只需要调用继承方法,save()即可
}

更新数据

对已存储对象重新设值:

  

条件匹配:

  

  切记如果不指定条件会更新所有记录的

删除数据

DataSupport.deleteAll(Book.class,"price < ?","15")

查询数据

简单查询:

//查找某表的所有数据
List<Book> books =DataSupport.findAll(Book.class);
//第一条数据
Book first =DataSupport.findFirst(Book.class);
//最后一条数据
Book last =DataSupport.findLast(Book.class);

连缀查询:

关于ADB启动错误的解决方案:

1、CMD命令窗口输入:adb nodaemon server 。然后就会提示你哪个端口被占用了。

2、输入netstat -ano | findstr "5037" 。然后会弹出提示告诉你哪些进程占用了该端口,记住非0地址的后面的数字

3、打开任务管理器,点击“进程“,“查看”-“选择列”,勾选PID

4、查找第2步中看到的数字PID,然后结束相关进程,即可

  

Android:日常学习笔记(10)———使用LitePal操作数据库的更多相关文章

  1. Android:日常学习笔记(9)———探究持久化技术

    Android:日常学习笔记(9)———探究持久化技术 引入持久化技术 什么是持久化技术 持久化技术就是指将那些内存中的瞬时数据保存到存储设备中,保证即使在手机或电脑关机的情况下,这些数据仍然不会丢失 ...

  2. Android:日常学习笔记(8)———探究UI开发(3)

    Android:日常学习笔记(8)———探究UI开发(3) 详解四种基本布局 前言 布局定义用户界面的视觉结构,如Activity或应用小部件的 UI.您可以通过两种方式声明布局: 在 XML 中声明 ...

  3. Android:日常学习笔记(9)———探究广播机制

    Android:日常学习笔记(9)———探究广播机制 引入广播机制 Andorid广播机制 广播是任何应用均可接收的消息.系统将针对系统事件(例如:系统启动或设备开始充电时)传递各种广播.通过将 In ...

  4. Android:日常学习笔记(8)———开发微信聊天界面

    Android:日常学习笔记(8)———开发微信聊天界面 只做Nine-Patch图片 Nine-Patch是一种被特殊处理过的PNG图片,能够指定哪些区域可以被拉升,哪些区域不可以.

  5. Android:日常学习笔记(8)———探究UI开发(5)

    Android:日常学习笔记(8)———探究UI开发(5) ListView控件的使用 ListView概述 A view that shows items in a vertically scrol ...

  6. Android:日常学习笔记(7)———探究UI开发(4)

    Android:日常学习笔记(7)———探究UI开发(4) UI概述  View 和 ViewGrou Android 应用中的所有用户界面元素都是使用 View 和 ViewGroup 对象构建而成 ...

  7. Android:日常学习笔记(8)———探究UI开发(2)

    Android:日常学习笔记(8)———探究UI开发(2) 对话框 说明: 对话框是提示用户作出决定或输入额外信息的小窗口. 对话框不会填充屏幕,通常用于需要用户采取行动才能继续执行的模式事件. 提示 ...

  8. Android:日常学习笔记(7)———探究UI开发(1)

    Android:日常学习笔记(7)———探究UI开发(1) 常用控件的使用方法 TextView 说明:TextView是安卓中最为简单的一个控件,常用来在界面上显示一段文本信息. 代码: <T ...

  9. Android:日常学习笔记(6)——探究活动(4)

    Android:日常学习笔记(6)——探究活动(4) 活动的启动模式 standard模式 standard是活动默认的启动模式,在不进行显示定义的情况下,所有活动都会自动使用这种启动模式. stan ...

随机推荐

  1. 设计模式——浅复制VS深复制

    背景 在学习原型模式的时候,採用了一个差别与其它模式的新方法.採用了"克隆(Clone)方法.通过实现ICloneable接口中的Clone()方法来达到克隆的目的. 代码实现过程中,存在了 ...

  2. R 介绍

    R定义:一个能够自由有效地用于统计计算和绘图的语言和环境,它提供了广泛的统计分析和绘图技术. R语言的使用很大程度上可以说是借助各种各种各样R包的辅助,从某种程度上说,运用R的插件来满足不同的需求. ...

  3. SQL - 获取多机构最近相同节点

    -- Create Branches Table create table Branches ( BranchCode ) ,BranchName ) ,L0BCode ) ,L1BCode ) ,L ...

  4. 使用 mybatis + flying-0.9.4 的电商后端

    代码地址如下:http://www.demodashi.com/demo/12779.html mybatis.flying - 阳春 (Sunny-Spring) 项目介绍请见 flying-doc ...

  5. 基于Android的rgb七彩环颜色采集器

    代码地址如下:http://www.demodashi.com/demo/11892.html 一.前言. 在大学期间,看到这个rgb灯,蛮好奇的,这么漂亮的颜色采集,并且可以同步到设备rbg灯颜色, ...

  6. 【BZOJ4008】【HNOI2015】亚瑟王 概率DP

    链接: #include <stdio.h> int main() { puts("转载请注明出处[辗转山河弋流歌 by 空灰冰魂]谢谢"); puts("网 ...

  7. JAVA问题之泛型数组

      java中类似下面的代码编译器是会报错的: LinkedList<LinkedList<String>>[] li=new LinkedList<LinkedList ...

  8. u-boot中断功能初步分析之---------按键中断

    作者:彭东林 邮箱:pengdonglin137@163.com QQ: 405728433 以前一直有个疑问,在U-boot下到底能不能使用中断,为了验证这个问题,于是乎,昨天晚上我在自己的 TQ2 ...

  9. CSDN开源夏令营 基于Compiz的switcher插件设计与实现之前期准备 git的简单使用

    因为项目的代码须要上传到git上.就须要学习一下git的使用了. 我初步接触了一下git,准备用此帖来记录git的学习,此帖会随着我对git了解的深入动态更新. 一.GIT的介绍 1.概述:git是一 ...

  10. ubuntu 下使用polipo转换HTTP代理

    ***默认是用Socks5协议的,对于Terminal的get,wget等走http协议的地方是无能为力的,所以需要转换成http代理,加强通用性,这里使用的转换方法是基于Polipo的. sudo ...