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

嵌入式数据库sqlite测试程序

       继上篇对嵌入式数据库sqlite的移植和注意项,以及使用命令行测试之后,本篇对其进行了更进一步的程序测试,以备近期在项目中使用。测试程序及说明如下:

/**************** 相关函数说明 ******************/
/*  (1)sqlite3_open的函数原型说明:
int sqlite3_open
(const char *filename,   // Database filename (UTF-8) sqlite3 **ppDb          // OUT: SQLite db handle 
);
*//*  (2)sqlite3_exec的函数原型说明:
int sqlite3_exec
(sqlite3*, 			// An open database const char *sql, 	// SQL to be executed sqlite_callback, 	// Callback function void *, 			// 1st argument to callback function char **errmsg 		// Error msg written here 
);*//*  (3)查询数据
int sqlite3_get_table
(sqlite3*, const char *sql, char ***result,  //result中是以数组的形式存放你所查询的数据,首先是表名,再是数据。int *nrow,       //nrow ,ncolumn分别为查询语句返回的结果集的行数,列数,int *ncolumn,    //没有查到结果时返回0char **errmsg
); */ /******************* SQLite数据库测试 *******************/
#include <stdio.h>
#include <stdlib.h>#include "sqlite3.h"#define _DEBUG_ 1int main(int argc, char *argv[])
{sqlite3 *db = NULL;         //数据库const char *sql = 0;char *zErrMsg = 0;          //错误信息储存int nrow = 0, ncolumn = 0;  //行和列char **azResult; 	        //二维数组存放结果int rc = 0;int i = 0;//打开指定的数据库文件,如果不存在将创建一个同名的数据库文件rc = sqlite3_open("rtu_data.db", &db);if( rc ){fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));sqlite3_close(db);return 1;}elseprintf("Open a sqlite3 database named rtu_data.db successfully!\n");//创建一个表,如果该表存在,则不创建,并给出提示信息,存储在 zErrMsg 中sql = "create table data_table(rtuID, registerNum, data);";sqlite3_exec(db, sql, 0, 0, &zErrMsg);#if _DEBUG_printf("zErrMsg = %s \n", zErrMsg);
#endif//插入数据: 2种方法 sql = "insert into data_table(rtuID, registerNum, data) values(01, 0001, 1);";sqlite3_exec(db, sql, 0, 0, &zErrMsg);sql = "insert into \"data_table\" values(02, 0002, 2.0);";sqlite3_exec(db, sql, 0, 0, &zErrMsg);sql = "select * from data_table;";sqlite3_get_table(db, sql, &azResult, &nrow, &ncolumn, &zErrMsg);printf("row=%d, column=%d\n", nrow, ncolumn);printf("\nThe result of querying is:\n");for(i=0; i<(nrow + 1) * ncolumn; i++)printf("azResult[%d] = %s\n", i, azResult[i]);//释放掉 azResult 的内存空间sqlite3_free_table(azResult);#if _DEBUG_printf("zErrMsg = %s \n", zErrMsg);
#endifsqlite3_close(db); //关闭数据库return 0;
}
http://www.lryc.cn/news/581875.html

相关文章:

  • 数据结构之树,二叉树,二叉搜索树
  • Chatbox➕知识库➕Mcp = 机器学习私人语音助手
  • C++ --- list的简单实现
  • 当“漏洞”成为双刃剑——合法披露与非法交易的生死线在哪里?
  • javaweb———html
  • 系统性红斑狼疮治疗靶点CD303
  • 1. http 有哪些版本,你是用的哪个版本,怎么查看
  • 在Ubuntu主机中修改ARM Linux开发板的根文件系统
  • RSTP 拓扑收敛机制
  • IRF堆叠技术的主要优势
  • 操作系统王道考研习题
  • HCIA-生成数协议(STP)
  • uniapp实现的多种时间线模板
  • DolphinScheduler 3.2.0 后端开发环境搭建指南
  • Vue计算属性(computed)全面解析:原理、用法与最佳实践
  • 多级缓存如何应用
  • C++高频知识点(二)
  • 【Pyhton】文件读取:读取整个(大型)文件
  • 铸造软件交付的“自动驾驶”系统——AI大模型如何引爆DevOps革命
  • mybatis-plus从入门到入土(二):单元测试
  • 深度学习图像分类数据集—蘑菇识别分类
  • 利用近距离全景图像进行树状结构骨架化
  • 每天一个前端小知识 Day 23 - PWA 渐进式 Web 应用开发
  • Linux国产与国外进度对垒
  • 如何使用xmind编写测试用例
  • 408第三季part2 - 计算机网络 - 应用层
  • 大数据Hadoop之——Flink1.17.0安装与使用(非常详细)
  • 分布式会话的演进和最佳实践,含springBoot 实现(Java版本)
  • 深度学习图像分类数据集—濒危动物识别分类
  • 李宏毅genai笔记:推理