安卓用SQLite数据库存储数据

什么是SQLite?

SQLite是安卓中的轻量级内置数据库,不需要设置用户名和密码就可以使用。资源占用较少,运算速度也比较快。

SQLite支持:null(空)、integer(整形)、real(小数)、text(文本)|String(文本)|varchar(文本)、blob(二进制)这5种数据类型。

如何使用SQLite数据库?

在这之前先介绍一下SQLiteOpenHelper类。该类是安卓为了让用户方便管理数据库而提供的一个数据库帮助类。我们需要借助这个类来实现对数据的创建(也就是用户需要自己创建一个类来继承SQLiteOpenHelper类。比如自己创建类:MyDBOpenHelper)。

第一步:创建一个MyDBOpenHelper类继承SQLiteOpenHelper类。

1.在安卓目录模式下,找到包该APP的包,接着右键选择新建,接着创建一个包(比如:DB)。

 

2.选中DB包,接着右击选择新建类,创建一个 MyDBOpenHelper类。

 

3.在MyDBOpenHelper类中写继承SQLiteOpenHelper类。

4.将鼠标放在红色波浪线上,按Alt+Enter组合键解决该报错问题(由于SQLiteOpenHelper类是抽象类,所以需要在该类添加两个抽象方法)。

 

 

5.将鼠标继续放在红色波浪线上,按Alt+Enter组合键解决(添加帮助类的构造方法,选择参数少的第一种)。 

 

 该种构造方法的参数:参数1为Context;参数2为数据库名;参数3为在查询数据的时候返回自定义的Cursor,一般都是传入null;参数4为数据库版本号。

二、定义数据库名称和数据库版本号。

在实际的过程中只保留第一个参数,后3个参数删除,并定义数据库名称和版本,修改一下代码即可,具体如下:

 这里定义了数据库名为:student.db,数据库版本为1。

在安卓中数据库的保存位置在:/data/data/工程的包名/databases/

三、定义建表语句。(创建数据表)

1.找到onCreate方法

 2.在onCreate方法中写创建数据表的语句。

在此方法中调用SQLiteDatabase的execSQL()方法去执行创建数据表。

如创建学生信息表stu_info 表中包含字段名(列名):学号 姓名 性别

sqLiteDatabase.execSQL("create table stu_info(id INTEGER primary key autoincrement,sno varchar(10),name varchar(10),sex varchar(10))");

 

 四、添加数据(insert方法)。

这里我们借助SQLiteDatabase对象来对数据库进行增、删、查、改。

大致分为六步:

//1.定义数据库帮助类对象
//2.定义一个可以操作数据库的对象
//3.实例化数据库帮助类
//4.打开数据库的写权限
//5.创建一个Content Values对象并通过put方法来保存一行数据(其中put方法两个参数:字段名,值)
//6.使用insert方法实现添加数据

inset()方法语法:

insert(“表名”,“在没指定添加数据的情况下将为空的列自动设置为NULL”,“Content Values对象”)

其中Content Values对象用来保存表中一行数据。第二个参数一般用不到设置为null即可。

综上所述,可以以一下代码来表示这六步(这里是在主页面类):

上面在主页面的代码表示一运行APP就会向数据库中添加信息。put方法中写的字段的值是从控件中获取的(这里没有写控件所以会报错)。具体使用方法可以根据这个类推。比如点击一个按钮时执行添加向数据库中添加数据。

五、删除数据(delete方法)。

这里我们借助SQLiteDatabase对象来对数据库进行增、删、查、改。

大致分为五步:

//1.定义数据库帮助类对象
//2.定义一个可以操作数据库的对象
//3.实例化数据库帮助类
//4.打开数据库的写权限
//5.使用delete方法实现删除数据

delete()方法语法:

delete(“表名”,“条件=?”,“?占位符所代表的条件的取值”)

例如删除id字段等于12的一行数据:delete(“表名”,“id=?”,new String[]{"12"})

综上所述,可以以一下代码来表示这五步(这里是在主页面类):

上面在主页面的代码表示一运行APP就会删除数据库中id=12的数据。具体使用方法可以根据这个类推。比如点击一个按钮时删除数据。或者这个条件的值(这里指12)可以来源于输入框控件等。

六、查询数据(rawQuery方法)。

这里我们借助SQLiteDatabase对象来对数据库进行增、删、查、改。

大致分为五步:

//1.定义数据库帮助类对象
//2.定义一个可以操作数据库的对象
//3.实例化数据库帮助类
//4.打开数据库的读权限
//5.使用rawQuery方法实现查询数据并通过moveToNext()遍历结果后取出数据,最后通过set方式给用于显示查询结果的控件赋值显示出来。

rawQuery方法语法:

rawQuery(“查询语句……where=?”,“?占位符所代表的条件的取值”)

例如查询id字段等于12的一行数据:rawQuery(“select * from stu_info where id=?”,new String[]{"12"})

综上所述,可以以一下代码来表示这五步(这里是在主页面类):

 上面在主页面的代码表示一运行APP就查询数据库中id=12的数据。具体使用方法可以根据这个类推。比如点击一个按钮时查询数据。或者这个条件的值(这里指12)可以来源于输入框控件等。(红色波浪线报错用Alt+Enter解决即可)

七、修改数据(update方法)。

这里我们借助SQLiteDatabase对象来对数据库进行增、删、查、改。

大致分为五步:

//1.定义数据库帮助类对象
//2.定义一个可以操作数据库的对象
//3.实例化数据库帮助类
//4.打开数据库的写权限
//5.创建一个Content Values对象并通过put方法来保存一行数据(其中put方法两个参数:字段名,值)
//6.使用updata方法实现添加数据

updata方法语法:
updata(“表名”,Content Values对象,“条件=?”,“?占位符所代表的条件的取值”)

例如修改name字段等于张三的一行数据:updata(“表名”,Content Values对象,“name=?”,new String[]{"张三"})

综上所述,可以以一下代码来表示这六步(这里是在主页面类):

 上面在主页面的代码表示一运行APP就修改数据库中name为张三的性别为控件获取来的值。具体使用方法可以根据这个类推。比如点击一个按钮时修改数据。

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

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

相关文章

Linux基本指令(前篇)

目录 1.ls指令 2.pwd指令 3.cd 指令 4.touch指令 5.mkdir指令(重要) 6.rmdir指令 && rm 指令(重要) 7.man指令(重要) 1.ls指令 ls 选项 目录或文件 对于目录,该命令列出该目录下的所…

【SpringCloud】微服务的扩展性及其与 SOA 的区别

一、微服务的扩展性 由上一篇文章(没看过的可点击传送阅读)可知, 微服务具有极强的可扩展性,这些扩展性包含以下几个方面: 性能可扩展:性能无法完全实现线性扩展,但要尽量使用具有并发性和异步…

OD机考真题搜集:查字典

题目 输入一个单词前缀和一个字典,输出包含该前缀的单词 输入 单词前缀+字典长度+字典字典是一个有序单词数组 输入输出都是小写 输出 所有包含该前缀的单词,多个单词换行输出若没有则返回-1 示例 1 输入: b 3 a b c 输出: b示例 2 输入: abc 4 a ab abc abcd 输出: …

4.28每日一题(二重积分比较大小:被积函数的大小、正负性、积分区间奇偶性)

一般比较大小的题目我们不需要把结果全部计算出来 ,而是通过奇偶性或者被积函数的大小或大于0、等于0、小于0等方法判断比较

【Android Gradle】之Gradle入门及 wrapper 生成(一)

😄作者简介: 小曾同学.com,一个致力于测试开发的博主⛽️,主要职责:测试开发、CI/CD 如果文章知识点有错误的地方,还请大家指正,让我们一起学习,一起进步。 😊 座右铭:不…

机器学习-激活函数的直观理解

机器学习-激活函数的直观理解 在机器学习中,激活函数(Activation Function)是用于引入非线性特性的一种函数,它在神经网络的每个神经元上被应用。 如果不使用任何的激活函数,那么神经元的响应就是wxb,相当…

Vue3+vite 处理静态资源,解决服务器不显示动态循环img问题

注意: vue2webpack中,通常使用require来动态渲染静态资源。但在vue3vite中,不支持require语法,因此使用require会报undefined,所以官方推荐使用import来动态渲染静态资源。 实现方式动态渲染静态资源 vue2webpack 使…

JVM的小知识总结

加载时jvm做了这三件事: 1)通过一个类的全限定名来获取该类的二进制字节流 什么是全限定类名? 就是类名全称,带包路径的用点隔开,例如: java.lang.String。 即全限定名 包名类型 非限定类名也叫短名,就…

不会做UI自动化测试?一起设计框架再实践吧

目的 相信做过测试的同学都听说过自动化测试,而UI自动化无论何时对测试来说都是比较吸引人的存在。 相较于接口自动化来说它可以最大程度的模拟真实用户的日常操作与特定业务场景的模拟,那么存在即合理,自动化UI测试自然也是广大测试同学职…

Docker Swarm总结+基础、集群搭建维护、安全以及集群容灾(1/3)

博主介绍:Java领域优质创作者,博客之星城市赛道TOP20、专注于前端流行技术框架、Java后端技术领域、项目实战运维以及GIS地理信息领域。 🍅文末获取源码下载地址🍅 👇🏻 精彩专栏推荐订阅👇🏻…

css中flex两列布局(一列自适应其他固定)

问题 最近写一个布局的时候,遇到一个问题。如下图的布局。在没有图片的时候布局是正常的,如果有图片且设置了width:100%;height: 100%; 则会出现图片将自适应布局撑开的情况。 我的解决方式是让图片不缩放,图片外层再添加一个div元素。形如…

Locust AI 例子

Locust AI 例子 以下是一个关于Locust AI的例子: 假设我们要对一个Web API进行性能测试。首先,我们需要安装Locust并编写测试代码。以下是一个简单的代码示例: python from locust import HttpUser, task, betweenclass MyUser(HttpUser):…

MySQL介绍及安装

MySQL介绍及安装 一、MySQL概述 1、关系型数据库与非关系型数据库 RDBMS(relational database management system),既关系型数据库管理系统。 简单来说,关系型数据库,是指采用了二维表格来组织数据的数据库。 扩展…

Calling COBOL Modules 调用COBOL模块

Calling COBOL Modules 调用COBOL模块 Using the PeopleCode RemoteCall function, you can call COBOL modules from a PeopleCode action. This option supports existing Application Engine programs that call COBOL modules. You also can use it to upgrade Applicati…

vue 中如何编写可复用的组件

在Vue中编写可复用的组件的关键是遵循一些最佳实践和设计原则。以下是一些编写可复用组件的技巧: 遵循 Vue 的官方设计原则:Vue 的设计原则包括组件化、数据驱动、可组合性和简洁性。这些原则可以帮助你编写可复用和可维护的组件。命名规范:…

字符串转换成十进制整数

编程要求 输入一个以#结束的字符串,本题要求滤去所有的非十六进制字符(不分大小写),组成一个新的表示十六进制数字的字符串,然后将其转换为十进制数后输出。如果在第一个十六进制字符之前存在字符“-”,则…

Android修行手册-一个滑动旋转的弧形菜单

Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总游戏脚本-辅助自动化Android控件全解手册再战Android系列

springboot3.x+springsecurity6.x多种方式登录验证

最新的 Spring Security 5.7 及以上版本,更新了不少内容,之前的 WebSecurityConfigurerAdapter 已经被废弃了,而且,要同时实现用户名密码登录、手机验证码登录、邮箱、微信小程序等登录方式,跟之前的配置方式都会有所不…

Using the File Class使用文件类

Using the File Class 使用文件类 The file layout class enables you to perform file input and output operations with Application Engine using PeopleCode. A file object enables you to open a file (for reading or writing), read data from a file, or write da…

【Qt绘制仪表盘】

目的 使用Qt的绘制事件绘制一个仪表盘 思路 需要创建一个带绘制事件的控件重写绘制事件显示 实现 以下是实现代码&#xff0c;可复制到程序到&#xff0c;直接运行。 .h // GaugeWidget.h #ifndef GAUGEWIDGET_H #define GAUGEWIDGET_H#include <QWidget>class Ga…