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

相关文章
|
10月前
|
存储 JSON 关系型数据库
【干货满满】解密 API 数据解析:从 JSON 到数据库存储的完整流程
本文详解电商API开发中JSON数据解析与数据库存储的全流程,涵盖数据提取、清洗、转换及优化策略,结合Python实战代码与主流数据库方案,助开发者构建高效、可靠的数据处理管道。
|
8月前
|
人工智能 数据挖掘 数据库
通义灵码产品演示: 数据库设计与数据分析
本演示展示如何使用通义灵码进行数据库设计与数据分析。通过SQLite构建电商订单表,利用AI生成表结构、插入样本数据,并完成多维度数据分析及可视化图表展示,体现AI在数据库操作中的高效能力。
653 7
|
8月前
|
数据采集 关系型数据库 MySQL
python爬取数据存入数据库
Python爬虫结合Scrapy与SQLAlchemy,实现高效数据采集并存入MySQL/PostgreSQL/SQLite。通过ORM映射、连接池优化与批量提交,支持百万级数据高速写入,具备良好的可扩展性与稳定性。
|
9月前
|
存储 数据管理 数据库
数据字典是什么?和数据库、数据仓库有什么关系?
在数据处理中,你是否常困惑于字段含义、指标计算或数据来源?数据字典正是解答这些问题的关键工具,它清晰定义数据的名称、类型、来源、计算方式等,服务于开发者、分析师和数据管理者。本文详解数据字典的定义、组成及其与数据库、数据仓库的关系,助你夯实数据基础。
数据字典是什么?和数据库、数据仓库有什么关系?
|
8月前
|
人工智能 Java 关系型数据库
使用数据连接池进行数据库操作
使用数据连接池进行数据库操作
213 11
|
8月前
|
存储 数据库 开发者
Python SQLite模块:轻量级数据库的实战指南
本文深入讲解Python内置sqlite3模块的实战应用,涵盖数据库连接、CRUD操作、事务管理、性能优化及高级特性,结合完整案例,助你快速掌握SQLite在小型项目中的高效使用,是Python开发者必备的轻量级数据库指南。
670 0
|
11月前
|
安全 Java 数据库
Jasypt加密数据库配置信息
本文介绍了使用 Jasypt 对配置文件中的公网数据库认证信息进行加密的方法,以提升系统安全性。主要内容包括:1. 背景介绍;2. 前期准备,如依赖导入及版本选择;3. 生成密钥并实现加解密测试;4. 在配置文件中应用加密后的密码,并通过测试接口验证解密结果。确保密码安全的同时,保障系统的正常运行。
769 3
Jasypt加密数据库配置信息
|
9月前
|
存储 关系型数据库 数据库
【赵渝强老师】PostgreSQL数据库的WAL日志与数据写入的过程
PostgreSQL中的WAL(预写日志)是保证数据完整性的关键技术。在数据修改前,系统会先将日志写入WAL,确保宕机时可通过日志恢复数据。它减少了磁盘I/O,提升了性能,并支持手动切换日志文件。WAL文件默认存储在pg_wal目录下,采用16进制命名规则。此外,PostgreSQL提供pg_waldump工具解析日志内容。
837 0
|
11月前
|
存储 SQL Java
数据存储使用文件还是数据库,哪个更合适?
数据库和文件系统各有优劣:数据库读写性能较低、结构 rigid,但具备计算能力和数据一致性保障;文件系统灵活易管理、读写高效,但缺乏计算能力且无法保证一致性。针对仅需高效存储与灵活管理的场景,文件系统更优,但其计算短板可通过开源工具 SPL(Structured Process Language)弥补。SPL 提供独立计算语法及高性能文件格式(如集文件、组表),支持复杂计算与多源混合查询,甚至可替代数据仓库。此外,SPL 易集成、支持热切换,大幅提升开发运维效率,是后数据库时代文件存储的理想补充方案。