一、效果图
二、代码
#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() <&