QT+SQLITE

本文介绍了一个自定义的SQLite管理类的设计与实现细节,包括类的方法如查询记录数量、删除记录等,并提供了具体的实现代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、自己设计的一个SQLITE 管理类

头文件

#ifndef AEYE_PTC_SQLITE
#define AEYE_PTC_SQLITE
#include "qobject.h"
#include <QtSql/QSqlQuery>
#include <QDebug>
#include <QtSql/QSqlError>
#include <QtSql/QSqlDatabase>
#include <qmap.h>
#include "Def_Struct.h"
#include <QDateTime>
#include <QMutex>
#include <QVector>
#include "PTCCommunication.h"
 #ifdef _DEBUG
 #pragma comment(lib, "QtSqld4.lib")
 #else
#pragma comment(lib, "QtSql4.lib")
#endif

#define AYASQLITE SQliteManger::getInstance()

class SQliteManger : public QObject
{
    Q_OBJECT
private:
    explicit  SQliteManger(QObject *parent = 0);
public:
    static SQliteManger * getInstance() 
    {
        if (m_InstanceSQ == NULL)
            m_InstanceSQ = new SQliteManger();

        return m_InstanceSQ;
    }

    static void realseInstance()
    {
        if(m_InstanceSQ!=NULL)
        {
            delete m_InstanceSQ;
            m_InstanceSQ=NULL;
        }
    }

private:
    static SQliteManger * m_InstanceSQ;
    QString m_strDataBaceName;
    QMutex m_QMutex;                    // 互斥量
    //QSqlQuery query;
public:

    //bool InsertSql(QMap<QString,QString> &mapSS,QMap<QString,int> &mapSI,QString _table);
    bool UpdataSql(QMap<QString,QString> mapSS,QMap<QString,int> mapSI,QString _table,QString strConditions);
    int SelectMaxId(QString _table);
    int SelectCountItems(QString _table);
    bool DeleteSql(bool isAll,int iID,QString _table);
    //T_PersonBaceInfor
    bool InsertBaceInfor(StructCheckMBRT baceinfor,int isUpdata);
    void SelectBaceInfor(int index,QVector<int>& arrINT,QMap<int,int>& mapUp);
    //T_MODES
    bool InsertModes(StruModel modeInfor,int isUpdata);
    bool SelectModes(int index,QVector<int>& arrINT,QMap<int,int>& mapUp); 

    //t_num_..
    bool InsertAddr(QString upcode,QString selfcode,QString desc,QString _tableName);
    bool SelectAddr(QVector<StruAddrList>& arrAddr,QString _tableName);

    //t_login
    bool login(QString username,QString password);
    bool UpdataFailNum(QString TableName , int updataNum,int id);
};
#endif

.Cpp 文件

int SQliteManger::SelectCountItems(QString _table)
{

    QMutexLocker lock(&m_QMutex);
    QString strSql;
    strSql = QString("select count(*) max from %1;").arg(_table);
    QSqlDatabase database;
    if(QSqlDatabase::contains("GBond"))
        database = QSqlDatabase::database("GBond");
    else
    {
        database = QSqlDatabase::addDatabase("QSQLITE", "GBond");
        database.setDatabaseName("../Resources/db/TYCL.db");
    }
    if(!database.open())
    {  
        database.close();
        return false;
    }
    {
        QSqlQuery query;
        int ret = 0;
        query = QSqlQuery(database);
        if (!query.exec(strSql))
        {
            QSqlError error = query.lastError();
            qDebug()<<error.databaseText();
            QSqlDatabase::removeDatabase("QSQLITE");
            database.close();
            return -1;
        }
        while (query.next())
        {

            ret = query.value(0).toInt();
            QSqlDatabase::removeDatabase("QSQLITE");
            database.close();
            return  ret;
        }
    }
    database.close();
    QSqlDatabase::removeDatabase("QSQLITE");
    return -1;
}

bool SQliteManger::DeleteSql(bool isAll,int iID,QString _table)
{
    QMutexLocker lock(&m_QMutex);
    QSqlDatabase database;
    if(QSqlDatabase::contains("GBond"))
        database = QSqlDatabase::database("GBond");
    else
    {
        database = QSqlDatabase::addDatabase("QSQLITE", "GBond");
        database.setDatabaseName("../Resources/db/TYCL.db");
    }
    if(!database.open())
    {  
        database.close();
        return false;
    }
    QString strSql;
    if (isAll)
    {
        strSql = QString("delete from %1 where id = %2")
            .arg(_table)
            .arg(iID);
    }
    else
    {
        strSql = QString("delete from %1").arg(_table);
    }
    {
        QSqlQuery query;
        query = QSqlQuery(database);
        if (!query.exec(strSql))
        {
            QSqlError error = query.lastError();
            qDebug()<<error.databaseText();
            database.close();
            QSqlDatabase::removeDatabase("QSQLITE");
            return false;
        }
    }
    database.close();
    QSqlDatabase::removeDatabase("QSQLITE");
    return true;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值