zoukankan      html  css  js  c++  java
  • 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);
     }
  • 相关阅读:
    JavaScript入门基础(三)
    JavaScript入门基础(二)
    Web页面该如何布局
    如何通过SQL创建删除表的索引,UNIQUE KEY
    vim使用大全
    安装vmwaretools后 真机和虚拟机仍不能复制黏贴
    php通用函数html时间文件大小生成随机数
    Centos下安装配置phpmyadmin
    [Leetcode 43] 11 Container With Most Water
    [Leetcode 39] 129 Sum Root to Leaf Numbers
  • 原文地址:https://www.cnblogs.com/wiessharling/p/3848962.html
Copyright © 2011-2022 走看看