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

相关文章
|
28天前
|
关系型数据库 MySQL 数据库
Python处理数据库:MySQL与SQLite详解 | python小知识
本文详细介绍了如何使用Python操作MySQL和SQLite数据库,包括安装必要的库、连接数据库、执行增删改查等基本操作,适合初学者快速上手。
190 15
|
2月前
|
存储 SQL 数据库
数据库知识:了解SQLite或其他移动端数据库的使用
【10月更文挑战第22天】本文介绍了SQLite在移动应用开发中的应用,包括其优势、如何在Android中集成SQLite、基本的数据库操作(增删改查)、并发访问和事务处理等。通过示例代码,帮助开发者更好地理解和使用SQLite。此外,还提到了其他移动端数据库的选择。
53 8
|
2月前
|
存储 关系型数据库 MySQL
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
876 2
|
3月前
|
Web App开发 SQL 数据库
使用 Python 解析火狐浏览器的 SQLite3 数据库
本文介绍如何使用 Python 解析火狐浏览器的 SQLite3 数据库,包括书签、历史记录和下载记录等。通过安装 Python 和 SQLite3,定位火狐数据库文件路径,编写 Python 脚本连接数据库并执行 SQL 查询,最终输出最近访问的网站历史记录。
52 4
|
3月前
|
存储 关系型数据库 数据库
轻量级数据库的利器:Python 及其内置 SQLite 简介
轻量级数据库的利器:Python 及其内置 SQLite 简介
78 3
|
3月前
|
应用服务中间件 PHP Apache
PbootCMS提示错误信息“未检测到您服务器环境的sqlite3数据库扩展...”
PbootCMS提示错误信息“未检测到您服务器环境的sqlite3数据库扩展...”
|
3月前
|
存储 缓存 关系型数据库
sqlite 数据库 介绍
sqlite 数据库 介绍
63 0
|
15天前
|
存储 Oracle 关系型数据库
数据库传奇:MySQL创世之父的两千金My、Maria
《数据库传奇:MySQL创世之父的两千金My、Maria》介绍了MySQL的发展历程及其分支MariaDB。MySQL由Michael Widenius等人于1994年创建,现归Oracle所有,广泛应用于阿里巴巴、腾讯等企业。2009年,Widenius因担心Oracle收购影响MySQL的开源性,创建了MariaDB,提供额外功能和改进。维基百科、Google等已逐步替换为MariaDB,以确保更好的性能和社区支持。掌握MariaDB作为备用方案,对未来发展至关重要。
39 3
|
15天前
|
安全 关系型数据库 MySQL
MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!
《MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!》介绍了MySQL中的三种关键日志:二进制日志(Binary Log)、重做日志(Redo Log)和撤销日志(Undo Log)。这些日志确保了数据库的ACID特性,即原子性、一致性、隔离性和持久性。Redo Log记录数据页的物理修改,保证事务持久性;Undo Log记录事务的逆操作,支持回滚和多版本并发控制(MVCC)。文章还详细对比了InnoDB和MyISAM存储引擎在事务支持、锁定机制、并发性等方面的差异,强调了InnoDB在高并发和事务处理中的优势。通过这些机制,MySQL能够在事务执行、崩溃和恢复过程中保持
42 3
|
15天前
|
SQL 关系型数据库 MySQL
数据库灾难应对:MySQL误删除数据的救赎之道,技巧get起来!之binlog
《数据库灾难应对:MySQL误删除数据的救赎之道,技巧get起来!之binlog》介绍了如何利用MySQL的二进制日志(Binlog)恢复误删除的数据。主要内容包括: 1. **启用二进制日志**:在`my.cnf`中配置`log-bin`并重启MySQL服务。 2. **查看二进制日志文件**:使用`SHOW VARIABLES LIKE &#39;log_%&#39;;`和`SHOW MASTER STATUS;`命令获取当前日志文件及位置。 3. **创建数据备份**:确保在恢复前已有备份,以防意外。 4. **导出二进制日志为SQL语句**:使用`mysqlbinlog`
57 2

热门文章

最新文章