QSqlDatabase QSqlQuery 构建数据库操作基本框架

本文介绍了如何利用QSqlDatabase和QSqlQuery构建数据库操作的基本框架。通过封装DataBaseAccess类,隐藏SQL语句实现细节,重点强调了选择QSQLITE驱动和正确编写SQL语句的重要性。
摘要由CSDN通过智能技术生成

一、效果图
在这里插入图片描述
二、代码

#ifndef DATABASEACCESS_H
#define DATABASEACCESS_H

#include <QObject>
#include <QMutex>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QMap>
#include <QVector>
#include <QSqlDriver>
#include <QDebug>
#include <QSqlRecord>
#include <QSqlError>
#include <QSqlResult>
#include <QSqlQueryModel>
#include <QDateTime>
//提供数据库、表基本操作框架
class DataBaseAccess
{
   
public:
    explicit DataBaseAccess();
    ~DataBaseAccess();
    static DataBaseAccess* instance();
    //指定数据库,指定表 插入数据
    void insertData(const QString& db,const QString& table,const QVector<QStringList>& values);
    //指定数据库,指定表,指定表字段,提取指定条件数据
    void selectData(const QString& db,const QString& table,const QStringList& fields,const QString& filter);
    //指定数据库,指定表,指定表字段,依据指定条件,修改数据
    void updateData(const QString& db,const QString& table,const QStringList& fields,const QStringList& values, const QString& filter);
    //指定数据库,指定表,依据指定条件,删除记录
    void deleteData(const QString& db,const QString& table,const QString& filter);
public:
    void test();
private:
    void init();
    //统一维护数据库 数据表的创建
    void init_dbTableData();
    void init_dbTable();

private:
     static QMutex m_mutex;
     static DataBaseAccess *m_pDBaccess;
     QMap<QString,QStringList> m_dbTableMap;//映射数据库连接和对应的表
};

#endif // DATABASEACCESS_H

#include "databaseaccess.h"
QMutex DataBaseAccess::m_mutex;
DataBaseAccess *DataBaseAccess::m_pDBaccess;
DataBaseAccess::DataBaseAccess()
{
   
    init();
    test();
}

DataBaseAccess::~DataBaseAccess()
{
   

}

DataBaseAccess *DataBaseAccess::instance()
{
   
    if(m_pDBaccess == nullptr){
   
        m_mutex.lock();
        if(m_pDBaccess == nullptr){
   
            m_pDBaccess = new DataBaseAccess;
        }
        m_mutex.unlock();
    }
    return m_pDBaccess;
}

void DataBaseAccess::insertData(const QString &db, const QString &table, const QVector<QStringList> &values)
{
   
    QSqlDatabase database = QSqlDatabase::addDatabase("QSQLITE",db);
    database.setDatabaseName(db);
    if (!database.open()){
   
        qDebug() <&
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值