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

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();
}
  • 7
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQLite数据库增删操作可以通过调用SQLiteOpenHelper类中的getReadableDatabase()或getWritableDatabase()方法来实现。这两个方法不仅可以用于创建和升级数据库,还会返回一个SQLiteDatabase对象,通过这个对象可以进行CRUD操作。 添加数据可以使用SQLiteDatabase的insert()方法,该方法接收三个参数,第一个参数是表名,第二个参数是要插入的数据,第三个参数是用于约束插入数据的条件。 删除数据可以使用SQLiteDatabase的delete()方法,该方法也接收三个参数,第一个参数是表名,第二个参数是用于约束删除某一行或某几行的条件,第三个参数是用于传入条件值。如果不指定约束条件,则默认删除所有行。 修数据可以使用SQLiteDatabase的update()方法,该方法也接收三个参数,第一个参数是表名,第二个参数是要更新的数据,第三个参数是用于约束更新某一行或某几行的条件。 询数据可以使用SQLiteDatabase的query()方法,该方法参数较多,最简单的方法重载需要传入七个参数,包括表名、要询的列名、约束条件等。通过该方法可以获取满足条件的数据。 通过以上方法,可以实现SQLite数据库增删操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [SQLite数据库增删](https://blog.csdn.net/Massimo__JAVA/article/details/125237970)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值