欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 高考 > 【数据库编程-SQLite3(二)】API-增删改查基础函数-(含源码)

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

2025/4/30 11:15:31 来源:https://blog.csdn.net/paidaxing_s/article/details/139725285  浏览:    关键词:【数据库编程-SQLite3(二)】API-增删改查基础函数-(含源码)

学习分享

  • 1、sqlite3_exec函数
    • 1.1、使用sqlite3_exec进行【查】操作
      • 1.1.1、callback函数
    • 1.2、使用sqlite3_exec进行【增、删、改】操作
  • 2、sqlite3_get_table函数
    • 2.1、使用sqlite3_get_table函数进行【查】操作

1、sqlite3_exec函数

在这里插入图片描述

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

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

#include <QApplication>
#include "sqlite3.h"
#include <QDebug>
#include <QString>//全局变量
//返回数据       列数     结果集二维数组   列名
//回调函数,每查询到一次数据就执行,没有总的数据集
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 <QApplication>
#include "sqlite3.h"
#include <QDebug>
#include <QString>
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 <QApplication>
#include "sqlite3.h"
#include <QDebug>
#include <QString>
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();
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词