Android中SQLite应用详解

article/2025/10/17 9:23:22

上次我向大家介绍了SQLite的基本信息和使用过程,相信朋友们对SQLite已经有所了解了,那今天呢,我就和大家分享一下在Android中如何使用SQLite。

现在的主流移动设备像Android、iPhone等都使用SQLite作为复杂数据的存储引擎,在我们为移动设备开发应用程序时,也许就要使用到SQLite来存储我们大量的数据,所以我们就需要掌握移动设备上的SQLite开发技巧。对于Android平台来说,系统内置了丰富的API来供开发人员操作SQLite,我们可以轻松的完成对数据的存取。

下面就向大家介绍一下SQLite常用的操作方法,为了方便,我将代码写在了Activity的onCreate中:

	@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//打开或创建test.db数据库SQLiteDatabase db = openOrCreateDatabase("test.db", Context.MODE_PRIVATE, null);db.execSQL("DROP TABLE IF EXISTS person");//创建person表db.execSQL("CREATE TABLE person (_id INTEGER PRIMARY KEY AUTOINCREMENT, name VARCHAR, age SMALLINT)");Person person = new Person();person.name = "john";person.age = 30;//插入数据db.execSQL("INSERT INTO person VALUES (NULL, ?, ?)", new Object[]{person.name, person.age});person.name = "david";person.age = 33;//ContentValues以键值对的形式存放数据ContentValues cv = new ContentValues();cv.put("name", person.name);cv.put("age", person.age);//插入ContentValues中的数据db.insert("person", null, cv);cv = new ContentValues();cv.put("age", 35);//更新数据db.update("person", cv, "name = ?", new String[]{"john"});Cursor c = db.rawQuery("SELECT * FROM person WHERE age >= ?", new String[]{"33"});while (c.moveToNext()) {int _id = c.getInt(c.getColumnIndex("_id"));String name = c.getString(c.getColumnIndex("name"));int age = c.getInt(c.getColumnIndex("age"));Log.i("db", "_id=>" + _id + ", name=>" + name + ", age=>" + age);}c.close();//删除数据db.delete("person", "age < ?", new String[]{"35"});//关闭当前数据库db.close();//删除test.db数据库
//		deleteDatabase("test.db");}
在执行完上面的代码后,系统就会在/data/data/[PACKAGE_NAME]/databases目录下生成一个“test.db”的数据库文件,如图:


上面的代码中基本上囊括了大部分的数据库操作;对于添加、更新和删除来说,我们都可以使用

db.executeSQL(String sql);
db.executeSQL(String sql, Object[] bindArgs);//sql语句中使用占位符,然后第二个参数是实际的参数集
除了统一的形式之外,他们还有各自的操作方法:

db.insert(String table, String nullColumnHack, ContentValues values);
db.update(String table, Contentvalues values, String whereClause, String whereArgs);
db.delete(String table, String whereClause, String whereArgs);
以上三个方法的第一个参数都是表示要操作的表名;insert中的第二个参数表示如果插入的数据每一列都为空的话,需要指定此行中某一列的名称,系统将此列设置为NULL,不至于出现错误;insert中的第三个参数是ContentValues类型的变量,是键值对组成的Map,key代表列名,value代表该列要插入的值;update的第二个参数也很类似,只不过它是更新该字段key为最新的value值,第三个参数whereClause表示WHERE表达式,比如“age > ? and age < ?”等,最后的whereArgs参数是占位符的实际参数值;delete方法的参数也是一样。

下面来说说查询操作。查询操作相对于上面的几种操作要复杂些,因为我们经常要面对着各种各样的查询条件,所以系统也考虑到这种复杂性,为我们提供了较为丰富的查询形式:

db.rawQuery(String sql, String[] selectionArgs);
db.query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy);
db.query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit);
db.query(String distinct, String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit);
上面几种都是常用的查询方法,第一种最为简单,将所有的SQL语句都组织到一个字符串中,使用占位符代替实际参数,selectionArgs就是占位符实际参数集;下面的几种参数都很类似,columns表示要查询的列所有名称集,selection表示WHERE之后的条件语句,可以使用占位符,groupBy指定分组的列名,having指定分组条件,配合groupBy使用,orderBy指定排序的列名,limit指定分页参数,distinct可以指定“true”或“false”表示要不要过滤重复值。需要注意的是,selection、groupBy、having、orderBy、limit这几个参数中不包括“WHERE”、“GROUP BY”、“HAVING”、“ORDER BY”、“LIMIT”等SQL关键字。
最后,他们同时返回一个Cursor对象,代表数据集的游标,有点类似于JavaSE中的ResultSet。

下面是


http://chatgpt.dhexx.cn/article/ijJLXmYm.shtml

相关文章

Android SQLite基本用法(极简)

前言 SQLite是一个进程内的库&#xff0c;实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。它是一个零配置的数据库&#xff0c;这意味着与其他数据库不一样&#xff0c;您不需要在系统中配置。就像其他数据库&#xff0c;SQLite 引擎不是一个独立的进程&am…

SQLite数据库可视化工具【SQLiteStudio】的下载及安装

上一篇文章介绍了Windows的SQLite数据库安装&#xff0c;但是安装完成后&#xff0c;需要用SQLite命令去管理SQLite数据库&#xff0c;对于初学者不太友好。本文为大家介绍SQLite数据库的可视化工具【SQLiteStudio】&#xff0c;用户可以在SQLiteStudio中&#xff0c;实现对数据…

SQLite下载、安装与连接

1.下载SQLite SQLite官网&#xff1a;https://www.sqlite.org/download.html 根据自己电脑操作系统配置&#xff0c;选择32位或64位下载&#xff08;一般情况下是64位&#xff09;。总共两个压缩包。 或者直接去&#xff1a;https://download.csdn.net/download/WenHuiJun_/8…

SQLite 使用(针对Android)

文章目录 1. SQLite 介绍2. SQLite可视化工具 安装3. SQLite的增删改查3.1 SqliteOpenHelper 创建 库或表3.2 SqliteOpenHelper 实现 增删改查 1. SQLite 介绍 SQLite的注意事项&#xff1a; 标准的主键写法&#xff1a;_id。(不标准写法&#xff1a;id)&#xff0c;此外&…

AXI 总线入门(一)通道握手-AXI-Lite

AXI 总线(一)通道握手-AXI-Lite 文章目录 AXI 总线(一)通道握手-AXI-Lite关于本系列教程什么是AXI协议AXI读写通道AXI读过程AXI写过程单一通道的握手VALID 信号先到READY信号先到READY和VALID同时到达原则性问题 AXI-Lite总线实现解析生成一个AXI(-Lite)外设整体端口信号解析A(…

【AXI】解读AXI协议乱序机制

芯片设计验证社区芯片爱好者聚集地硬件相关讨论社区数字verifier星球四社区联合力荐&#xff01;近500篇数字IC精品文章收录&#xff01;【数字IC精品文章收录】学习路线基础知识总线脚本语言芯片求职EDA工具低功耗设计VerilogSTA设计验证FPGA架构AMBA书籍 解读AXI协议乱序机制…

AXI协议(数据传输结构)

AXI协议关于Data read and write structure的部分指出&#xff0c;在数据传输过程中&#xff0c;主要涉及三个问题&#xff1a; 窄位宽数据传输&#xff08;Narrow transfers&#xff09;地址非对齐传输&#xff08;Unaligned Transfer&#xff09;混合大小端传输&#xff08;…

AXI总线代码详细整理(一)

目录 说明1. AXI 的时钟与复位1.1 时钟1.2 复位 2. 五个通道2.1 Write Address Channel2.2 Write Data Channel2.3 Write Response (B) Channel2.4 Read Address Channel2.5 Read Data (and Response) Channel 3 突发传输机制3.1 突发传输长度和宽度3.2 突发传输类型 说明 文字…

AXI总线详解完结篇

经过几个月的整理和发文,AXI总线详解系列正式迎来最终篇,内容基本涵盖了上一篇文章的全部内容。 所有文章的链接如下: 1、 AXI总线详解 2、AXI总线详解-总线和接口以及协议 3、AXI协议中的通道结构 4、AXI总线详解-AXI4读

AXI接口简介

此部分&#xff0c;有参考他人帖子的内容&#xff0c;加上自己的理解&#xff0c;感恩原作者 1、 AXI&#xff08;Advanced eXtensible Interface&#xff09;协议主要描述了主设备&#xff08;Master&#xff09;和从设备&#xff08;Slave&#xff09;之间的数据传输方式&…

AXI接口协议详解-AXI总线、接口、协议

转自&#xff1a;https://cloud.tencent.com/developer/article/1695010 AXI接口协议详解-AXI总线、接口、协议 AXI 总线 上面介绍了AMBA总线中的两种&#xff0c;下面看下我们的主角—AXI&#xff0c;在ZYNQ中有支持三种AXI总线&#xff0c;拥有三种AXI接口&#xff0c;当然用…

【AXI】解读AXI协议的低功耗设计

芯片设计验证社区芯片爱好者聚集地硬件相关讨论社区数字verifier星球四社区联合力荐&#xff01;近500篇数字IC精品文章收录&#xff01;【数字IC精品文章收录】学习路线基础知识总线脚本语言芯片求职EDA工具低功耗设计VerilogSTA设计验证FPGA架构AMBA书籍 解读AXI协议的低功耗…

AXI总线协议

0.绪论 AXI(Advanced eXtensible Interface)是一种总线协议,该协议是ARM公司提出的AMBA3.0中最重要的部分,是一种面向高性能、高带宽、低延迟的片内总线。AMBA4.0将其修改升级为AXI4.0。 AMBA4.0 包括AXI4.0、AXI4.0-lite、ACE4.0、AXI4.0-stream。 AXI4.0-lite是AXI的简化…

AXI总线学习------从零开始详细学-----------连载(2)axi protocol 通道分类

AXI总线学习连载&#xff08;2&#xff09; 鲁迅曾经说过&#xff1a; 学硬件&#xff0c;不是学哪里查哪里&#xff0c;有一些东西是必须系统的学的&#xff0c;不管是嵌入式还是FPGA,硬件学习的积累一定要是系统的。 我也曾经说过&#xff1a; 英文手册非常重要&#xff0c…

【AXI】解读AXI协议中的burst突发传输机制

芯片设计验证社区芯片爱好者聚集地硬件相关讨论社区数字verifier星球四社区联合力荐&#xff01;近500篇数字IC精品文章收录&#xff01;【数字IC精品文章收录】学习路线基础知识总线脚本语言芯片求职EDA工具低功耗设计VerilogSTA设计验证FPGA架构AMBA书籍 解读AXI协议中的burs…

【AXI】解读AXI协议事务属性(Transaction Attributes)

芯片设计验证社区芯片爱好者聚集地硬件相关讨论社区数字verifier星球四社区联合力荐&#xff01;近500篇数字IC精品文章收录&#xff01;【数字IC精品文章收录】学习路线基础知识总线脚本语言芯片求职EDA工具低功耗设计VerilogSTA设计验证FPGA架构AMBA书籍 解读AXI协议事务属性…

AXI总线知多少?

关注、星标公众号&#xff0c;精彩内容每日送达 来源&#xff1a;数字ICer 前言 本文针对秋招面试高频问题: AXI总线进行总结&#xff1b; 1.简介 AXI是个什么东西呢&#xff0c;它其实不属于Zynq&#xff0c;不属于Xilinx&#xff0c;而是属于ARM。它是ARM最新的总线接口&…

AXI学习

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 一、AXI中关于非对齐问题理解 AXI 协议支持地址非对齐的传输&#xff0c;允许突发传输的首字节地址&#xff0c;即起始地址与突发传输位宽不对齐。举个例子&#xff0c;总线位…

AXI 中文

AXI总线协议资料整理 第一部分&#xff1a; 1、AXI简介&#xff1a;AXI&#xff08;AdvancedeXtensible Interface&#xff09;是一种总线协议&#xff0c;该协议是ARM公司提出的AMBA&#xff08;AdvancedMicrocontroller Bus Architecture&#xff09;3.0协议中最重要的部分&a…

AXI协议

文章目录 前言一、通道信号二、AXI 握手机制三、读写Timing3.1 写数据3.2 读数据 四、通道间的依赖关系4.1 写地址通道&#xff08; AW &#xff09;4.2 写数据通道&#xff08; W &#xff09;4.2 写响应通道( B )4.3 读数据( R ) 五、信号详细解释5.1 ACLK和ARESETn5.2 Burst…