• 【数据库编程-SQLite3(二)】API-增删改查基础函数-(含源码)


    1、sqlite3_exec函数

    在这里插入图片描述

    1.1、使用sqlite3_exec进行【查】操作

    由于sqlite3_exec函数在使用时,需使用回调函数,回调函数为全局变量,程序的耦合性大大提升,不推荐使用该函数进行【查】操作。

    #include 
    #include "sqlite3.h"
    #include 
    #include 
    
    //全局变量
    //返回数据       列数     结果集二维数组   列名
    //回调函数,每查询到一次数据就执行,没有总的数据集
    int callback(void * pdata,int col,char **value,char ** name)
    {
        qDebug()<<col;
        for(int i=0;i<col;i++)
        {
            qDebug()<<name[i]<<":"<<value[i];
        }
        return 0;
    }
    
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
        sqlite3 * dbconnect=nullptr;
        int res=sqlite3_open("./xxxxxx.db",&dbconnect);
        if(res ==SQLITE_OK)
        {
            qDebug()<<"数据打开成功!";
        }else
        {
            qDebug()<<"数据库打开失败!";
            qDebug()<<sqlite3_errmsg(dbconnect);//打印错误信息
            qDebug()<<sqlite3_errcode(dbconnect);//打印错误的代码
        }
        QString name= "hahaha",pwd="654321";
        QString sql= QString("SELECT *FROM tbl_user WHERE user_name ='%1' AND user_pwd ='%2'").arg(name).arg(pwd);
        qDebug()<<sql;
        char * errmeg=nullptr;
        res = sqlite3_exec(dbconnect,sql.toUtf8(),callback,nullptr,&errmeg);
        if(res ==SQLITE_OK)
        {
            qDebug()<<"sql语句执行成功!";
        }else
        {
            qDebug()<<sqlite3_errmsg(dbconnect);//打印错误信息
            qDebug()<<sqlite3_errcode(dbconnect);//打印错误的代码
        }
         //2、关闭数据库
        sqlite3_close(dbconnect);
    
        return a.exec();
    }
    
    

    1.1.1、callback函数

    在这里插入图片描述

    1.2、使用sqlite3_exec进行【增、删、改】操作

    #include 
    #include "sqlite3.h"
    #include 
    #include 
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
        sqlite3 * dbconnect=nullptr;
        //1、打开数据库
        int res=sqlite3_open("./xxxxxx.db",&dbconnect);
        if(res ==SQLITE_OK)
        {
            qDebug()<<"数据打开成功!";
        }else
        {
            qDebug()<<"数据库打开失败!";
            qDebug()<<sqlite3_errmsg(dbconnect);//打印错误信息
            qDebug()<<sqlite3_errcode(dbconnect);//打印错误的代码
        }
        QString sql1="update tbl_user set user_pwd ='121212' where user_name='hahaha';";
        QString sql2="insert into tbl_user values(9,'alalal','123456',0,'2023-08-22 19:53:00');";
        QString sql3="delete  from tbl_user where user_id=7;";
        char * errmeg=nullptr;
        res = sqlite3_exec(dbconnect,sql1.toUtf8(),nullptr,nullptr,&errmeg);
        if(res ==SQLITE_OK)
        {
            qDebug()<<"sql语句执行成功!";
        }else
        {
            qDebug()<<sqlite3_errmsg(dbconnect);//打印错误信息
            qDebug()<<sqlite3_errcode(dbconnect);//打印错误的代码
        }
         //2、关闭数据库
        sqlite3_close(dbconnect);
        return a.exec();
    }
    
    

    2、sqlite3_get_table函数

    在这里插入图片描述

    2.1、使用sqlite3_get_table函数进行【查】操作

    #include 
    #include "sqlite3.h"
    #include 
    #include 
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
        sqlite3 * dbconnect=nullptr;
        //1、打开数据库
        int res=sqlite3_open("./xxxxxx.db",&dbconnect);
        if(res ==SQLITE_OK)
        {
            qDebug()<<"数据打开成功!";
        }else
        {
            qDebug()<<"数据库打开失败!";
            qDebug()<<sqlite3_errmsg(dbconnect);//打印错误信息
            qDebug()<<sqlite3_errcode(dbconnect);//打印错误的代码
        }
    	
    	char **qres =nullptr;
    	int row=0,col=0;
    	char*errmeg =nullptr;
    	QString sql1="SELECT * FROM tbl_user WHERE user_name ='alalal'";
    	int res =sqlite3_get_table(dbconnect,sql1.toUtf8(), &qres, &row, &col, &errmeg);
        if(res ==SQLITE_OK)
        {
            qDebug()<<"sql语句执行成功!";
            if(row>0)
            {	//qres第一行就是字段名称,所以遍历是i从1开始
            	for(int i=0;i<=row;i++)
            	{
            		qDebug()<<qres[i*col]<<" "<<qres[i*col+1]<<" "<<qres[i*col+2]<<" "<<qres[i*col+3];
            	}
            }
        }else
        {
            qDebug()<<sqlite3_errmsg(dbconnect);//打印错误信息
            qDebug()<<sqlite3_errcode(dbconnect);//打印错误的代码
        }
         //2、关闭数据库
        sqlite3_close(dbconnect);
        return a.exec();
    }
    
  • 相关阅读:
    C++:什么情况下函数应该声明为纯虚函数
    Docker搭建ELKF日志分析系统
    架构设计系列5:如何设计高可用架构
    数据挖掘 绪论
    vr航天探索科普展vr航天科普亲子嘉年华
    开源:Taurus.MVC-Java 版本框架 (支持javax.servlet.*和jakarta.servlet.*双系列,内集成微服务客户端)
    C/C++中递归的定义和调用(如何使用递归)
    Android学习笔记 15. ConstraintLayout 约束布局
    UDS诊断入门
    刷题记录:牛客NC50965Largest Rectangle in a Histogram
  • 原文地址:https://blog.csdn.net/paidaxing_s/article/details/139725285