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…

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

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

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

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

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

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

简而言之SPIFFE

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

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

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

工业级以太网交换机的使用情况分析

工业级以太网交换机是专门为满足灵活多变的工业应用需求而设计&#xff0c;提供一种高性价比工业以太网通讯解决方案。工业以太网交换机&#xff0c;作为我们广为使用的局域网硬件设备&#xff0c;一直为大家所熟悉。它的普及程度其实是由于以太网的广泛使用&#xff0c;作为今…

工业级以太网交换机产品特征及应用案例介绍

工业以太网交换机&#xff08;简称工业交换机&#xff09;是专门为满足灵活多变的工业应用需求而提供的一种高性价比的组网设备。针对工业控制的实际需求&#xff0c;工业交换机解决了通信实时性、网络可用性能和安全性等技术问题。与普通商业交换机相比&#xff0c;工业交换机…

mysql 热块_MySQL分布式集群之MyCAT(三)rule的分析【转】

首先写在最前面&#xff0c;MyCAT1.4的alpha版本已经发布了&#xff0c;这里面修复了不少的bug&#xff0c;也完善了一细节&#xff0c;之前两篇博客已经做了一些修改---------------------------------------------------------------------------------这才是本体~----------…

工业交换机的四种安装方式图解

工业交换机的作用可以说是非常强大的&#xff0c;其应用十分广泛&#xff0c;在电力、轨道交通、市政、煤矿安全、工厂自动化、水处理系统、城市安防等都有它的身影&#xff0c;为现代生活智能化的发展提供了非常大的助力。但是由于使用环境的原因&#xff0c;在安装工业交换机…

rpm mysql 更改目录_rpm形式安装的MySQL服务 并 修改数据文件目录( red hat)_mysql...

rpm方式安装的mysql服务 并 修改数据文件目录( red hat)卸载mysql1、查找以前是否装有mysql命令&#xff1a;rpm -qa|grep -i mysql可以看到mysql的两个包&#xff1a;mysql-*..*.RHEL**mysqlclient*.RHEL**2、删除mysql删除命令&#xff1a;rpm -e --nodeps 包名( rpm -ev mys…

python参数化建模 书_Python 中如何实现参数化测试?

之前&#xff0c;我曾转过一个单元测试框架系列的文章&#xff0c;里面介绍了 unittest、nose/nose2 与 pytest 这三个最受人欢迎的 Python 测试框架。本文想针对测试中一种很常见的测试场景&#xff0c;即参数化测试&#xff0c;继续聊聊关于测试的话题&#xff0c;并尝试将这…

反模式设计_设计模式:模式或反模式,这就是问题

反模式设计我最近遇到了Wiki页面“ Anti-pattern” &#xff0c;其中包含详尽的反模式列表。 其中一些对我来说很明显。 他们中的一些让我想了一下&#xff0c;其他的让我想了更多。 然后&#xff0c;我开始在页面上查找反模式“ singleton”&#xff0c;但找不到。 &#xff0…

js中的数据类型分为两大类分别是什么_数据类型有这么重要吗?

一个没有得到重视的知识点, 数据类型 每种语言都有自己的数据类型,下面以javascript为例 类型的分类 js的数据类型可以分为 两大类: 1,值类型 (String,Number,undefined,Boolean,null) 2,引入类型(Object,Function,Array) 个人理解也可以把值类型和引入类型分为简单类型和复杂类…

监控系统几种常见的光端机传输方案拓扑图

近几年随着模拟摄像机被网络摄像机以及高清同轴摄像机取代&#xff0c;在光纤传输层&#xff0c;之前使用量比较大的视频光端机也逐渐被光纤收发器、POE交换机、网络交换机等网络光通信设备取代掉。目前市场上音频、数据、开关量、电话、对讲等信号依然可以通过光端机来进行传输…

在等待Jakarta EE时

自甲骨文在JavaOne 2017宣布将Java™EE转移到Eclipse Foundation以来已有一年多了。此后发生了很多事情&#xff1a; Java™EE 8 API和实现项目已在EE4J下建立 。 Eclipse GlassFish 5.1 版本即将发布 。 全新的Jakarta EE规范流程指日可待。 社区显示出有关Jakarta EE技术…

工业交换机外壳选用时有什么要求?

我们一般在选择工业交换机时&#xff0c;更多的是关注工业交换机的温度范围、EMC电磁兼容性、安装方式和电源等&#xff0c;而对于工业交换机的外壳关注比较少&#xff0c;除了一些客户需要防水要求的。接下来就由飞畅科技的小编来为大家介绍一下工业交换机外壳选用有什么要求?…

工业交换机与光纤收发器的区别

工业交换机与光纤收发器效果有什么差异工业交换机与光纤收发器不同的是&#xff0c;光纤收发器其实是点对点的工业工业交换机&#xff0c;光纤收发器只是一种光电转化设备&#xff0c;仅仅只是用于因传输间隔过远而采取的一种延长传输间隔的一种手法&#xff1b;而工业交换机是…

使用React Native和Spring Boot构建一个移动应用

“我喜欢编写身份验证和授权代码。” 〜从来没有Java开发人员。 厌倦了一次又一次地建立相同的登录屏幕&#xff1f; 尝试使用Okta API进行托管身份验证&#xff0c;授权和多因素身份验证。 React Native是使用React构建移动应用程序的框架。 React允许您使用声明式编程风格来…

交换机的特点及工作原理

交换机有多个端口&#xff0c;每个端口都具有桥接功能&#xff0c;可以连接一个局域网或一台高性能服务器或工作站&#xff0c;实际上&#xff0c;交换机有时被称为多端口网桥。那么&#xff0c;对于交换机的特点以及工作原理这块你是否有了解呢&#xff1f;接下来我们就来为大…