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

SQLite 是什么?

📌 一、SQLite 是什么?

SQLite 是一个轻量级、嵌入式数据库,意思是它直接集成在你的 App 内部,不需要单独安装数据库服务端。

✅ 特点:

特点说明
本地使用所有数据保存在手机内部存储
文件形式数据以 .db 文件形式存储
零配置不需要数据库服务器
跨平台Android/iOS/桌面 都能用
高性能适合小型数据、缓存、离线存储等场景

📦 二、Android 中如何使用 SQLite?

你可以直接用原生 SQLite API,也可以用封装库(更推荐)


🛠 方法一:原生 SQLite(SQLiteOpenHelper

 

java

复制编辑

public class MyDbHelper extends SQLiteOpenHelper { private static final String DB_NAME = "mybooks.db"; private static final int DB_VERSION = 1; public MyDbHelper(Context context) { super(context, DB_NAME, null, DB_VERSION); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL("CREATE TABLE IF NOT EXISTS CacheBean (filePath TEXT PRIMARY KEY, customPage INTEGER)"); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // 数据库升级逻辑 } }

插入数据:

 

java

复制编辑

SQLiteDatabase db = helper.getWritableDatabase(); ContentValues values = new ContentValues(); values.put("filePath", "/storage/emulated/0/book1.pdf"); values.put("customPage", 5); db.insert("CacheBean", null, values);

查询数据:

 

java

复制编辑

Cursor cursor = db.query("CacheBean", null, null, null, null, null, null); while (cursor.moveToNext()) { String path = cursor.getString(cursor.getColumnIndex("filePath")); int page = cursor.getInt(cursor.getColumnIndex("customPage")); } cursor.close();


🛠 方法二:用 Room(谷歌官方推荐)

Room 是一个 SQLite 封装库,用起来更安全方便:

1. 添加依赖
 

gradle

复制编辑

implementation "androidx.room:room-runtime:2.6.1" annotationProcessor "androidx.room:room-compiler:2.6.1"

2. 创建实体类
 

java

复制编辑

@Entity public class CacheBean { @PrimaryKey @NonNull public String filePath; public int customPage; }

3. 创建 DAO 接口
 

java

复制编辑

@Dao public interface CacheDao { @Query("SELECT * FROM CacheBean") List<CacheBean> getAll(); @Insert(onConflict = OnConflictStrategy.REPLACE) void insert(CacheBean cacheBean); }

4. 创建数据库类
 

java

复制编辑

@Database(entities = {CacheBean.class}, version = 1) public abstract class AppDatabase extends RoomDatabase { public abstract CacheDao cacheDao(); }

5. 使用数据库
 

java

复制编辑

AppDatabase db = Room.databaseBuilder(context, AppDatabase.class, "book_db").build(); db.cacheDao().insert(new CacheBean("file.pdf", 3));


🔎 三、如何查看 SQLite 中的数据?

方法一:Android Studio 查看 SQLite 数据库

  1. 打开 Android Studio

  2. 点击 Device File Explorer

  3. 路径:/data/data/你的包名/databases/

  4. .db 文件,右键导出

  5. 用工具打开(推荐 DB Browser for SQLite)

👉 官网下载 DB Browser for SQLite


方法二:用命令行(adb shell)

 

bash

复制编辑

adb shell run-as com.wh.app # 你的包名 cd databases sqlite3 your_db_name.db

然后用 SQL 查看数据:

 

sql

复制编辑

.tables SELECT * FROM CacheBean;


💡 总结一句话:

SQLite 就是你 App 内的本地数据库,你的书签就存在这个数据库的 .db 文件中。


如果你给我 CacheDaoUtil 的代码,我可以帮你确认用的是 SQLite 还是别的。如果你想自己动手接入 Room,我也可以帮你一步步替换现有代码。

需要我手把手教你建个数据库页面展示这些书签吗?👀

相关文章:

SQLite 是什么?

&#x1f4cc; 一、SQLite 是什么&#xff1f; SQLite 是一个轻量级、嵌入式数据库&#xff0c;意思是它直接集成在你的 App 内部&#xff0c;不需要单独安装数据库服务端。 ✅ 特点&#xff1a; 特点说明本地使用所有数据保存在手机内部存储文件形式数据以 .db 文件形式存储…...

恒创科技「香港大带宽云」新老用户专享实例及热门配置

全球化数字浪潮下&#xff0c;高带宽应用正深度重构各行业运营模式——从跨境电商、流媒体与视频点播&#xff0c;到在线游戏与云游戏加速&#xff0c;涵盖所有高并发、强交互的业务场景。在此背景下&#xff0c;企业对高性能 IT 基础架构的需求持续升级&#xff0c;以此来支持…...

fpga系列 HDL:verilog latch在fpga中的作用 避免latch的常见做法

目录 Latch在FPGA中的作用Quartus中有关latch的警告⚠避免Latch的常见做法1. if-else 语句未覆盖所有条件生成Latch的代码&#xff1a;修复后的代码&#xff1a; 2. case语句未覆盖所有分支生成Latch的代码&#xff1a;修复后的代码&#xff1a; 3. 组合逻辑中缺少默认赋值生成…...

java配置

环境变量...

解决虚拟主机ping不通本地主机问题

win11 1 问题 虚拟主机和本地主机在同一网段。 2 解决方案 以win11为例&#xff1a; 设置 -> 网络和 Internet -> 高级网路设置 -> Windows 防火墙 -> 高级设置 -> 入站规则 -> 新建规则 需要设置&#xff1a;规则类型、 协议和端口、名称&#xff0c;其…...

Move Registry 发布,实现 Sui 的超级互操作性

Move Registry&#xff08;MVR&#xff09;的到来对 Sui 来说是一件大事。MVR 是一个功能齐全的链上包管理系统&#xff0c;提升了整个生态的可发现性、可信度和互操作性。Sui 本身就是最具互操作性的链之一&#xff0c;凭借 Move 语言和可编程交易区块&#xff08;PTBs&#x…...

【Linux】gdb工具,Linux 下程序调试的 “透视眼”

目录 调试代码调试注意事项gdb和Cgdb调试命令汇总行号显示断点设置查看断点信息删除断点开启 / 禁用断点运行 / 调试逐过程和逐语句打印 / 追踪变量指定行号跳转强制执行函数 补充命令watchset var 替换变量值条件断点 end 调试代码 这是本次调试要用的代码 1 #include <st…...

脚本分享:快速作图对比wannier拟合能带python脚本

本脚本通过Python实现电子能带结构数据的快速作图&#xff0c;能够从两个不同的数据文件&#xff08;BAND.dat 和 wannier90_band.dat&#xff09;中提取有效数据&#xff0c;并在同一坐标系下绘制对比图。 准备工作&#xff1a;使用VASPKIT处理获得能带数据BAND.dat&#xff…...

解决ssh拉取服务器数据,要多次输入密码的问题

问题在于&#xff0c;每次循环调用 rsync 都是新开一个连接&#xff0c;所以每次都需要输入一次密码。为了只输入一次密码&#xff0c;有以下几种方式可以解决&#xff1a; ✅ 推荐方案&#xff1a;设置 SSH 免密登录 最稳最安全的方式是&#xff1a;配置 SSH 免密登录&#x…...

金仓数据库 KingbaseES 产品深度优化提案:迈向卓越的全面升级

文章目录 一、引言二、性能优化&#xff08;一&#xff09;查询性能提升1. 优化查询优化器引入基于代价的查询优化算法支持更多的查询优化提示 2. 索引优化支持更多类型的索引优化索引的创建和维护策略 &#xff08;二&#xff09;并发处理能力增强1. 锁机制优化采用更细粒度的…...

企业级智能合同管理解决方案升级报告:道本科技携手DeepSeek打造智能合同管理新标杆

当传统合同管理系统还在与堆积如山的纸质文档较劲时&#xff0c;道本科技与DeepSeek联合开发的智能合同平台已为国央企打开新视界。我们以某大型能源集团的实际应用为例&#xff0c;带您直观感受技术升级带来的管理变革。 一、技术升级的具象化呈现 在未接入DeepSeek技术前&a…...

C#并行编程极大提升集合处理速度,再也没人敢说你程序性能差了!

马工撰写的年入30万C#上位机项目实战必备教程&#xff08;点击下方链接即可访问文章目录&#xff09; 1、《C#串口通信从入门到精通》 2、《C#与PLC通信从入门到精通 》 3、《C# Modbus通信从入门到精通》 4、《C#Socket通信从入门到精通 》 5、《C# MES通信从入门到精通》 6、…...

[贪心_7] 最优除法 | 跳跃游戏 II | 加油站

目录 1.最优除法 题解 2.跳跃游戏 II 题解 3.加油站 题解 利用 单调性&#xff0c;可以实现 区间跳跃 1.最优除法 链接&#xff1a; 553. 最优除法 给定一正整数数组 nums&#xff0c;nums 中的相邻整数将进行浮点除法。 例如&#xff0c;nums [2,3,4]&#xff0c;我…...

【Rust】Rust中的枚举与模式匹配,原理解析与应用实战

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…...

【CUDA 编译 bug】ld: cannot find -lcudart

我们使用 Conda 安装 pytorch 和 CUDA 环境之后&#xff0c;要用 Conda 的CUDA环境进行某个库编译时&#xff0c;出现了bug&#xff1a; /mnt/data/home/xxxx/miniforge3/envs/GAGAvatar/compiler_compat/ld: cannot find -lcudart: No such file or directorycollect2: error…...

MYSQL之数据类型

数据类型分类 数值类型 在MySQL中, 整型可以指定是有符号的和无符号的, 默认是有符号的. 可以通过 UNSIGNED 来说明某个字段是无符号的. tinyint类型 以tinyint为例, 其它的整型类型都只是数据范围的区别. 数据越界 创建一个 tinyint 类型的 num 的属性, 大小为 1 字节, 不…...

Asp.Net Core 异常筛选器ExceptionFilter

文章目录 前言一、异常筛选器的核心概念用途&#xff1a;实现接口&#xff1a;执行时机&#xff1a; 二、使用步骤1.创建自定义异常筛选器2.注册异常筛选器全局注册&#xff08;对所有 Controller 生效&#xff09;&#xff1a;局部注册&#xff08;通过特性标记特定的 **Contr…...

WebUI可视化:第2章:技术基础准备

学习目标 ✅ 掌握HTML/CSS基础语法 ✅ 理解JavaScript核心功能 ✅ 了解前后端交互原理 2.1 HTML基础:网页的骨架 2.1.1 基础结构 每个HTML文件都必须包含以下基本结构: html <!DOCTYPE html> <html> <head><title>我的第一个网页</title> …...

Java基础集合 面试经典八股总结 [连载ing]

序言 八股&#xff0c;怎么说呢。我之前系统学习的内容&#xff0c;进行梳理。通过问题的方式&#xff0c;表达出得当的内容&#xff0c;这件事本身就很难。面试时心态、状态、掌握知识的情况等。关于八股文&#xff0c;我不想有太多死记硬背的内容&#xff0c;更多的是希望自我…...

大数据运维面试题

华为大数据运维面试题可能涵盖多个方面&#xff0c;以下是一些可能的面试问题及解析&#xff0c;这些问题旨在考察应聘者的技术知识、问题解决能力和对大数据运维的理解&#xff1a; 一、技术知识类问题 简述大数据运维的主要职责和工作内容 回答示例&#xff1a;大数据运维工…...

OpenBMC:BmcWeb login认证

BmcWeb在include\login_routes.hpp中实现了/login用于完成web的登录: BMCWEB_ROUTE(app, "/login").methods(boost::beast::http::verb::post)(handleLogin);inline void handleLogin(const crow::Request& req,const std::shared_ptr<bmcweb::AsyncResp>…...

Python学习之路(五)-接口API

在 Python 中结合数据库开发接口 API 通常使用 Web 框架(如 Flask 或 Django)和 ORM(对象关系映射)工具(如 SQLAlchemy 或 Django ORM)。以下是使用 Flask 和 SQLAlchemy 的详细步骤,展示如何结合数据库开发一个简单的 API。 使用 Flask 和 SQLAlchemy 开发 API 1. 安…...

数据库+Docker+SSH三合一!深度评测HexHub的全栈开发体验

作为一名技术博主&#xff0c;我最近一直被各种开发工具切换搞得焦头烂额。数据库要用Navicat&#xff0c;服务器管理得开Termius&#xff0c;Docker操作还得切到命令行&#xff0c;每天光在不同工具间切换就浪费了大量时间。直到团队里的一位架构师向我推荐了HexHub这个一体化…...

涂料油墨制造数字化转型的关键技术与挑战

涂料油墨制造行业正处于数字化转型的关键时期&#xff0c;这一转型是提升生产效率、增强产品质量和降低成本的重要途径。以下是该行业在数字化转型中的关键技术与面临的挑战&#xff1a; 关键技术&#xff1a; 工业互联网技术&#xff1a;通过在生产设备上安装传感器&#xf…...

UE5 调整字体、界面大小

文章目录 方案一 5.4 版本及以上&#xff08;推荐&#xff09;方案二 5.3 版本及以下&#xff08;推荐&#xff09;方案三 使用插件&#xff08;不推荐&#xff09; 方案一 5.4 版本及以上&#xff08;推荐&#xff09; 进入 编辑 > 编辑器偏好设置&#xff0c;如下图所示&…...

【OpenCV图像处理实战】从基础操作到工业级应用

目录 前言技术背景与价值当前技术痛点解决方案概述目标读者说明 一、技术原理剖析核心概念图解核心作用讲解关键技术模块说明技术选型对比 二、实战演示环境配置要求核心代码实现&#xff08;6个案例&#xff09;案例1&#xff1a;图像基本操作案例2&#xff1a;边缘检测案例3&…...

生成随机验证码-解析与优化

文章目录 代码功能解析潜在问题与优化建议1. 安全性问题2. 易混淆字符过滤3. 参数校验4. 性能优化 扩展功能示例1. 自定义字符集2. 批量生成验证码 完整优化代码关键总结 代码功能解析 import random import stringdef generate_code(length6):chars string.digits string.a…...

VMware 虚拟机镜像资源网站

常见的 VMware 虚拟机镜像资源网站 网站名称链接地址特点OSBoxes.orgOSBoxes - Virtual Machines for VirtualBox & VMware 提供 .vmx .vmdk&#xff0c;适合 VMware 和 VirtualBox&#xff0c;更新频率高&#xff0c;界面清晰LinuxVMImages.comLinux VM Images - Downlo…...

HTML5 详细学习笔记

1. HTML5 简介 HTML5 是最新的 HTML 标准&#xff0c;于 2014 年 10 月由 W3C 完成标准制定。它增加了许多新特性&#xff0c;包括语义化标签、多媒体支持、图形效果、离线存储等。 1.1 HTML5 文档基本结构 <!DOCTYPE html> <html lang"zh-CN"> <h…...

真.从“零”搞 VSCode+STM32CubeMx+C <1>构建

目录 前言 准备工作 创建STM32CubeMx项目 VSCode导入项目&配置 构建错误调试 后记 前言 去年10月开始接触单片机&#xff0c;一直在用树莓派的Pico&#xff0c;之前一直用Micropython&#xff0c;玩的不亦乐乎&#xff0c;试错阶段优势明显&#xff0c;很快就能鼓捣一…...

Pikachu靶场

本质是信任了不可信的客户端输入。防御核心&#xff1a; 永不信任客户端提交的权限参数&#xff08;如 user_id, role&#xff09;。强制服务端校验用户身份与操作权限。定期审计权限模型&#xff0c;避免业务迭代引入新漏洞。 水平越权 1&#xff0c;按照网站的提示要求登录 进…...

五、web自动化测试01

目录 一、HTML基础1、HTML介绍2、常用标签3、基础案例3.1 前端代码3.2 自动化测试 二、CSS定位1、css介绍2、案例3、代码优化 三、表单自动化1、案例2、元素属性定位 四、后台基础数据自动化1、登录1.1 id与class定位1.2 定位一组元素 2、商品新增 一、HTML基础 可参考学习 链…...

利用软件I2C驱动OLED,点亮、熄灭OLED屏幕以及获取当前OLED屏幕开启状态

题目&#xff1a; 参考《I2C通信》的文档&#xff0c;自行连接电路&#xff0c;利用软件I2C驱动OLED&#xff0c;点亮、熄灭OLED屏幕以及获取当前OLED屏幕开启状态。   可以优先实现: 软件I2C初始化函数,用于初始化IO引脚   再实现: 主机发起始位和停止位,主机发送1个字节,…...

数据结构——栈与队列

1.栈 1.1概念 一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。 进行数据插入和删除操作的一端 称为栈顶&#xff0c;另一端称为栈底。 栈中的数据元素遵守后进先出 LIFO &#xff08; Last In First Out &#xff09;的原则。 压栈&#xff1a;栈…...

【嵌入式系统设计师(软考中级)】第二章:嵌入式系统硬件基础知识(3)

文章目录 4. 嵌入式系统I/O接口4.1 GPIO与PWM接口4.1.1 GPIO接口&#xff08;General-Purpose Input/Output&#xff09;4.1.2 PWM接口&#xff08;Pulse Width Modulation&#xff09; 4.2 A/D与D/A接口的基本原理与结构4.2.1 DA转换&#xff08;数模转换&#xff0c;Digital-…...

【网络安全】社会工程学策略

1. 社会工程学简介 社会工程攻击是威胁行为者常用的攻击方式。这是因为&#xff0c;诱骗人们提供访问权限、信息或金钱通常比利用软件或网络漏洞更容易。 您可能还记得&#xff0c;社会工程学是一种利用人为错误来获取私人信息、访问权限或贵重物品的操纵技术。它是一个涵盖性…...

ROS2---时间戳对齐

一、ROS2时间系统架构 时间模型 仿真时间&#xff08;Simulation Time&#xff09;&#xff1a;由/clock话题驱动&#xff0c;适用于离线仿真与调试。真实时间&#xff08;Real Time&#xff09;&#xff1a;基于系统硬件时钟&#xff0c;支持PTP协议&#xff08;IEEE 1588&…...

C语言教程(十五):C 语言函数指针与回调函数详解

一、函数指针 1.1 函数指针的概念 在 C 语言中&#xff0c;函数指针是指向函数的指针变量。每个函数在内存中都有一个起始地址&#xff0c;函数指针就存储了这个起始地址&#xff0c;通过函数指针可以调用相应的函数。 1.2 函数指针的定义 函数指针的定义语法如下&#xff1a;返…...

VSCode如何修改默认扩展路径和用户文件夹目录到其他盘以及微信开发工具如何修改扩展路径到其他盘

ps:因公司电脑c盘内存严重不足&#xff0c;而出本篇文章 1.Visual Studio Code 随着VsCode的使用时间的推移&#xff0c;安装的扩展以及数据逐步增多&#xff0c;导致c盘内存占用较大&#xff0c;所以这里将vscode的默认缓存路径等迁移到其他盘。 步骤如下 1.找到默认的存储…...

抽象类相关

抽象类的定义 抽象类 是一种特殊的类&#xff0c;它不能被实例化&#xff0c;只能作为基类来派生出具体类。抽象类至少包含一个纯虚函数 。纯虚函数是在函数原型前加上 0 的虚函数&#xff0c;表示该函数没有具体实现&#xff0c;必须由派生类来实现。 抽象类的作用 提供统…...

如何测试短信接口

目录 一、测试短信接口的基本流程 1. 了解短信接口文档 2. 使用工具测试短信接口 示例一&#xff1a;用 curl 测试 POST 请求 示例二&#xff1a;用 Postman 设置 POST 请求 3. 编写测试脚本&#xff08;Python 示例&#xff09; 二、测试类型和场景 ✅ 正常发送测试 …...

pycharm2024.3.2项目解释器选择问题

问题描述&#xff1a;已经选择了pyau虚拟环境的解释器&#xff0c;运行了conda activate pyau&#xff0c;但是为什么关闭pycharm2024.3.2软件重新启动后&#xff0c;打开终端是(base) PS D:\deepseektest> &#xff0c;为什么不是(pyau) PS D:\deepseektest> 解决问题&a…...

如何在 Dialog 中安全初始化 ECharts 并自动监听容器大小变化

如何在 Dialog 中安全初始化 ECharts 并自动监听容器大小变化 在使用 ECharts 的 Vue 项目中&#xff0c;我们常常会将图表放入弹窗&#xff08;如 Element UI 的 <el-dialog>&#xff09;中进行展示。但你是否遇到过以下问题&#xff1a; 图表初次显示尺寸异常&#x…...

如何借助ETL数据集成工具实现数据一致性?

主要可以从以下几个方面入手&#xff1a; 一、数据抽取阶段&#xff08;Extract&#xff09; 统一数据源连接方式&#xff1a;ETL工具通常支持多种数据源连接方式&#xff0c;如关系型数据库、非关系型数据库、文件系统、API接口等。在抽取数据时&#xff0c;要确保对各个数据…...

3.4/Q1,GBD数据库最新文章解读

文章题目&#xff1a;Burden of Carbon Monoxide Poisoning in Asian Countries From 1990 to 2021 and Its Projection Until 2030: An Analysis of the Global Burden of Disease Study 2021 DOI&#xff1a;10.2147/CLEP.S512786 中文标题&#xff1a;1990 年至 2021 年亚洲…...

【高中数学/古典概率】4红2黑六选二,求取出两次都是红球的概率

【问题】 袋子里装4只红球&#xff0c;2只黑球&#xff0c;大小完全相同&#xff0c;抽两次球&#xff0c;每次抽一只&#xff0c;抽出后不再放回&#xff0c;求取出的两次都是红球的概率。 【来源】 数林外传系列之《概率与期望》P20 单埻著 中国科学技术大学出版社 【数学…...

机器人操作中的生成式 AI:综述(上)

25年3月来自香港大学、香港理工、香港科大、浙大和清华大学的论文“Generative Artificial Intelligence in Robotic Manipulation: A Survey”。 本综述全面回顾机器人操作领域生成学习模型的最新进展&#xff0c;并探讨该领域的关键挑战。机器人操作面临着关键瓶颈&#xff…...

Spring AI 核心概念

本文是对Spring AI中涉及到的AI相关核心概念的介绍&#xff0c;笔者结合LangChain、LlamaIndex的使用经验&#xff0c;尝试尽可能清晰的把这些概念解释清楚. 读者也可以参考官方文档作为补充. 模型 提到AI模型&#xff0c;我们的第一印象一定是GPT,DeepSeek这样的大语言模型(…...

第53.5讲 | 小项目实战:用 SHAP 值解释农作物产量预测模型 [特殊字符][特殊字符]

目录 ✅ 项目背景 &#x1f4e6; 所用工具 &#x1f4c1; 数据字段&#xff08;模拟&#xff09; &#x1f9d1;‍&#x1f4bb; 代码实现步骤 &#x1f3af; 解读与启发 &#x1f9e0; 项目拓展建议 ✅ 项目背景 我们使用一个简化的玉米产量数据集&#xff08;可模拟实…...

Linux编译器-gcc/g++使用

1.预处理&#xff08;进行宏替换&#xff09; -E开始进行程序编译&#xff0c;在预处理做完的时候&#xff0c;停下来 2.编译&#xff08;生成汇编&#xff09; -S 开始编译&#xff0c;编译做完了就停下来 3.汇编&#xff08;生成机器可识别代码&#xff09; -c 开始翻译汇编…...