SQLite 数据库编程获取数据表达方式分析信息 | 学习笔记

简介: 快速学习 SQLite 数据库编程获取数据表达方式分析信息

开发者学堂课程【嵌入式之 RFID 开发与应用2020版:SQLite 数据库编程获取数据表达方式分析信息】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/665/detail/11237


SQLite 数据库编程获取数据表达方式分析信息

SQLite数据库编程获取数据表达方式分析信息

另一种方式是 get_table   sqlite3_get_table 函数:

int sqlite3_get_table(sqlite3*db,const char *sql,

char***resultp,

int *nrow,

int *ncolumn,

char **errmsg);

sal = "select * from info ; ";

sqlite3_get_table (db , sql , &result, &row , &col , &err) ;

if (err) {

printf ( "err : %s \n" ,err) ;

}

sqlite3_close (db);

return 0;

}

定义 result

int main (int argc , char **argv)

{

sqlite3 *db = NULL;

int ret;char *err =NULL;

char *sql;int row,col ,i;

char **result;

ret =sqlite3_open ( "stu . db " , &db ) ;

if(ret != SQLITE_OK) {

printf ( "open error\n " ) ;

return -1;

}

sal = "select * from info ; ";

sqlite3_get_table (db , sql , &result, &row , &col , &err) ;

if (err) {

printf ( "err : %s \n" ,err) ;

sqlite3_close (db);

return -1;

}

如果出错 return -1;如果没有出错,释放资源

//处理读取到的数据包信息

根据之前的课程,我们知道它的数据是一格一格存储的,这歌表的格数是行乘以列。

for (i=0;i<row*col;i++) {

/将 result 的结果都打印出来

printf ( "result [ %d]= %s \n" ,i ,result[i]);

}

Sqlite3_free_table(result);

sqlite3_close (db);

return 0;

}

执行查看效果:

edu@edu : sqlite$

edu@edu : sqlite$make; ./example

gcc -c example.c -o example.o -Wall

gcc example.o sqlite3.o -o example -wall -lpthread -ld

result[0]= id

result[1]= name

result[2]addr

result[3] = time

result[4] = date

result[5] = 119

result[6]= yy

result[7] = bj

result[8]= (null)

result[9]= (null)

result[10] = 102

result[11] = ls

result[12] = tj

result[13] = (null)

result[14] = (null)

。。。

result[22] = cd

result[23] = (null)

result[24]= (null)

result[25] = 105

result[26]= xw

result[27]= cq

result[28] = (null)

result[29] = (null)

result[30]= 107

result[31] = (null)

result[32] = (null)

result[33] = (null)

result[34] = (null)

result[35]= 108

result[36]= xx

result[37]= ty

result[38]= 08:01:40

result[39]= 2020-04-28

result[40]= 120

result[41]zz

result[42] = ts

result[43] = 09:55:00

result[44]= 2020-04-28

通过以上数据,col 其实是 5,行是 9 行,如果认为以上数据不方便查看,可以在代码中在加入一个 for 循环。

int main (int argc , char **argv)

{

sqlite3 *db = NULL;

int ret;char *err =NULL;

/再加入一个变量 j、定义索引

char *sql;int row,col,i,j,index=0;

char **result;

ret =sqlite3_open ( "stu . db " , &db ) ;

if(ret != SQLITE_OK) {

printf ( "open error\n " ) ;

return -1;

}

sal = "select * from info ; ";

sqlite3_get_table (db , sql , &result, &row , &col , &err) ;

if (err) {

printf ( "err : %s \n" ,err) ;

sqlite3_close (db);

return -1;

}

for (i=0;i<row;i++) {//col=5

printf(“第%d行:\n”,i);

for(j-=0;j<col;j++) {

因为i和j会归零,所以打印不能是i和j,所以要单独定义一个索引

printf ( "result [ %d]= %s \n" ,j ,result[index]);

}

Sqlite3_free_table(result);

sqlite3_close (db);

return 0;

}

运行查看效果:

第 0 行:

result[0]= id

result[1] = name

result[2] = addr

result[3] = time

result[4] = date

第 1 行:

result[0] = 119

result[1] = yy

result[2] = bj

result[3]= (null)

result[4] = (null)

第 2 行:

result[0]= 102

result[1]= ls

result[2]= tj

result[3] = (null)

result[4] = (null)

第 3 行:

result[0] = 110

result[1] = ww

result[2] = sh

result[3] = (null)

result[4] = (null)

通过以上方法,每一行数据单独导出。

以上就是数据库编程,数据库编程在实际过程只比命令行语句应用的更多,更频繁,使用命令行语句并不是最常见的。

一个是跟编程相结合,另外一个是雏形化工具,数据库要快速实行可视化浏览就要使用这个工具。

SQLite 数据库是轻量级的,不仅可以在大型服务器端部署,最关键是可以很容易部署到边缘计算设备中,甚至是一个中端设备中;代码是可见的,移植成本为零,整个源码都给到用户,用户根据自己需求进行编译即可。

相关文章
|
1月前
|
存储 缓存 数据库
数据库数据删除策略:硬删除vs软删除的最佳实践指南
在项目开发中,“删除”操作常见但方式多样,主要分为硬删除与软删除。硬删除直接从数据库移除数据,操作简单、高效,但不可恢复;适用于临时或敏感数据。软删除通过标记字段保留数据,支持恢复和审计,但增加查询复杂度与数据量;适合需追踪历史或可恢复的场景。两者各有优劣,实际开发中常结合使用以满足不同需求。
94 4
|
6月前
|
存储 人工智能 Cloud Native
云栖重磅|从数据到智能:Data+AI驱动的云原生数据库
在9月20日2024云栖大会上,阿里云智能集团副总裁,数据库产品事业部负责人,ACM、CCF、IEEE会士(Fellow)李飞飞发表《从数据到智能:Data+AI驱动的云原生数据库》主题演讲。他表示,数据是生成式AI的核心资产,大模型时代的数据管理系统需具备多模处理和实时分析能力。阿里云瑶池将数据+AI全面融合,构建一站式多模数据管理平台,以数据驱动决策与创新,为用户提供像“搭积木”一样易用、好用、高可用的使用体验。
云栖重磅|从数据到智能:Data+AI驱动的云原生数据库
|
2月前
|
数据库 Python
【YashanDB知识库】python驱动查询gbk字符集崖山数据库CLOB字段,数据被驱动截断
【YashanDB知识库】python驱动查询gbk字符集崖山数据库CLOB字段,数据被驱动截断
|
4月前
|
数据采集 数据库 Python
有哪些方法可以验证用户输入数据的格式是否符合数据库的要求?
有哪些方法可以验证用户输入数据的格式是否符合数据库的要求?
226 75
|
1月前
|
人工智能 关系型数据库 分布式数据库
让数据与AI贴得更近,阿里云瑶池数据库系列产品焕新升级
4月9日阿里云AI势能大会上,阿里云瑶池数据库发布重磅新品及一系列产品能力升级。「推理加速服务」Tair KVCache全新上线,实现KVCache动态分层存储,显著提高内存资源利用率,为大模型推理降本提速。
|
2月前
|
存储 监控 数据挖掘
消防行业如何借助时序数据库 TDengine 打造高效的数据监控与分析系统
本篇文章来自“2024,我想和 TDengine 谈谈”征文活动的优秀投稿,深入探讨了如何在消防行业中运用 TDengine 进行业务建模。文章重点介绍了如何通过 TDengine 的超级表、标签设计和高效查询功能,有效管理消防监控系统中的时序数据。作者详细阐述了实时监控、报警系统以及历史数据分析在消防行业中的应用,展示了 TDengine 在数据压缩、保留策略和分布式架构下的强大优势。
57 0
|
3月前
|
SQL 数据建模 BI
【YashanDB 知识库】用 yasldr 配置 Bulkload 模式作单线程迁移 300G 的业务数据到分布式数据库,迁移任务频繁出错
问题描述 详细版本:YashanDB Server Enterprise Edition Release 23.2.4.100 x86_64 6db1237 影响范围: 离线数据迁移场景,影响业务数据入库。 外场将部分 NewCIS 的报表业务放到分布式数据库,验证 SQL 性能水平。 操作系统环境配置: 125G 内存 32C CPU 2T 的 HDD 磁盘 问题出现的步骤/操作: 1、部署崖山分布式数据库 1mm 1cn 3dn 单线启动 yasldr 数据迁移任务,设置 32 线程的 bulk load 模式 2、观察 yasldr.log 是否出现如下错
|
3月前
|
存储 数据挖掘 数据处理
2600 万表流计算分析如何做到? 时序数据库 TDengine 助力数百家超市智能化转型
在生鲜超市的高效运营中,实时数据分析至关重要。万象云鼎的“云鲜生”通过智能秤+网关+软件系统的组合,实现了销售数据的精准管理与优化。而在数据处理方面,TDengine 的流计算能力成为了这一方案的核心支撑。本文详细分享了“云鲜生”如何利用 TDengine 高效存储和分析海量销售数据,在优化超市运营、提升用户体验的同时,解决高基数分组、高并发查询等技术挑战。
79 1
|
3月前
|
JSON Java 关系型数据库
Hutool创建数据源工厂动态查询不同数据库不同数据表的数据
Hutool创建数据源工厂动态查询不同数据库不同数据表的数据
68 2

热门文章

最新文章