当前位置: 首页 > wzjs >正文

wordpress这么设置导航免费seo在线优化

wordpress这么设置导航,免费seo在线优化,可以做任务赚钱的网站有哪些,佛山网站建设价格多少抽出来的,直接用就行 头文件CPP文件使用示例 头文件 #ifndef DATABASECOMMON_H #define DATABASECOMMON_H/** 单例封装SQLite通用操作,支持多线程调用;可扩展兼容其他数据库,照着SysRunDatabase写,并且重载openDataba…

抽出来的,直接用就行

  • 头文件
  • CPP文件
  • 使用示例

头文件

#ifndef DATABASECOMMON_H
#define DATABASECOMMON_H/** 单例封装SQLite通用操作,支持多线程调用;可扩展兼容其他数据库,照着SysRunDatabase写,并且重载openDatabase即可* 使用步骤:1、主线程addDatabase,调用setDatabase*         2、setDatabaseName*         3、按需setUserName、setPassword*         4、openDatabase*         5、查询使用execSelect,建表使用execNormalSQL,插入、修改、删除等操作使用execTransaction*         6、closeDatabase(程序生命周期内不需要显式调用,这里仅预留)
*/#include <QObject>
#include <QSqlDatabase>
#include <QSqlQueryModel>
#include <QMutex>
/** 类名:DatabaseCommon* 功能:数据库基础操作抽象类,由子类实现openDatabase操作* 使用方法:子类化DatabaseCommon,并实现openDatabase函数
*/
class DatabaseCommon: public QObject
{Q_OBJECT
public:void setDatabase(QSqlDatabase db);void setDatabaseName(QString dbName);void setUserName(QString userName);void setPassword(QString password);virtual bool openDatabase() = 0;//不同数据库的打开方式不同void closeDatabase();bool execNormalSQL(const QString &sqlString);bool execSelect(const QString &sqlString, QSqlQueryModel &model);bool execTransaction(const QString &sqlString);bool execTransaction(const QStringList &sqlStrings);
private:DatabaseCommon(const DatabaseCommon&) = delete;DatabaseCommon& operator=(const DatabaseCommon&) = delete;
protected:explicit DatabaseCommon(QObject *parent = nullptr){}virtual ~DatabaseCommon();QSqlDatabase mDatabase;QString mDatabaseName = "";QString mUserName = "";QString mPassword = "";QMutex mMutex;//保证多线程访问安全
};
/** 类名:SysRunDatabase* 功能:应用于SysRun.db数据库,使用全局单例进行访问
*/
class SysRunDatabase : public DatabaseCommon
{Q_OBJECT
public:static SysRunDatabase& Instance(){static SysRunDatabase mInstance;return mInstance;}bool openDatabase() override;
protected:explicit SysRunDatabase(QObject *parent = nullptr){}~SysRunDatabase() override {}
private:SysRunDatabase(const SysRunDatabase&) = delete;SysRunDatabase& operator=(const SysRunDatabase&) = delete;
};#endif // DATABASECOMMON_H

CPP文件

#include "databasecommon.h"
#include <QDebug>
#include <QSqlQuery>
#include <QFile>
#include <QException>
#include <QSqlError>
#include <QMutexLocker>DatabaseCommon::~DatabaseCommon()
{closeDatabase();
}
/** 函数名称:setDatabase* 功能说明:设置数据库对象* 输入参数:数据库对象* 输出参数:无* 其他说明:无*/
void DatabaseCommon::setDatabase(QSqlDatabase db)
{QMutexLocker locker(&mMutex);this->mDatabase = db;
}
/** 函数名称:setDatabaseName* 功能说明:设置数据库名称(对于SQLite,就是db文件路径)* 输入参数:数据库名称* 输出参数:无* 其他说明:无*/
void DatabaseCommon::setDatabaseName(QString dbName)
{QMutexLocker locker(&mMutex);this->mDatabaseName = dbName;
}
/** 函数名称:setUserName* 功能说明:设置数据库用户名* 输入参数:用户名* 输出参数:无* 其他说明:无*/
void DatabaseCommon::setUserName(QString userName)
{QMutexLocker locker(&mMutex);this->mUserName = userName;
}
/** 函数名称:setPassword* 功能说明:设置数据库用户密码* 输入参数:用户密码* 输出参数:无* 其他说明:无*/
void DatabaseCommon::setPassword(QString password)
{QMutexLocker locker(&mMutex);this->mPassword = password;
}
/** 函数名称:openDatabase* 功能说明:打开数据库连接* 输入参数:无* 输出参数:无* 其他说明:无*/
bool SysRunDatabase::openDatabase()
{QMutexLocker locker(&mMutex);if(!QFile::exists(mDatabaseName)){qCritical() << "not exist " << mDatabaseName;return false;}mDatabase.setDatabaseName(mDatabaseName);mDatabase.setUserName(mUserName);mDatabase.setPassword(mPassword);if(!mDatabase.open()){qCritical() << "open failed."<< mDatabase.lastError().text();return false;}return true;
}
/** 函数名称:closeDatabase* 功能说明:关闭数据库连接* 输入参数:无* 输出参数:无* 其他说明:无*/
void DatabaseCommon::closeDatabase()
{mDatabase.close();
}
/** 函数名称:execNormalSQL* 功能说明:执行通用SQL语句(SELECT除外)* 输入参数:SQL语句* 输出参数:无* 其他说明:无*/
bool DatabaseCommon::execNormalSQL(const QString &sqlString)
{QMutexLocker locker(&mMutex);if(!mDatabase.isOpen()){qCritical() << "Database is closed.";return false;}try{QSqlQuery query(mDatabase);if (!query.exec(sqlString)){throw query.lastError();}return true;}catch (const QSqlError &error){qCritical() << "Error:" << error.text();return false;}
}
/** 函数名称:execSelect* 功能说明:执行DQL语句(即SELECT)* 输入参数:SELECE语句* 输出参数:查询模型,获取结果* 其他说明:无*/
bool DatabaseCommon::execSelect(const QString &sqlString, QSqlQueryModel &model)
{QMutexLocker locker(&mMutex);if(!mDatabase.isOpen()){qCritical() << "Database is closed.";return false;}if(!sqlString.startsWith("SELECT", Qt::CaseInsensitive)){qCritical() << "Unsupported operation: " << sqlString;return false;}try{model.setQuery(sqlString, mDatabase);return true;}catch (const QException &ex){qCritical() << "Exception on model.setQuery: " << ex.what();qCritical() << model.lastError().text();return false;}
}
/** 函数名称:execTransaction* 功能说明:基于事务执行SQL语句(SELETE除外)* 输入参数:单个SQL语句* 输出参数:无* 其他说明:无*/
bool DatabaseCommon::execTransaction(const QString &sqlString)
{QMutexLocker locker(&mMutex);if(!mDatabase.isOpen()){qCritical() << "Database is closed.";return false;}if(sqlString.startsWith("SELECT", Qt::CaseInsensitive)){qCritical() << "Unsupported operation: " << sqlString;return false;}if (!mDatabase.transaction()){qCritical() << "Failed to begin transaction:" << mDatabase.lastError().text();return false;}QSqlQuery query(mDatabase);try{if (!query.exec(sqlString)){throw query.lastError();}// 可选:检查受影响行数if (sqlString.trimmed().startsWith("UPDATE", Qt::CaseInsensitive) && query.numRowsAffected() == 0){qWarning() << "Warning: No rows affected by:" << sqlString;}if (!mDatabase.commit()){throw mDatabase.lastError();}return true;}catch (const QSqlError &error){if (!mDatabase.rollback()){qCritical() << "Failed to rollback transaction:" << mDatabase.lastError().text();}qCritical() << "Transaction failed at command:" << query.lastQuery();qCritical() << "Error:" << error.text();return false;}
}
/** 函数名称:execTransaction* 功能说明:基于事务执行SQL语句(SELETE除外)* 输入参数:多个SQL语句* 输出参数:无* 其他说明:无*/
bool DatabaseCommon::execTransaction(const QStringList &sqlStrings)
{QMutexLocker locker(&mMutex);if(!mDatabase.isOpen()){qCritical() << "Database is closed.";return false;}if (!mDatabase.transaction()){qCritical() << "Failed to begin transaction:" << mDatabase.lastError().text();return false;}QSqlQuery query(mDatabase);try{foreach (const QString &sql, sqlStrings){if (!query.exec(sql)){throw query.lastError();}// 可选:检查受影响行数if (sql.trimmed().startsWith("UPDATE", Qt::CaseInsensitive) && query.numRowsAffected() == 0){qWarning() << "Warning: No rows affected by:" << sql;}}if (!mDatabase.commit()){throw mDatabase.lastError();}return true;}catch (const QSqlError &error){if (!mDatabase.rollback()){qCritical() << "Failed to rollback transaction:" << mDatabase.lastError().text();}qCritical() << "Transaction failed at command:" << query.lastQuery();qCritical() << "Error:" << error.text();return false;}
}

使用示例

QSqlDatabase::addDatabase("QSQLITE", "SysRun");//SysRun是数据库连接名
SysRunDatabase::Instance().setDatabase(QSqlDatabase::database("SysRun", false));
SysRunDatabase::Instance().setDatabaseName("123.db");//123.db是数据库文件名
/*打开数据库连接*/
if(!SysRunDatabase::Instance().openDatabase())
{return false;
}
//在此之后就可以增删改查
http://www.dtcms.com/wzjs/161400.html

相关文章:

  • 比较好的前端网站推广运营怎么做
  • 潘家园做网站公司网络营销的盈利模式
  • 北京 企业网站开发郑州网站推广
  • 网站开发技术试验教程最厉害的搜索引擎
  • 济南做网站找哪家好优化大师百科
  • 网站如何做se百度产品
  • 网站建设的公司有发展吗厦门网络关键词排名
  • 建筑工程网上报建网站企业线上培训平台有哪些
  • 长春网站建设外包网站seo如何优化
  • 做销售在哪个网站找客户端谷歌paypal官网注册入口
  • 做flash的网站seo整站优化外包
  • 做外贸的有哪些网站搜索引擎优化的特点
  • 免费网站空间怎么做百度智能小程序怎么优化排名
  • 有哪些做红色旅游景点的网站百度小程序排名优化
  • 没有网站怎么做淘宝客百度seo学院
  • 广州视频网站建站公司营销策略模板
  • 都匀网站百度智能云
  • 广东网站设计公司加速游戏流畅的软件
  • 做网站游戏总结的例文泉州seo网站排名
  • 北京建网站公司怎么做网站主页
  • 网站怎么申请微信支付站长工具推荐
  • 如何做实验室网站成都网站设计
  • 只做网站应该找谁江苏搜索引擎优化公司
  • 衡水网站建设培训学校优化
  • 网站备案表是什么首页关键词怎么排名靠前
  • 平面设计素材网站哪个好外贸营销网站制作
  • 做网站把自己做死抖音运营推广策划方案
  • 网站开发时间一般是网络营销推广优化
  • 怎么样免费给网站做优化网站seo推广方案
  • 黄冈网站建设微信营销模式有哪些