在Android开发中,前端开发很多情况数据都是从服务器端获取的,使用本地数据库的情况可能不会太常见。有一些需要本地保存的配置数据,也是使用Hawk框架等本地缓存框架进行保存。但是对于如果是一些需要本地保存的,又是大量的数据时,那可能就需要用到Android自己本身的数据库,如果使用本身的框架操作数据库,步骤会比较繁琐。今天介绍的LitePal框架,可以大大减少操作数据库的代码量,也更方便简洁。

LitPal介绍

LitePal是一个开源的Android库,目标是让Android开发者更加方便快捷的进行Android本地数据库的开发。

LitePal 的特性

  • 使用对象关系映射(ORM)模式。
  • 几乎没有配置(只有一个配置文件和很少的属性)。
  • 自动维护所有表。创建、修改或删除表)。
  • 多数据库支持。
  • 封装api以避免编写SQL语句。
  • 非常流畅的查询API。
  • 使用SQL的另一种选择,但是比原来的api更简单更好。

LitePal使用

1.引入LitePal库

打开build.gradle文件,编译dependencies 节点,增加implementation 'org.litepal.guolindev:core:3.2.2'

dependencies {    implementation fileTree(dir: "libs", include: ["*.jar"])    implementation 'androidx.appcompat:appcompat:1.2.0'    implementation 'androidx.constraintlayout:constraintlayout:2.0.1'    testImplementation 'junit:junit:4.12'    androidTestImplementation 'androidx.test.ext:junit:1.1.2'    androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'    //引入LitePal库    implementation 'org.litepal.guolindev:core:3.2.2'}

2.在assets资源文件夹中增加litepal.xml文件

如果是新建的项目,没有asset文件夹,则需要新建一个。如果是已经存在asset文件夹,则忽略这一步操作。

2-1.找到app文件夹,点右键 New > Folder > Assets Folder

2-2 . 然后点击Finish即可

新建好Assets文件夹后,找到assets 文件夹,右键 New > File

新建一个名为litepal.xml的文件。

然后复制官方的代码到这个文件中即可

<?xml version="1.0" encoding="utf-8"?>

这是唯一的配置文件,属性也很简单。

  • dbname 为配置项目的数据库名
  • version 为数据库的版本,如果数据库有变化,都要把这个值进行修改喔,不然修改不会起作用的
  • list 为数据库的映射类
  • storage 配置存储数据库文件的位置

3.配置LitePalApplication

如果是项目中有自己的Application类,就直接在Application类中对LitePal进行初始化即可,

例如

public class MyApplication extends Application {    @Override    public void onCreate() {        super.onCreate();        LitePal.initialize(this);    }    ...}

如果不想自己创建一个新的Application类,也可以用框架中提供的org.litepal.LitePalApplication类,修改AndroidManifest.xml文件中的配置

<?xml version="1.0" encoding="utf-8"?>

重点是android:name="org.litepal.LitePalApplication"

4.创建数据库的表

在LitePal中创建数据库的表其实就是创建类

例如我创建了一个User类,其实就是创建了一个User表

public class User extends LitePalSupport {    @Column(unique = true)    private String account;    private String password;    private String nickName;    private int age;  //...忽略set和get方法}

可以通过注释对字段的属性进行配置,例如@Column(unique = true)就是表示这个字段是要唯一,不能重复。

创建好类后,我们需要把这个类添加到LitePal配置文件中

到此我们的数据库配置和建表基本是完成了

5.开始进行对数据进行操作

Activity类

public class MainActivity extends AppCompatActivity {    EditText mEtAccount;    EditText mEtPassword;    EditText mEtNickName;    EditText mEtAge;    EditText mEtCheckAccount;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        mEtAccount = findViewById(R.id.et_account);        mEtPassword = findViewById(R.id.et_password);        mEtNickName = findViewById(R.id.et_nick_name);        mEtAge = findViewById(R.id.et_age);        mEtCheckAccount = findViewById(R.id.et_check_account);    }    public void onSave(View view) {        String account = mEtAccount.getText().toString().trim();        String password = mEtPassword.getText().toString().trim();        String nickName = mEtNickName.getText().toString().trim();        int age = Integer.parseInt(mEtAge.getText().toString().trim());        User user = new User();        user.setAccount(account);        user.setPassword(password);        user.setNickName(nickName);        user.setAge(age);        if (user.save()) {            Toast.makeText(this, "保存成功", Toast.LENGTH_LONG);        } else {            Toast.makeText(this, "保存成功", Toast.LENGTH_LONG);        }    }    public void onCheck(View view) {        String checkAccount = mEtCheckAccount.getText().toString().trim();        List users = LitePal.where("account=?", checkAccount).find(User.class);        if (users != null && users.size() > 0) {            Toast.makeText(this, "查询成功,结果:" + users.get(0).toString(), Toast.LENGTH_LONG);        } else {            Toast.makeText(this, "查询成功,结果为空", Toast.LENGTH_LONG);        }    }}

布局文件

<?xml version="1.0" encoding="utf-8"?>        

保存的效果图

第一次点击保存

第二次点击保存,保存失败是因为我们设置了账号字段是唯一的,保存了之后,再保存同样的账号就无法保存了

查询效果图

到此,我们基本可以使用LitePal对数据进行保存和查询了。LitePal除了这个还提供了很多其他的用法,这个需要我们继续深入探索。

android 保存文件_Android 数据库操作框架LitePal使用介绍(一)相关推荐

  1. Android之单元测试及数据库操作,android的单元测试

    1.新建android Test project 2. 选择针对测试的项目 3.新建类继承AndroidTestCase即可: package com.howlaa.sms.test; import ...

  2. 安卓本地轻量级数据库操作框架 greenDao3.2.2 详细教程附带Demo①——集成环境,开辟难题。

    欢迎安卓本地轻量级数据库操作框架 greenDao3.2.2 学习之旅. 本套框架博客系列博客目录: 第一篇:认识 greenDao3.2.2 框架,集成环境,开辟难题. 第二篇:简单的进行 增.删. ...

  3. android.mk遍历子目录,android 保存文件的各种目录列表

    一般的,我们可以通过context和Environment来获取要保存文件的目录 ($rootDir) +- /data -> Environment.getDataDirectory() | ...

  4. android保存文件到手机内存

    2019独角兽企业重金招聘Python工程师标准>>> 首先要指定文件保存的位置,在Java中,我们可以直接使用 Filefile=new File("info.txt&q ...

  5. android存到手机内存,android保存文件到手机内存

    首先要指定文件保存的位置,在Java中,我们可以直接使用 Filefile=new File("info.txt"),但是在Android中,使用这个路径文件会被保存到data/a ...

  6. 简单的Android对文件进行读写操作

    环境: 1.系统:window7 2.Android版本:2.2 3.eclipse3.5.2(伽利略) 一.基本的流程图(写入文件)  二.模拟器运行界面  1.主界面 2.保存(不符合条件) 3. ...

  7. android存储到sd卡中,android保存文件到SD卡【文件存储】

    sd卡用于保存大文件如视频,音频,大文档等 package cn.itcast.files; import cn.itcast.service.FileService; import android. ...

  8. xamarin和mysql_Xamarin.Android 使用 SQLiteOpenHelper 进行数据库操作

    一.前言 在手机中进行网络连接不仅是耗时也是耗电的,而耗电却是致命的.所以我们就需要数据库帮助我们存储离线数据,以便在用户未使用网络的情况下也可以能够使用应用的部分功能,而在需要网络连接的功能上采用提 ...

  9. emlog mysql文件,emlog数据库操作类

    /** * 数据库操作类 * * @copyright (c) Emlog All Rights Reserved */ /** * MYSQL数据操方法封装类 */ class MySql { /* ...

最新文章

  1. 生成树、最小生成树的一些性质以及邻域的概念
  2. PNN神经网络预测类别的例子
  3. CSS——Position定位
  4. 老陈学 C++ 序列之二: 友元函数
  5. mysql数字前面有0_Mysql中前边有0的数据,0会被舍去的问题
  6. 云联惠认证时间_云联惠强制关闭真正原因是什么?
  7. ARM Linux.2.6.34内核移植
  8. day18__文件操作
  9. mysql查询时间出来数字_mysql查询时间出来数字的解决方法
  10. 【LeetCode】剑指 Offer 14. 剪绳子
  11. Reactjs项目创建
  12. 微信支付对账单的详细说明
  13. 计算机语言中str是什么意思,vb中str什么意思
  14. Python每天练习——小程序006
  15. AcWing 342. 道路与航线 (双端队列广搜问题,SPFA)
  16. 操作电脑时间长,眼睛疲劳怎么办?
  17. Linux中常见文件类型及文件系统类型
  18. 2022年零基础自学网络安全/Web安全,看这一篇就够了
  19. selenium 模拟人工登录 高德开发者平台(python)
  20. echarts案例大全,echarts的Demo网站有哪些

热门文章

  1. 揭示垃圾收集暂停的时间长度
  2. 编写干净的测试–从配置开始
  3. 将社交登录添加到Spring MVC Web应用程序:配置
  4. Spring Social入门
  5. JUnit和Hamcrest:在assertEquals上进行改进
  6. Java Lambda语法替代
  7. 计算机维修与维护入门,计算机组装与维护基础知识
  8. 三菱q系列plc连接电脑步骤_三菱Q系列PLC与三菱变频器的CC-link通讯技术(我的学习笔记)...
  9. python 图片识别_python识别图片文字
  10. Linux 命令之 ps -- 显示进程状态/查看进程信息