安卓用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为张三的性别为控件获取来的值。具体使用方法可以根据这个类推。比如点击一个按钮时修改数据。
相关文章:
安卓用SQLite数据库存储数据
什么是SQLite? SQLite是安卓中的轻量级内置数据库,不需要设置用户名和密码就可以使用。资源占用较少,运算速度也比较快。 SQLite支持:null(空)、integer(整形)、real(小…...
MMFN-AL
MMFN means ‘multi-modal fusion network’ 辅助信息 作者未提供代码...
7、独立按键控制LED状态
按键的抖动 对于机械开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个开关在闭合时不回马上稳定地接通,在断开时也不会一下子断开,所以在开关闭合及断开的瞬间会伴随一连串的抖动 #include <REGX52.H…...
香蕉派BPI-M4 Zero单板计算机采用全志H618,板载2GRAM内存
Banana Pi BPI-M4 Zero 香蕉派 BPI-M4 Zero是BPI-M2 Zero的最新升级版本。它在性能上有很大的提高。主控芯片升级为全志科技H618 四核A53, CPU主频提升25%。内存升级为2G LPDDR4,板载8G eMMC存储。它支持5G WiFi 和蓝牙, USB接口也升级为type-C。 它具有与树莓派 …...
微信小程序内部跳到外部小程序
要在微信小程序中跳转到外部小程序,可以使用wx.navigateToMiniProgram函数。以下是一个示例: wx.navigateToMiniProgram({appId: 外部小程序的appId,path: 外部小程序的路径,extraData: {id: xxx},success(res) {// 跳转成功} })在这个示例中࿰…...
Spring Boot中设置文件上传大小限制
在Spring Boot中,可以通过以下步骤来设置上传文件的大小: 在application.properties或application.yml文件中,添加以下配置: 对于application.properties: spring.servlet.multipart.max-file-size128MB spring.se…...
8、独立按键控制LED显示二进制
独立按键控制LED显示二进制 #include <REGX52.H>void Delay(unsigned int xms) //12.000MHz {unsigned char i, j;while(xms--){i 2;j 239;do{while (--j);} while (--i);} }void main() {//数据类型刚好是8位与51单片机IO口寄存器位数相同(默认高电平&am…...
命名空间、字符串、布尔类型、nullptr、类型推导
面向过程语言:C ——> 重视求解过程 面向对象语言:C ——> 重视求解的方法 面向对象的三大特征:封装、继承和多态 C 和 C 在语法上的区别 1、命名空间(用于解决命名冲突问题) 2、函数重载和运算符重载…...
力控软件与多台PLC之间ModbusTCP/IP无线通信
Modbus TCP/IP 是对成熟的 Modbus 协议的改编, 因其开放性、简单性和广泛接受性而在工业自动化系统中发挥着举足轻重的作用。它作为连接各种工业设备的通用通信协议,包括可编程逻辑控制器 (PLC)、远程终端单元 (RTU) 和传感器。它提供标准化的 TCP 接口&…...
第96步 深度学习图像目标检测:FCOS建模
基于WIN10的64位系统演示 一、写在前面 本期开始,我们继续学习深度学习图像目标检测系列,FCOS(Fully Convolutional One-Stage Object Detection)模型。 二、FCOS简介 FCOS(Fully Convolutional One-Stage Object D…...
常用的git命令完整详细109条
Git是一个很强大的分布式版本控制系统,以下是一些常用的git命令: git init:在当前目录下创建一个新的Git仓库。git add 文件名:将指定的文件添加到暂存区,准备提交。git commit -m “备注”:提交暂存区的文…...
Ansible的错误处理
环境 管理节点:Ubuntu 22.04控制节点:CentOS 8Ansible:2.15.6 ignore_errors 使用 ignore_errors: true 来让Ansible忽略错误(运行结果是 failed ): --- - hosts: alltasks:- name: task1shell: cat /t…...
MySQL-04-InnoDB存储引擎锁和加锁分析
Latch一般称为闩锁(轻量级锁),因为其要求锁定的时间必须非常短。在InnoDB存储引擎中,latch又分为mutex(互斥量)和rwlock(读写锁)。 Lock的对象是事务,用来锁定的是…...
tcp/ip协议2实现的插图,数据结构2 (19 - 章)
(68) 68 十九1 选路请求与消息 函rtalloc,rtalloc1,rtfree (69) 69 十九2 选路请求与消息 函rtrequest (70)...
2023.11.22 -数据仓库的概念和发展
目录 https://blog.csdn.net/m0_49956154/article/details/134320307?spm1001.2014.3001.5501 1经典传统数仓架构 2离线大数据数仓架构 3数据仓库三层 数据运营层,源数据层(ODS)(Operational Data Store) 数据仓库层&#…...
java springboot测试类虚拟MVC环境 匹配请求头指定key与预期值是否相同
上文 java springboot测试类虚拟MVC环境 匹配返回值与预期内容是否相同 (JSON数据格式) 版 中 我们展示 json匹配内容的方式 那么 本文我们来看看Content-Type属性的匹配方式 首先 我们从返回体可以看出 Content-Type 在请求头信息 Headers 中 我们直接将测试类代码更改如下 …...
Rust生态系统:探索常用的库和框架
大家好!我是lincyang。 今天我们来探索Rust的生态系统,特别是其中的一些常用库和框架。 Rust生态系统虽然相比于一些更成熟的语言还在成长阶段,但已经有很多强大的工具和库支持各种应用的开发。 常用的Rust库和框架 Serde:一个…...
01-了解微服务架构的演变过程和微服务技术栈
微服务 微服务架构演变 单体架构:将业务的所有功能集中在一个项目中开发最后打成一个包部署 优点: 架构简单, 部署成本低,适合小型项目缺点: 耦合度高, 升级维护困难 分布式架构:根据业务功能对系统做拆分,每个业务功能模块作为独立项目开发称为一个服务 优点: 降低服务耦合…...
阿里入局鸿蒙!鸿蒙原生应用再添两员新丁
今日HarmonyOS微博称,阿里钉钉、蚂蚁集团旗下的移动开发平台mPaaS与华为达成合作,宣布启动鸿蒙原生应用的开发!相关应用将以原生方式适配#HarmonyOS NEXT#系统。 #HarmonyOS#市场或迎来爆发式增长! 阿里钉钉 阿里钉钉与华为达成合…...
亚马逊运营中动态/静态住宅IP代理的应用有哪些?
作为全球最大的电商平台之一,亚马逊已经成为许多商家的首选销售平台。而代理IP作为近几天互联网的热门工具,在跨境电商界也起着非常强大的作用。那么在亚马逊运营中,适合动态住宅代理还是静态住宅代理呢?下面我们一起来探索&#…...
第19节 Node.js Express 框架
Express 是一个为Node.js设计的web开发框架,它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用,和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...
【杂谈】-递归进化:人工智能的自我改进与监管挑战
递归进化:人工智能的自我改进与监管挑战 文章目录 递归进化:人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管?3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...
相机从app启动流程
一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...
高防服务器能够抵御哪些网络攻击呢?
高防服务器作为一种有着高度防御能力的服务器,可以帮助网站应对分布式拒绝服务攻击,有效识别和清理一些恶意的网络流量,为用户提供安全且稳定的网络环境,那么,高防服务器一般都可以抵御哪些网络攻击呢?下面…...
浅谈不同二分算法的查找情况
二分算法原理比较简单,但是实际的算法模板却有很多,这一切都源于二分查找问题中的复杂情况和二分算法的边界处理,以下是博主对一些二分算法查找的情况分析。 需要说明的是,以下二分算法都是基于有序序列为升序有序的情况…...
docker 部署发现spring.profiles.active 问题
报错: org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...
Redis:现代应用开发的高效内存数据存储利器
一、Redis的起源与发展 Redis最初由意大利程序员Salvatore Sanfilippo在2009年开发,其初衷是为了满足他自己的一个项目需求,即需要一个高性能的键值存储系统来解决传统数据库在高并发场景下的性能瓶颈。随着项目的开源,Redis凭借其简单易用、…...
提升移动端网页调试效率:WebDebugX 与常见工具组合实践
在日常移动端开发中,网页调试始终是一个高频但又极具挑战的环节。尤其在面对 iOS 与 Android 的混合技术栈、各种设备差异化行为时,开发者迫切需要一套高效、可靠且跨平台的调试方案。过去,我们或多或少使用过 Chrome DevTools、Remote Debug…...
13.10 LangGraph多轮对话系统实战:Ollama私有部署+情感识别优化全解析
LangGraph多轮对话系统实战:Ollama私有部署+情感识别优化全解析 LanguageMentor 对话式训练系统架构与实现 关键词:多轮对话系统设计、场景化提示工程、情感识别优化、LangGraph 状态管理、Ollama 私有化部署 1. 对话训练系统技术架构 采用四层架构实现高扩展性的对话训练…...
软件工程教学评价
王海林老师您好。 您的《软件工程》课程成功地将宏观的理论与具体的实践相结合。上半学期的理论教学中,您通过丰富的实例,将“高内聚低耦合”、SOLID原则等抽象概念解释得十分透彻,让这些理论不再是停留在纸面的名词,而是可以指导…...
