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

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

LitPal介绍

40a78b8b82e846b86c2a81101fd086cb.png

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

34591ef10f5b4df9d2e1b4bc05ef68ca.png

2-2 . 然后点击Finish即可

f7b9f222b98aeeec0be99216dc82bac4.png

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

df0be37bc21eec321378000d8af1e92e.png

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

721667c2423963165226a9b9866ad565.png

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

<?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"?>        

保存的效果图

第一次点击保存

dbfcbc2fd95286001e5a562983ec5482.png

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

b3c044226e35a73388f2f584195157c1.png

查询效果图

9854e6dbab7b0b424f1a3d140355353c.png

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/344029.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PDH光端机常见故障问题解决方法

在数字通信传输系统中&#xff0c;有两种数字光端机系列&#xff0c;一种叫“准同步数字系列光端机”&#xff08;PlesiochronousDigitalHierarchy&#xff09;&#xff0c;简称PDH光端机&#xff1b;另一种叫“同步数字系列光端机”&#xff08;SynchronousDigitalHierarchy&a…

[渝粤教育] 中国地质大学 运筹学 复习题

《运筹学》模拟题 一.单选题 1.线性规划无可行解是指(). A.进基列系数非正 B.有两个相同的最小比值 C.用大M法求解时最优解中还有非零的人工变量 D.可行域无界 2.甲乙两城市之间存在一公路网络为了判断两小时内能否有9000辆车从甲城到乙城应借助(). A.树的生成法 B.求最大流法…

[渝粤教育] 中国地质大学 高等数学(二) 复习题

《高等数学》模拟题 一.单选题 1.设五次方程有五个不同的实根则方程最多有()个实根. A.5 B.4 C.3 D.2 2.函数在点处连续是在该点处可导的() A.必要但不充分条件 B.充分但不必要条件 C.充要条件 D.无关条件 3.设函数则在点处(). A.连续但不可导 B.连续且 C.连续且 D.不连续 …

2006 mysql_MySQL 2006 超时

原因1. MySQL 服务宕了判断是否属于这个原因的方法很简单&#xff0c;执行以下命令&#xff0c;查看mysql的运行时长$ mysql -uroot -p -e "show global status like uptime;"----------------------| Variable_name | Value |----------------------| Uptime | 6892…

安防监控专用工业交换机与普通交换机的区别

工业交换机即工业以太网交换机&#xff0c;它作用是放到路由器后端&#xff0c;来扩展路由器接口&#xff0c;以解决接口不够用的问题。以太网在设计时&#xff0c;由于其采用载波侦听多路复用冲突检测(CSMA/CD机制)&#xff0c;在复杂的工业环境中应用&#xff0c;其可靠性大大…

J2Pay –简介

介绍 J2Pay是用于Java的开源多网关支付库&#xff08;由tranxactive提供&#xff09;。 该库的主要目标是为多个网关同时提供简单通用的请求/响应&#xff0c;并且它不包括阅读网关文档。 如果您尝试在网关上工作&#xff0c;则不必阅读文档&#xff0c;因为该库具有内置的文档…

[渝粤教育] 西南科技大学 民事诉讼法学 在线考试复习资料

民事诉讼法学——在线考试复习资料 一、单选题 1.对不服裁定的上诉案件,法院经审理后作出裁判时( )。 A.应当使用判决书 B.应当使用裁定书 C.应当使用决定书 D.可以使用调解书 2.关于法院调解的效力说法错误的是( )。 A.结束诉讼程序 B.确认当事人之间的权利义务关系 C.当事人…

[渝粤教育] 西南科技大学 程序设计语言VB 在线考试复习资料(1)

程序设计语言VB——在线考试复习资料 一、单选题 1.列表项选择后得到的选中索引是指()。 A.Value B.ListValue C.Index D.ListIndex 2.为了隐藏一个窗体,所使用的方法为( )。 A.Load B.Show C.Hide D.UnLoad 3.在图片框中加载图形(c:\666.jpg)的方法是( )。 A.Loadpicture(“…

电话光端机与PCM复用设备的区别

电话光端机与PCM复用设备&#xff0c;都是使用标准PCM脉冲编码调制技术&#xff0c;具备滤波功能&#xff0c;使语音通话更清晰稳定&#xff01;设备采用专用数字复接芯片&#xff0c;它将设备中的数字逻辑功能几乎全部集成&#xff0c;从而提高了产品的性能&#xff0c;且每路…

[渝粤教育] 西南科技大学 英美文学 在线考试复习资料

英美文学——在线考试复习资料 一、单选题 1.With Howells, James, and Mark Twain active on the literary scene, ( ) became the major trend in American literature in the seventies and eighties of the 19thcentury. A.sentimentalism B.romanticism C.realism …

选择安防交换机时需要避免哪些误区呢?

安防交换机是专为家庭、学校宿舍、办公室、小型监控等简易网络环境设计&#xff0c;是一种非常常用的一种交换机设备&#xff0c;那么我们在采购安防交换机的时候&#xff0c;是否有很多人都存在误区&#xff0c;造成踩雷&#xff0c;选择到劣质设备&#xff0c;可以说花不少的…

lock mysql unlock_MySQL中的lock tables和unlock tables

MySQL允许客户端会话显式地获取表锁&#xff0c;以便与其他会话协作访问表&#xff0c;或者防止其他会话在其需要独占表时使用表。这个能力就是通过LOCK TABLES和UNLOCK TABLES实现的。LOCK TABLES用于显示的获取表锁&#xff0c;UNLOCK TABLES显式释放当前会话持有的任何表锁。…

[渝粤教育] 西南科技大学 货币银行学 在线考试复习资料(1)

货币银行学——在线考试复习资料 一、单选题 1.最严重的恶性通货膨胀的最终结果是( )。 A.突发性的商品抢购 B.挤兑银行 C.货币制度崩溃 D.投机盛行 2.凯恩斯的货币需求函数非常重视( )。 A.恒久收入的作用 B.货币供应量的作用 C.利率的作用 D.汇率的作用 3.下列西方的中央银…

【渝粤教育】电大中专学前儿童健康教育 (4)作业 题库

作业视频教务托管&#xff0c;壹叁路路贰陆陆壹〇肆〇 健康的定义是( )年&#xff0c;世界卫生组织提出的。 A.1948 B.1958 C.1955 D.1945 正确 正确答案&#xff1a;左边查询 学生答案&#xff1a;A 2.健康不仅仅是没有疾病或虚弱&#xff0c;而是包括身体、心理和( )方面的完…

mysql autoenlist默认_mysql连接参数详解

通常数据库连接字符串为&#xff1a;Databasedbname;Data Source192.168.1.1;Port3306;User Idroot;Password****;Charsetutf8;TreatTinyAsBooleanfalse;其中&#xff1a; Server&#xff0c;host, data source, datasource, address, addr, network address: 数据库位置(以上任…

【渝粤教育】电大中专工程图学基础 (3)作业 题库

1基础结构施工图主要是表示建筑物在相对标高正负0.000以下基础结构的图样。 A正确 B错误 正确 正确答案&#xff1a;左边查询 学生答案&#xff1a;A 2建筑工程图是表达建筑工程设计的重要技术资料&#xff0c;是施工的依据。 A正确 B错误 正确 正确答案&#xff1a;左边查询 学…

简而言之SPIFFE

我一直在研究SPIFEE&#xff08;每个人的安全生产身份框架&#xff09;[1]&#xff0c;在这里&#xff0c;我正在按照我现在的理解起草流程&#xff0c;以使任何试图理解流程的人受益。 身份注册表 – SPIRE服务器具有自己的身份注册表&#xff0c;该注册表保留两个粗粒度属性…

【渝粤教育】电大中专建筑材料 (3)作业 题库

1颗粒材料的密度为ρ&#xff0c;表观密度为ρ0&#xff0c;堆积密度为ρ0′&#xff0c;则存在下列关系&#xff08;&#xff09;。 Aρ&#xff1e;ρ0′&#xff1e;ρ0 Bρ&#xff1e;ρ0&#xff1e;ρ0′ Cρ0&#xff1e;ρ&#xff1e;ρ0′ Dρ0′&#xff1e;ρ&…

c++ 多个字符串排序_Python小白干货宝典:sorted()函数:列表元素排序

定义&#xff1a;sorted() 函数对所有可迭代的对象进行排序操作。内建函数 sorted 方法返回的是一个新的 list&#xff0c;而不是在原来的基础上进行的操作。语法&#xff1a;sorted 语法&#xff1a;sorted(iterable, cmpNone, keyNone, reverseFalse)返回值&#xff1a;返回重…

【渝粤教育】电大中专液压与气动技术_1作业 题库

1.液压泵吸油口的真空度由三部分组成&#xff1a;①把油液提升到一定高度所需的压力。产生一定的流速所需的压力。吸油管内压力损失。该说法&#xff08;&#xff09; A.正确 B.错误 正确 正确答案&#xff1a;左边查询 学生答案&#xff1a;A 2.在液压系统的管路中&#xff0c…