玉兔远程控制 0.1.0-bate6
载入中...
搜索中...
未找到
Database.h
1// Author: Kang Lin <kl222@126.com>
2
3#pragma once
4
5#include <QObject>
6#include <QSqlDatabase>
7#include <QDateTime>
8#include <QJsonObject>
9#include "plugin_export.h"
10#include "ParameterDatabase.h"
11
12class PLUGIN_EXPORT CDatabase : public QObject
13{
14 Q_OBJECT
15public:
16 explicit CDatabase(QObject *parent = nullptr);
17 virtual ~CDatabase();
18
19 void SetDatabase(QSqlDatabase db, CParameterDatabase* pPara = nullptr);
20 QSqlDatabase GetDatabase() const;
21
27 virtual bool OpenDatabase(CParameterDatabase* pPara = nullptr);
28 virtual bool OpenMySqlDatabase(CParameterDatabase* pPara);
29 virtual bool OpenODBCDatabase(CParameterDatabase* pPara);
30 virtual bool OpenSQLiteDatabase(const QString &connectionName = QString(),
31 const QString &dbPath = QString());
32 virtual bool IsOpen() const;
33 virtual void CloseDatabase();
34
35 virtual bool OnInitializeDatabase();
36
37 virtual bool ExportToJsonFile(const QString& szFile);
38 virtual bool ImportFromJsonFile(const QString& szFile);
39 virtual bool ExportToJson(QJsonObject& obj) = 0;
40 virtual bool ImportFromJson(const QJsonObject& obj) = 0;
41
42Q_SIGNALS:
43 void sigChanged();
44
45protected:
46 virtual bool OnInitializeSqliteDatabase();
47 virtual bool OnInitializeMySqlDatabase();
48
49protected:
50 QString m_szConnectName;
51 QString m_MinVersion;
52 CParameterDatabase* m_pPara;
53
54private:
55 QSqlDatabase m_database;
56};
57
58class PLUGIN_EXPORT CDatabaseIcon : public CDatabase
59{
60 Q_OBJECT
61
62public:
63 explicit CDatabaseIcon(QObject *parent = nullptr);
64 explicit CDatabaseIcon(const QString& szPrefix, QObject *parent = nullptr);
65
72 int GetIcon(const QIcon& icon);
73 QIcon GetIcon(int id);
74
75 virtual bool ExportToJson(QJsonObject& obj) override;
76 virtual bool ImportFromJson(const QJsonObject& obj) override;
77
78 static bool ExportIconToJson(/*in*/const QIcon& icon, /*out*/QJsonObject& obj);
79 static bool ImportIconFromJson(/*in*/const QJsonObject &obj, /*out*/QIcon& icon);
80
81protected:
82 bool OnInitializeSqliteDatabase() override;
83 bool OnInitializeMySqlDatabase() override;
84
85private:
86 QString m_szTableName;
87};
88
93class PLUGIN_EXPORT CDatabaseFile : public CDatabase
94{
95 Q_OBJECT
96
97public:
98 explicit CDatabaseFile(QObject* parent = nullptr);
99 explicit CDatabaseFile(const QString& szPrefix, QObject *parent = nullptr);
100
106 QByteArray Load(const QString &szFile);
112 bool Save(const QString& szFile);
113
114 virtual bool ExportToJson(QJsonObject &obj) override;
115 virtual bool ImportFromJson(const QJsonObject &obj) override;
116
117 static bool ExportFileToJson(const QString &szFile, QJsonObject &obj);
118 static bool ImportFileFromJson(const QJsonObject &obj, QString &szFile);
119 bool ImportFileToDatabaseFromJson(const QJsonObject &obj, QString &szFile);
120
121protected:
122 virtual bool OnInitializeSqliteDatabase() override;
123 virtual bool OnInitializeMySqlDatabase() override;
124
125private:
126 QString m_szTableName;
127};
The CDatabaseFile class
Definition Database.h:94