Sqlite数据库的用法

Android SQLite实战避坑指南:权限、迁移与Room性能优化 SQLite是Android平台最基础的本地数据持久化方案,其核心原理基于嵌入式关系型数据库引擎,通过事务、索引和ACID保障数据一致性。技术价值在于零依赖、低内存占用及离线可用性,广泛应用于用户配置缓存、日志存储、离线内容同步等场景。但真实开发中常因权限隔离(如/data/data/路径不可读)、表结构升级逻辑错误(onUpgrade误用DROP)、以及未预编译查询导致性能骤降等问题而失败。本文聚焦Android 14真机环境下的可落地实践,结合DB Browser for SQLite调试与Room编译 阅读详情

Sqlite数据库的用法(C/C++)

SQLite是什么

只有一个xx.db的文件,不需要其他的配置。开箱即用超轻量、嵌入式、无需安装、无需配置、单文件型数据库。 一般用来储存Log信息和一些不方便使用xml(Json)储存的数据(自己是做桌面程序端开发的,了解这部分)。

在这里插入图片描述

安装使用教程

SQLite官网

直接点击链接,进入官网,选择Download

在这里插入图片描述

可以下载是源码或者不同平台的库,我直接在项目里使用源码进行编译即可
在这里插入图片描述

把下面这几个全部都添加到整个项目,直接在需要使用的地方引入sqlite3.h就可以了。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

SQLite数据类型和语法

在这里插入图片描述

非常简单只有5种

NUMERIC — 自适应
NULL  — 空数据
INTEGER — 整数(int)
REAL — 浮点数
TEXT — 字符串
BLOB — 二进制(图片、文件)

SQLite的语法结构基本和MySQL和SQL Server高度兼容,直接用MySQL的语法就可以了。

C的接口的使用

SQLite官方说明(注:中文版)

基本用例

#include <stdio.h>
#include <"qlite3.h"

int main(void) {
    sqlite3 *db;
    sqlite3_stmt *stmt;  // 查询语句句柄
    int rc;

    // ======================
    // 1. 打开数据库
    // ======================
    rc = sqlite3_open("test_all_types.db", &db);
    if (rc != SQLITE_OK) {
        printf("打开数据库失败: %s\n", sqlite3_errmsg(db));
        sqlite3_close(db);
        return 1;
    }
    printf("数据库已打开\n\n");

    // ======================
    // 2. 创建表(包含 SQLite 所有基本数据类型)
    // ======================
    const char *create_sql =
        "CREATE TABLE IF NOT EXISTS demo_types ("
        "id           INTEGER PRIMARY KEY AUTOINCREMENT,"  // 整型(自增ID)
        "name         TEXT    NOT NULL,"                  // 文本字符串
        "age          INTEGER,"                           // 整数
        "height       REAL,"                              // 浮点数
        "create_time  NUMERIC,"                           // 数字/日期
        "binary_data  BLOB,"                              // 二进制
        "is_active    INTEGER"                            // 布尔(0/1)
        ");";

    rc = sqlite3_exec(db, create_sql, NULL, NULL, NULL);
    if (rc != SQLITE_OK) {
        printf("创建表失败: %s\n", sqlite3_errmsg(db));
    } else {
        printf("表创建成功(包含 INTEGER/TEXT/REAL/NUMERIC/BLOB)\n\n");
    }

    // ======================
    // 3. 插入数据
    // ======================
    const char *insert_sql =
        "INSERT INTO demo_types (name, age, height, create_time, binary_data, is_active) "
        "VALUES ('张三', 20, 1.75, 20250101, x'48656C6C6F', 1);";

    rc = sqlite3_exec(db, insert_sql, NULL, NULL, NULL);
    if (rc != SQLITE_OK) {
        printf("插入数据失败: %s\n", sqlite3_errmsg(db));
    } else {
        printf("数据插入成功\n\n");
    }

    // ======================
    // 4. 查询数据(所有逻辑都在 main 内部,无外部回调)
    // ======================
    printf("===== 查询结果 =====\n");
    const char *select_sql = "SELECT * FROM demo_types";

    // 编译 SQL
    sqlite3_prepare_v2(db, select_sql, -1, &stmt, NULL);

    // 逐行读取结果  
    while (sqlite3_step(stmt) == SQLITE_ROW) {
        // 遍历每一列
        for (int i = 0; i < sqlite3_column_count(stmt); i++) {
            // 列名
            const char *col_name = sqlite3_column_name(stmt, i);
            // 列值
            const char *col_value = (const char*)sqlite3_column_text(stmt, i);
            if (col_value == NULL) col_value = "NULL";

            printf("%-12s = %s\n", col_name, col_value);
        }
        printf("----------------------------------------\n");
    }

    // 释放查询句柄
    sqlite3_finalize(stmt);

    // ======================
    // 5. 关闭数据库
    // ======================
    sqlite3_close(db);
    printf("\n数据库已关闭\n");

    return 0;
}

sqlite3_step(stmt)这里是获取查询一条的结果,再次执行获取下面一行的结果。stmt存放就是数据库返回的查询结果。

通过时候用qlite3_column_name和qlite3_column_text来获取stmt内部的值。

【Android】SQLite数据库基本用法详解(极简洁) Android操作SQLite数据库(极简洁,极易懂) 本篇源码地址: https://github.com/littlecurl/AppProjects 源代码里面有详细注释,切记要修改一下gradle的版本号为本地gradle版本号,否则AndroidStduio会自行下载,浪费时间。 一、成品效果图 Android操作数据库原理阐述 ... 阅读详情

相关推荐

告别偏色!手把手教你用i1Profiler 3.5为喷墨打印机制作专属ICC曲线(附D50/D65光源选择指南)

本文详细介绍了如何使用i1Profiler 3.5为喷墨打印机制作专属ICC曲线,解决设备偏色问题。从色彩管理基础、软件配置到色块打印与测量实战技巧,逐步指导用户完成曲线制作,并提供了D50/D65光源选择指南,确保色彩还原精准。适合摄影师和设计师提升打印质量。

weixin_30613343的博客 1万+

sqlite数据库的使用

sqlite数据库的使用

weixin_46245859的博客 2895

告别wx.showActionSheet:微信小程序自定义底部弹框的5种实现方式对比

本文深入对比了微信小程序中替代原生wx.showActionSheet的五种自定义底部弹框实现方案。从基础视图层模拟到组件化封装,再到利用第三方UI库、CSS3动画及Page-Meta组件,详细分析了各方案的优缺点与适用场景,旨在帮助开发者根据项目需求,选择最合适的方案以实现高度定制化、交互丰富的弹框效果。

weixin_29005499的博客 190

Android数据存储之数据库SQLiteDatabases使用

对于更加复杂的数据结构, android提供了内置的SQLite数据库来存储数据.SQLite使用SQL命 令提供了完整的关系型数据库能力,每个使用SQLite的应用程序都有一个该数据库的实例,并且在默认情况下公限当前应用使用,数据库存存储在android设置 的/data/data//databases文件夹中.

wenzhi的博客 1991

FX2N-2AD模块实战:从硬件连接到FROM/TO指令编程详解

本文详细解析FX2N-2AD模拟量输入模块的硬件连接与FROM/TO指令编程技巧,涵盖BFM缓冲存储器配置、梯形图程序设计及工程实战经验。通过实例演示如何实现精准信号采集与数据处理,特别针对PLC系统中的常见故障提供解决方案,助力工业自动化工程师高效完成设备调试与维护。

prometheus9mon的博客 507

深入解析MTK平台hang_detect机制:从原理到实战调试

本文深入解析了MTK平台hang_detect机制的工作原理与实战调试技巧。作为系统健康监测的核心机制,hang_detect通过多层级监控体系检测应用层和内核层异常,结合Kernel_exception等日志信息快速定位问题。文章详细介绍了典型问题案例、调试方法及预防措施,帮助开发者提升MTK平台系统稳定性调试能力。

purple的博客 1004

SQLite的使用方法

什么是 SQLite 1.SQLite数据库存储是 Android系统提供下的数据存储方式之一 2.SQLite是专为嵌入式设备设计的一款轻量级的数据库 3.SQLite占用资源非常低,在嵌入式设备中,只需要几百k的内存 4.SQLite支持标准的SQL语法,遵循数据库的ACID事务 5.SQLite不需要安装,不需要用户名密码就可以使用 SQLite怎么用 1.创建数据库和数据...

l_ocal_Noe的博客 5897

从Stereo-seq原始数据到Seurat对象:华大空间转录组分析流程实战解析

本文详细解析了从Stereo-seq原始数据到Seurat对象的完整分析流程,重点解决华大空间转录组数据处理中的三大痛点:bin_size参数设置、批量处理内存管理及格式转换信息丢失。通过Python的stereopy库和R的SeuratDisk包,实现.gem到.h5ad再到.h5seurat的高效转换,为研究者提供了一套可复用的空间转录组分析解决方案。

weixin_30315723的博客 217

Android学习笔记----SQLite数据库基本用法

数据库 Android 为了让我们能够更加方便地管理数据库,专门提供了一个 SQLiteOpenHelper 帮助类,借助这个类就可以非常简单地对数据库进行创建和升级 SQLiteOpenHelper 具有的方法

,,,,的博客 2377

Wireshark抓包实战:5个CTF比赛中高频出现的流量分析技巧(附真实案例)

本文分享了Wireshark在CTF比赛和实战渗透中的五个核心流量分析技巧。内容涵盖从宏观统计概览锁定可疑目标、深度解析ICMP与HTTP等协议、追踪重组完整会话流,到利用字符串搜索和命令行工具进行自动化分析。掌握这些高阶技巧能显著提升分析海量网络流量的效率与精准度。

rrr55的博客 261

【NI Multisim 14.0原理图设计基础——元器件分类】

电阻(RESISTOR):该元器件栏中的电阻都是标称电阻,是根据真实电阻元器件而设计的,其电阻值不能改变。 排阻(RESISTOR PACK):相当于多个电阻并列封装在一个壳内,它们具有相同的阻值。 电位器(POTENTIOMETER):即可调电阻,可以通过键盘字母动态调节电阻,大写表示增加电阻值,小写表示减小电阻值,调节增量可以设置。 电容(CAPACITOR):所有电容都是无极性的,不能改变参数,没有考虑误差,也未考虑耐压大小。 电解电容器(CAP_ELECTROLIT):所有电容都是有极性的,“+”极

RL2698853114的博客 4万+

SQLite数据库简介与基本使用

1.SQLite简介: SQLite是一款轻量级的开源的嵌入式数据库,由D.Richard Hipp在2000年发布。SQLite使用方便,性能出众,广泛应用于消费电子、医疗、工业控制、军事等各种领域。 2.SQLite的特点: (1)体积小:最低只需要几百K的内存就可以运行。 (2)性能高:对数据库的访问性能很高,其运行速度比Mysql等开源数据库要快很多。 (

拼命三郎 6万+

【100%通过率】华为机试真题 Python 实现【对称美学】【2022.11 Q4 新题】

对称就是最大的美学,现有一道关于对称字符串的美学。 已知: 第1个字符串:R 第2个字符串:BR 第3个字符串:RBBR 第4个字符串:BRRBRBBR 第5个字符串:RBBRBRRBBRRBRBBR相信你已经发现规律了,没错! 就是第i个字符串=第i-1号字符串的取反+第i-1号字符串。取反即(R->B,B->R); 现在告诉你n和k,让你求得第n个字符串的第k个字符是多少。(k的编号从0开始)

MISAYAONE的博客 1万+

python最简单的DB--SQLite

python最简单的DB用法基础(EN)

fire_fla的博客 238

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

使用浏览器查看Android SQLite数据库-Android Debug Database用法

Android客户端查看sqlite数据库是很繁琐的事情,需要DDMS中找到sqlite数据库,导出来到桌面,使用的其它数据库软件查看。当然可以root之后在手机上看。Android Debug Database是一个studio 插件,方便在浏览器中查看。解决了痛点Android Debug Database is a powerful library for debugging databases and shared preferences in Android applications. 一个可以

m0_62089210的博客 905

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

python database 日期_Python SQLite3数据库日期与时间常见函数用法分析

本文实例讲述了Python SQLite3数据库日期与时间常见函数。分享给大家供大家参考,具体如下:import sqlite3#con = sqlite3.connect('example.db')con = sqlite3.connect(":memory:")c = con.cursor()# Create tablec.execute('''CREATE TABLE s...

weixin_39683858的博客 983

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

【Android数据库】Android SQLite基本用法

Android 开发中数据存储本地几乎是避免不了的。在这过程中,打交道比较多的比如数据库,Android中内置了一款轻量级的数据库SQLite,在android.database.sqlite 包下提供了丰富的操作SQLite的API。下面介绍下SQLite的使用方法,以及过程中遇到的问题。

Ho博客 5529

Nodejs 操作Sqlite3数据库

  1、安装Nodejs 在nodejs官网(http://nodejs.cn/)下载安装nodesjs,本文版本是:v10.3.0。 2、安装sqlite3包 用npm包安装sqlite3。通过命令npm install sqlite3 –g安装,安装成功之后可以用npm list sqlite3 –g看对应sqlite3版本,本文版本是 sqlite3@4.0.2。 3、sqlite...

祥龙九霄的专栏 5万+

sqlite3的sql语句用法总结与SQLite生成.db-journal文件问题【原创】

Author:张继飞 这几天遇到了一个问题就是在insert以及update数据的时候,总是生成一个.db-journal文件,重新启动程序后,该文件消失,前面添加修改的数据没有成功保存。关于如何解决这个问题,网上也没有人给出详细答案,但经过几天的分析,试验,最后成功了。不知道对所有出现的这个问题都能应付的过来,解决的方法很简单,如下: 程序中使用了 sqlite3_stmt *stmt; ...

张继飞的专栏 3088

sqlite3的sql语句用法总结与SQLite生成.db-journal文件问题

这几天遇到了一个问题就是在insert以及update数据的时候,总是生成一个.db-journal文件,重新启动程序后,该文件消失,前面添加修改的数据没有成功保存。关于如何解决这个问题,网上也没有人给出详细答案,但经过几天的分析,试验,最后成功了。不知道对所有出现的这个问题都能

yohohohoho的专栏 3145

(二十一)SQLite数据库安装和SQLite的命令用法

(二十一)SQLite数据库安装和SQLite的命令用法

m0_52555663的博客 377

Android开发知识(十八)Sqlite数据库的语法&用法总结

文章目录前言Sqlite 基础用法where 条件子句in语法like语法GLOBLIMIT 和 OFFSETOrder ByGroup ByHAVING子句Distinct 关键字Alter 命令Sqlite高级用法SQLite 约束NOT NULL 约束:确保某列不能有 NULL 值。DEFAULT 约束:当某列没有指定值时,为该列提供默认值。UNIQUE 约束:确保某列中的所有值是不同的。P...

lc_miao的专栏 1万+
上一篇: aes加密流程
下一篇: Opencv图形库
assibe
博客等级 码龄5年 1640粉丝 84原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值