当前位置: 首页 > news >正文

安卓用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状态

按键的抖动 对于机械开关&#xff0c;当机械触点断开、闭合时&#xff0c;由于机械触点的弹性作用&#xff0c;一个开关在闭合时不回马上稳定地接通&#xff0c;在断开时也不会一下子断开&#xff0c;所以在开关闭合及断开的瞬间会伴随一连串的抖动 #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&#xff0c;板载8G eMMC存储。它支持5G WiFi 和蓝牙, USB接口也升级为type-C。 它具有与树莓派 …...

微信小程序内部跳到外部小程序

要在微信小程序中跳转到外部小程序&#xff0c;可以使用wx.navigateToMiniProgram函数。以下是一个示例&#xff1a; wx.navigateToMiniProgram({appId: 外部小程序的appId,path: 外部小程序的路径,extraData: {id: xxx},success(res) {// 跳转成功} })在这个示例中&#xff0…...

Spring Boot中设置文件上传大小限制

在Spring Boot中&#xff0c;可以通过以下步骤来设置上传文件的大小&#xff1a; 在application.properties或application.yml文件中&#xff0c;添加以下配置&#xff1a; 对于application.properties&#xff1a; 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口寄存器位数相同&#xff08;默认高电平&am…...

命名空间、字符串、布尔类型、nullptr、类型推导

面向过程语言&#xff1a;C ——> 重视求解过程 面向对象语言&#xff1a;C ——> 重视求解的方法 面向对象的三大特征&#xff1a;封装、继承和多态 C 和 C 在语法上的区别 1、命名空间&#xff08;用于解决命名冲突问题&#xff09; 2、函数重载和运算符重载&#xf…...

力控软件与多台PLC之间ModbusTCP/IP无线通信

Modbus TCP/IP 是对成熟的 Modbus 协议的改编&#xff0c; 因其开放性、简单性和广泛接受性而在工业自动化系统中发挥着举足轻重的作用。它作为连接各种工业设备的通用通信协议&#xff0c;包括可编程逻辑控制器 (PLC)、远程终端单元 (RTU) 和传感器。它提供标准化的 TCP 接口&…...

第96步 深度学习图像目标检测:FCOS建模

基于WIN10的64位系统演示 一、写在前面 本期开始&#xff0c;我们继续学习深度学习图像目标检测系列&#xff0c;FCOS&#xff08;Fully Convolutional One-Stage Object Detection&#xff09;模型。 二、FCOS简介 FCOS&#xff08;Fully Convolutional One-Stage Object D…...

常用的git命令完整详细109条

Git是一个很强大的分布式版本控制系统&#xff0c;以下是一些常用的git命令&#xff1a; git init&#xff1a;在当前目录下创建一个新的Git仓库。git add 文件名&#xff1a;将指定的文件添加到暂存区&#xff0c;准备提交。git commit -m “备注”&#xff1a;提交暂存区的文…...

Ansible的错误处理

环境 管理节点&#xff1a;Ubuntu 22.04控制节点&#xff1a;CentOS 8Ansible&#xff1a;2.15.6 ignore_errors 使用 ignore_errors: true 来让Ansible忽略错误&#xff08;运行结果是 failed &#xff09;&#xff1a; --- - hosts: alltasks:- name: task1shell: cat /t…...

MySQL-04-InnoDB存储引擎锁和加锁分析

Latch一般称为闩锁&#xff08;轻量级锁&#xff09;&#xff0c;因为其要求锁定的时间必须非常短。在InnoDB存储引擎中&#xff0c;latch又分为mutex&#xff08;互斥量&#xff09;和rwlock&#xff08;读写锁&#xff09;。 Lock的对象是事务&#xff0c;用来锁定的是…...

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数据仓库三层 数据运营层,源数据层&#xff08;ODS&#xff09;&#xff08;Operational Data Store&#xff09; 数据仓库层&#…...

java springboot测试类虚拟MVC环境 匹配请求头指定key与预期值是否相同

上文 java springboot测试类虚拟MVC环境 匹配返回值与预期内容是否相同 (JSON数据格式) 版 中 我们展示 json匹配内容的方式 那么 本文我们来看看Content-Type属性的匹配方式 首先 我们从返回体可以看出 Content-Type 在请求头信息 Headers 中 我们直接将测试类代码更改如下 …...

Rust生态系统:探索常用的库和框架

大家好&#xff01;我是lincyang。 今天我们来探索Rust的生态系统&#xff0c;特别是其中的一些常用库和框架。 Rust生态系统虽然相比于一些更成熟的语言还在成长阶段&#xff0c;但已经有很多强大的工具和库支持各种应用的开发。 常用的Rust库和框架 Serde&#xff1a;一个…...

01-了解微服务架构的演变过程和微服务技术栈

微服务 微服务架构演变 单体架构:将业务的所有功能集中在一个项目中开发最后打成一个包部署 优点: 架构简单, 部署成本低,适合小型项目缺点: 耦合度高, 升级维护困难 分布式架构:根据业务功能对系统做拆分,每个业务功能模块作为独立项目开发称为一个服务 优点: 降低服务耦合…...

阿里入局鸿蒙!鸿蒙原生应用再添两员新丁

今日HarmonyOS微博称&#xff0c;阿里钉钉、蚂蚁集团旗下的移动开发平台mPaaS与华为达成合作&#xff0c;宣布启动鸿蒙原生应用的开发&#xff01;相关应用将以原生方式适配#HarmonyOS NEXT#系统。 #HarmonyOS#市场或迎来爆发式增长&#xff01; 阿里钉钉 阿里钉钉与华为达成合…...

亚马逊运营中动态/静态住宅IP代理的应用有哪些?

作为全球最大的电商平台之一&#xff0c;亚马逊已经成为许多商家的首选销售平台。而代理IP作为近几天互联网的热门工具&#xff0c;在跨境电商界也起着非常强大的作用。那么在亚马逊运营中&#xff0c;适合动态住宅代理还是静态住宅代理呢&#xff1f;下面我们一起来探索&#…...

Intv_AI_MK11在Ubuntu系统上的最佳实践:从安装到高性能部署

Intv_AI_MK11在Ubuntu系统上的最佳实践&#xff1a;从安装到高性能部署 1. 环境准备与系统初始化 在开始部署Intv_AI_MK11之前&#xff0c;我们需要确保Ubuntu系统已经做好充分准备。以下步骤适用于Ubuntu 20.04/22.04 LTS版本&#xff0c;建议使用服务器版以获得最佳性能。 …...

从一次抓包看懂TLS握手:Wireshark拆解Client Hello、Server Hello与密钥交换全过程

从一次抓包看懂TLS握手&#xff1a;Wireshark拆解Client Hello、Server Hello与密钥交换全过程 当你盯着Wireshark里那些密密麻麻的十六进制数据包时&#xff0c;是否曾好奇过TLS握手过程中那些看似随机的数字和字段究竟在传递什么信息&#xff1f;作为互联网安全的基石&#x…...

react-native-shared-element 跨平台适配指南:iOS、Android 和 Web 的实现差异

react-native-shared-element 跨平台适配指南&#xff1a;iOS、Android 和 Web 的实现差异 【免费下载链接】react-native-shared-element Native shared element transition "primitives" for react-native &#x1f4ab; 项目地址: https://gitcode.com/gh_mirro…...

Claude Opus 4.7 来了,但普通人真正缺的不是新模型,是一个会选模型的入口

这不是一篇“谁最强”的测评。模型越更越快&#xff0c;真正稀缺的反而是比较能力。最近几天&#xff0c;如果你一直在看 AI&#xff0c;很容易被一种热闹裹挟&#xff1a;Anthropic 在推 Claude Opus 4.7&#xff0c;OpenAI 连着更新 Agents SDK 和 Codex&#xff0c;Google 也…...

如何查询SQL数据库的连接数状态_查询全局运行参数

查MySQL连接数应根据需求选择&#xff1a;SHOW STATUS LIKE Threads_connected获当前打开连接数&#xff08;含空闲&#xff09;&#xff0c;轻量适合监控&#xff1b;SHOW PROCESSLIST列线程详情&#xff08;含SQL、用户、状态&#xff09;&#xff0c;但权限受限且默认仅前10…...

Windows (PowerShell)安装部署OpenClaw

本文主要描述如何在Windows (PowerShell)操作系统中安装部署OpenClaw以及对接阿里云千问大模型服务。 阿里云大模型平台安装部署千问大模型服务 登录阿里云大模型部署平台&#xff1a; 安装运行大模型的支撑工具&#xff1a; pip install githttps://github.com/sgl-project…...

用层次聚类给文本自动分个类:从词向量到TF-IDF的完整实战(含Scipy linkage详解)

用层次聚类给文本自动分个类&#xff1a;从词向量到TF-IDF的完整实战 当面对海量文本数据时&#xff0c;如何快速发现隐藏的语义结构&#xff1f;层次聚类提供了一种直观的解决方案。不同于K-means需要预设类别数量&#xff0c;层次聚类通过构建树状图&#xff08;Dendrogram&a…...

3步解锁旧Mac潜能:OpenCore Legacy Patcher完整使用指南

3步解锁旧Mac潜能&#xff1a;OpenCore Legacy Patcher完整使用指南 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher OpenCore Legacy Patcher是一款强大的开源…...

保姆级教程:用Cesium.js 1.107+ 加载ArcGIS Server发布的WMTS地图(附完整代码)

从零实现Cesium与ArcGIS WMTS地图集成&#xff1a;2023终极实践指南 第一次打开Cesium的官方示例时&#xff0c;那个缓缓旋转的蓝色星球总让人有种造物主般的兴奋。但当你真正需要把业务地图投射到这个数字地球上时&#xff0c;现实往往比想象复杂得多——特别是当数据源来自企…...

探索视觉小说新境界:TouchGal一站式Galgame社区深度解析

探索视觉小说新境界&#xff1a;TouchGal一站式Galgame社区深度解析 【免费下载链接】kun-touchgal-next TouchGAL是立足于分享快乐的一站式Galgame文化社区, 为Gal爱好者提供一片净土! 项目地址: https://gitcode.com/gh_mirrors/ku/kun-touchgal-next TouchGal是一个专…...