• Qt Sqlite封装类SqliteUtil


    在网上找了很久关于Qt访问Sqlite数据库的封装类,但是没能找到一个很好的访问调用类,自己写了一个出来,在这里分享一下,希望能对大家有所帮助,小弟不才,写代码没多少经验,如果有什么不恰当之处,请批评指出:

    sqliteutil.h

    #ifndef SQLITEUTIL_H
    #define SQLITEUTIL_H
    
    #include <QSqlDatabase>
    #include <QSqlQuery>
    #include <QList>
    #include <QVariant>
    #include <QSqlQueryModel>
    
    
    class SqliteUtil
    {
    public:
        explicit SqliteUtil(const QString& strDatabase = "smart.db");
        ~SqliteUtil();
        
        bool createConnection(const QString& strConn);
    
        QSqlRecord ExecuteRecord(const QString& strQuery);
        QSqlRecord ExecuteRecord(const QString& strQuery, QList<QVariant> lstParameter);
        QSqlRecord ExecuteRecord(const QString& strQuery, QVariant Parameter);
    
        QSqlQuery ExecuteSqlQuery(const QString& strQuery, QList<QVariant> lstParameter);
        QSqlQuery ExecuteSqlQuery(const QString& strQuery, QVariant Parameter);
        QSqlQuery ExecuteSqlQuery(const QString& strQuery);
    
        int ExecuteInt(const QString& strQuery);
        int ExecuteInt(const QString& strQuery, QList<QVariant> lstParameter);
        int ExecuteInt(const QString& strQuery, QVariant Parameter);
    
        bool Execute(const QString& strQuery, QVariant Parameter);
        bool Execute(const QString& strQuery, QList<QVariant> lstParameter);
    
        QString ExecuteString(const QString& strQuery);
    
        void ExecuteQueryModel(QSqlQueryModel *p_queryModel, const QString& strQuery);
        void ExecuteQueryModel(QSqlQueryModel *p_queryModel, const QString& strQuery,
                               QList<QVariant> lstParameter);
        void ExecuteQueryModel(QSqlQueryModel *p_queryModel, const QString& strQuery, QVariant Parameter);
    
    
    private:
        QSqlDatabase m_db;
        QString m_strDatabase;
        
    };
    
    #endif // SQLITEUTIL_H

    sqliteutil.cpp

    #include "sqliteutil.h"
    #include <QDebug>
    
    
    
    /****************************************************************************
    **
    ** Copyright (C) 2014 scutemos-huabo
    ** All rights reserved.
    ** Contact: wiessharling@qq.com
    ** Please keep the author contact information.
    ** 2014-07-16
    **
    ****************************************************************************/
    
    
    
    
    SqliteUtil::SqliteUtil(const QString &strDatabase) :
        m_strDatabase(strDatabase)
    {
        createConnection(m_strDatabase);
    }
    
    SqliteUtil::~SqliteUtil()
    {
        m_db.close();
    }
    
    bool SqliteUtil::createConnection(const QString &database)
    {
        //与数据库建立连接
        if (QSqlDatabase::contains("my_conn"))
        {
            m_db = QSqlDatabase::database("my_conn");
        }
        else
        {
            m_db = QSqlDatabase::addDatabase("QSQLITE", "my_conn");
        }
        //设置数据库名
        m_db.setDatabaseName(database);
        //打开数据库
        if (!m_db.open())
        {
            qDebug() << "Open database failed!";
            return false;
        }
        else
        {
            return true;
        }
    }
    
    
    
    QSqlRecord SqliteUtil::ExecuteRecord(const QString& strQuery)
    {
        if(!m_db.isOpen())
        {
            createConnection(m_strDatabase);
        }
        QSqlQuery query(m_db);
        query.prepare(strQuery);
        query.exec();
        return query.record();
    }
    
    QSqlRecord SqliteUtil::ExecuteRecord(const QString& strQuery, QList<QVariant> lstParameter)
    {
        if(!m_db.isOpen())
        {
            createConnection(m_strDatabase);
        }
        QSqlQuery query(m_db);
        query.prepare(strQuery);
        for(int i = 0; i < lstParameter.count(); i++)
            query.bindValue(i, lstParameter[i]);
        query.exec();
        return query.record();
    }
    
    QSqlRecord SqliteUtil::ExecuteRecord(const QString& strQuery, QVariant Parameter)
    {
        if(!m_db.isOpen())
        {
            createConnection(m_strDatabase);
        }
        QSqlQuery query(m_db);
        query.prepare(strQuery);
        query.bindValue(0, Parameter);
        query.exec();
        return query.record();
    }
    
    QSqlQuery SqliteUtil::ExecuteSqlQuery(const QString& strQuery, QList<QVariant> lstParameter)
    {
        if(!m_db.isOpen())
        {
            createConnection(m_strDatabase);
        }
        QSqlQuery query(m_db);
        query.prepare(strQuery);
        query.setForwardOnly(true);
        for(int i = 0; i < lstParameter.count(); i++)
            query.bindValue(i, lstParameter[i]);
        query.exec();
        return query;
    }
    
    QSqlQuery SqliteUtil::ExecuteSqlQuery(const QString& strQuery, QVariant Parameter)
    {
        if(!m_db.isOpen())
        {
            createConnection(m_strDatabase);
        }
        QSqlQuery query(m_db);
        query.setForwardOnly(true);
        query.prepare(strQuery);
        query.bindValue(0, Parameter);
        query.exec();
        return query;
    }
    
    QSqlQuery SqliteUtil::ExecuteSqlQuery(const QString& strQuery)
    {
        if(!m_db.isOpen())
        {
            createConnection(m_strDatabase);
        }
        QSqlQuery query(m_db);
        query.setForwardOnly(true);
        query.prepare(strQuery);
        query.exec();
        return query;
    }
    
    int SqliteUtil::ExecuteInt(const QString& strQuery)
    {
        if(!m_db.isOpen())
        {
            createConnection(m_strDatabase);
        }
        QSqlQuery query(m_db);
        query.prepare(strQuery);
        query.exec();
        int ID = 0;
        while(query.next())
        {
            ID = query.value(0).toInt();
        }
        return ID;
    }
    
    int SqliteUtil::ExecuteInt(const QString& strQuery, QList<QVariant> lstParameter)
    {
        if(!m_db.isOpen())
        {
            createConnection(m_strDatabase);
        }
        QSqlQuery query(m_db);
        query.prepare(strQuery);
        for(int i = 0; i < lstParameter.count(); i++)
            query.bindValue(i, lstParameter[i]);
        query.exec();
        int ID = 0;
        while(query.next())
        {
            ID = query.value(0).toInt();
        }
        return ID;
    }
    
    int SqliteUtil::ExecuteInt(const QString& strQuery, QVariant Parameter)
    {
        if(!m_db.isOpen())
        {
            createConnection(m_strDatabase);
        }
        QSqlQuery query(m_db);
        query.prepare(strQuery);
        query.bindValue(0, Parameter);
        query.exec();
        int ID = 0;
        while(query.next())
        {
            ID = query.value(0).toInt();
        }
        return ID;
    }
    
    bool SqliteUtil::Execute(const QString& strQuery, QVariant Parameter)
    {
        if(!m_db.isOpen())
        {
            createConnection(m_strDatabase);
        }
        QSqlQuery query(m_db);
        query.prepare(strQuery);
        query.bindValue(0, Parameter);
        return query.exec();
    }
    
    bool SqliteUtil::Execute(const QString& strQuery, QList<QVariant> lstParameter)
    {
        if(!m_db.isOpen())
        {
            createConnection(m_strDatabase);
        }
        QSqlQuery query(m_db);
        query.prepare(strQuery);
        for(int i = 0; i < lstParameter.count(); i++)
            query.bindValue(i, lstParameter[i]);
        return query.exec();
    }
    
    QString SqliteUtil::ExecuteString(const QString& strQuery)
    {
        if(!m_db.isOpen())
        {
            createConnection(m_strDatabase);
        }
        QSqlQuery query(m_db);
        query.prepare(strQuery);
        query.exec();
        QString temp;
        while(query.next())
        {
            temp = query.value(0).toString();
        }
        return temp;
    }
    
    void SqliteUtil::ExecuteQueryModel(QSqlQueryModel *p_queryModel, const QString& strQuery)
    {
        if(!m_db.isOpen())
        {
            createConnection(m_strDatabase);
        }
        p_queryModel->setQuery(strQuery, m_db);
    }
    
    void SqliteUtil::ExecuteQueryModel(QSqlQueryModel *p_queryModel, const QString& strQuery,
                           QList<QVariant> lstParameter)
    {
        if(!m_db.isOpen())
        {
            createConnection(m_strDatabase);
        }
        QSqlQuery query(m_db);
        query.prepare(strQuery);
        for(int i = 0; i < lstParameter.count(); i++)
            query.bindValue(i, lstParameter[i]);
        p_queryModel->setQuery(query);
    }
    
    void SqliteUtil::ExecuteQueryModel(QSqlQueryModel *p_queryModel, const QString& strQuery,
                                       QVariant Parameter)
    {
        if(!m_db.isOpen())
        {
            createConnection(m_strDatabase);
        }
        QSqlQuery query(m_db);
        query.prepare(strQuery);
        query.bindValue(0, Parameter);
        p_queryModel->setQuery(query);
     }
  • 相关阅读:
    Spring Boot相关组件的添加
    递归详解
    SpringBoot的特性
    常规属性配置
    SpringBoot集成mybatis和mybatis generator
    Profile配置
    SpringBoot的运行原理
    Thymeleaf模板引擎
    入口类和@SpringBootApplication
    C++的rand()
  • 原文地址:https://www.cnblogs.com/wiessharling/p/3848962.html
Copyright © 2020-2023  润新知