IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> SQLite3数据库连接查询(c++篇) -> 正文阅读

[大数据]SQLite3数据库连接查询(c++篇)

简介

SQLite3作为一个轻量级数据库引擎,拥有无服务器,无需外部依赖,可夸平台等特性。

将SQLite与项目结合

1,将源码文件导入到项目代码中:

由于SQLite是开源的,所以大家可以自行前往开源社区下载源码,或者在我的上传资源里下载;

sqlite3.c
sqlite3.h

2,连接数据库

函数:int sqlite3_open(const char *zFilename,sqlite3 **ppDb)
功能:打开SQLite数据库
参数:
zFilename :数据库名称(包含路径)
ppDb :指向sqlite句柄的指针,后面对数据库所有的操作都要依赖这个句柄
返回值:成功返回0,失败返回错误码(非零)

void OpenDB()
{
	sqlite3* pSQLite = NULL;        							
    std::string strPath = "SI.db";                             //数据库存储路径                                                          
    int result = sqlite3_open(strPath .c_str(), &pSQLite);     // 根据路径打开数据库连接。如果数据库不存在,则创建。       
    if (result == SQLITE_OK)
    {
        std::clog << "数据库连接成功"<<endl;
    }
    else {
        std::clog << "数据库连接失败"<<endl;
    }
}

2,查询数据库-方法1

函数:int sqlite3_get_table(sqlite3 db, const char sql, charresultp, intnrow, int ncolumn, char* errmsg);
功能:执行SQL操作 -- 不使用回调函数
参数: db :数据库句柄 sql :SQL语句
resultp :用来指向sql执行结果的指针
nrow:满足 条件的记录的数目
ncolumn :每条记录包含的字段数目
errmsg :错误信息指针的地址
返回值 :成功返回0,失败返回错误码(非零)

void QueryDB(string strSQL)
{
    int iRt = 0;                //执行结果,正确返回0,错误返回非零值
    char * zErrMsg = NULL;      //错误信息指针的地址
    char ** pResult = NULL;     //用来指向sql执行结果的指针
    int nrow = 0;               //满足条件的记录数目
    int ncolumn = 0;            //每条记录包含的字段数据
    iRt = sqlite3_get_table(m_pSQLite, strSQL.c_str(), &pResult, &nrow, &ncolumn, &zErrMsg);
    if (iRt != SQLITE_OK)
    {
        printf("执行sql语句失败\n");
        return -1;
    } 
    
    int iIndex = ncolumn;
    for (int i = 0; i < nrow; i++)
    {
        for (int j = 0; j < ncolumn; j++)
        {
            printf("%-8s : %-8s\n", pResult[j], pResult[iIndex]);//第j行,第iIndex列数据;
            iIndex++;
        }
        printf("***************************\n");
    }
    sqlite3_free_table(pResult);                                //释放查询结果指针
}

3,查询数据库-方法2

函数:int sqlite3_exec(sqlite3 *db, const char *sql, sqlite3_callback callback, void *, char **errmsg);
功能:执行SQL操作 –使用回调函数
参数:
db :数据库句柄
sql :SQL语句,就是我们前面两章用于操作表的增删改查语句
callback:回调函数,每返回一条记录,则调用一次回调函数
errmsg :错误信息指针的地址 返回值:成功返回0,失败返回错误码
返回值:成功返回0,失败返回错误码

//回调函数
int callback(void *para, int f_num, char **f_val, char **f_name)
{
    for (int i = 0; i < f_num; i++)
    {
        printf("%-8s", f_val[i]);
    }
    printf("\n");
    return 0;
}

void QueryDB_1(string strSQL)
{
    int iRt = 0;                //执行结果,正确返回0,错误返回非零值
    char * zErrMsg = NULL;      //错误信息指针的地址
    char ** pResult = NULL;     //用来指向sql执行结果的指针
    int nrow = 0;               //满足条件的记录数目
    int ncolumn = 0;            //每条记录包含的字段数据
    iRt = sqlite3_exec(m_pSQLite, strSQL.c_str(), &callback, NULL, &zErrMsg);
    if (iRt != SQLITE_OK)
    {
        printf("执行sql语句失败\n");
    }
     printf("执行sql语句成功\n");
}

3,断开数据库连接

函数:int sqlite3_close(sqlite3 *db)
功能:执行SQL操作 –使用回调函数
参数:
db :数据库句柄
返回值:成功返回0,失败返回错误码

void CloseDB()
{
	int iRt = sqlite3_close(m_pSQLite);
	if(iRt != SQLITE_OK)
	{
		printf("数据库连接断开失败\n");
	}
	printf("数据库连接断开成功\n");
}

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-07-03 10:53:18  更:2022-07-03 10:55:06 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/20 4:44:56-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码