安卓用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作为近几天互联网的热门工具,在跨境电商界也起着非常强大的作用。那么在亚马逊运营中,适合动态住宅代理还是静态住宅代理呢?下面我们一起来探索&#…...
HASH、MAC、HMAC 对比
对比汇总表--**Hash(散列)****MAC(消息认证码)****HMAC(哈希MAC)**全称Hash FunctionMessage Authentication CodeHash-based MAC输入任意长度消息消息 密钥消息 密钥输出固定长度摘要固定长度认证码固定…...
从串口协议到现代网络:Xmodem/Ymodem/Zmodem的演进与设计思想
串口协议进化论:X/Y/Zmodem如何塑造现代文件传输的DNA 在拨号调制解调器的时代,一个简单的文件传输往往需要数小时,任何线路干扰都可能导致前功尽弃。正是这种严苛环境,催生了Xmodem、Ymodem和Zmodem这一系列经典协议——它们不仅…...
Production Rails扩展架构设计:如何从单体应用到分布式系统的平滑演进
Production Rails扩展架构设计:如何从单体应用到分布式系统的平滑演进 【免费下载链接】production_rails Best practices for running Rails in production 项目地址: https://gitcode.com/gh_mirrors/pr/production_rails 在现代Web应用开发中,…...
用Matlab nrWavegen工具箱手把手配置5G SSB:从NCRBSSB到KSSB的频点计算避坑指南
用Matlab nrWavegen工具箱手把手配置5G SSB:从NCRBSSB到KSSB的频点计算避坑指南 当第一次打开Matlab的nrWavegen工具箱,面对SSB配置参数时,很多工程师都会感到一阵迷茫。BlockPattern、NCRBSSB、KSSB这些参数到底该如何设置?为什么…...
Phi-4-Reasoning-Vision开源大模型部署教程:双卡4090免配置镜像实战
Phi-4-Reasoning-Vision开源大模型部署教程:双卡4090免配置镜像实战 1. 项目概述 Phi-4-Reasoning-Vision是一款基于微软Phi-4-reasoning-vision-15B多模态大模型开发的高性能推理工具,专为双卡4090环境优化。这个工具能够帮助开发者和研究人员轻松部署…...
尝试 Gemini CLI 替代Claude,Jeecg skills基本通畅,但遇致命问题
AI Agent 使用体验 | JeecgBoot 团队将日常 Claude Code 工作流迁移到 Gemini CLI 的阶段性总结为什么要换 Gemini CLI JeecgBoot 低代码团队平时主力用 Claude Code 做代码生成、文档写作、重构脚本。但 Claude 最近实名认证 频繁封号的事闹得人心惶惶——身边已经有好几个账…...
手把手教你用STM32的FSMC驱动AD7606(附完整电路图与代码)
STM32与AD7606高速数据采集系统实战指南 在工业自动化、电力监测和医疗设备等领域,高精度多通道数据采集系统扮演着关键角色。AD7606作为一款16位8通道同步采样ADC,配合STM32的FSMC接口,能够构建出性能优异的数据采集解决方案。本文将深入探讨…...
靠谱的东莞高新技术企业认定技术支持公司
在东莞,越来越多的企业希望通过认定高新技术企业来提升自身竞争力,享受政策优惠。而选择一家靠谱的高新技术企业认定技术支持公司至关重要。下面为大家详细介绍相关内容,并重点推荐沐霖信息科技(广东)有限公司。高新技…...
MySQL升级如何回滚到旧版本_灾难恢复方案与快照备份恢复
MySQL升级后不可直接卸载重装旧版本,因数据字典、系统库结构、InnoDB redo log格式等已被新版本改写;唯一可行回滚路径是用旧版mysqld启动升级前备份的干净副本并切流,且备份须满足:①导出含--routines --events --triggers --sin…...
python重命名文件 发生的一些问题记录
1.2.你的怀疑完全正确! 问题就出在这里!问题根源 你使用了 PyCharm 的重构重命名功能,并且勾选了 "All Places"(所有位置),这导致:✅ 文件重命名了❌ 但 PyCharm 可能错误地修改了某些…...
