玉兔远程控制 0.1.0-bate8
载入中...
搜索中...
未找到
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
12
20class PLUGIN_EXPORT CDatabase : public QObject
21{
22 Q_OBJECT
23
24public:
25 explicit CDatabase(QObject *parent = nullptr);
26 virtual ~CDatabase();
27
31
36 [[nodiscard]] bool SetDatabase(const CDatabase* db);
42 [[nodiscard]] bool SetDatabase(const QSqlDatabase db, const CParameterDatabase* pPara);
44
45 [[nodiscard]] QSqlDatabase GetDatabase() const;
46
50
58 [[nodiscard]] bool OpenDatabase(
59 const CParameterDatabase* pPara = nullptr,
60 const QString& szConnectName = QString());
61 [[nodiscard]] bool OpenMySqlDatabase(
62 const CParameterDatabase* pPara,
63 const QString& szConnectName = QString());
64 [[nodiscard]] bool OpenODBCDatabase(
65 const CParameterDatabase* pPara,
66 const QString& szConnectName = QString());
67 [[nodiscard]] bool OpenSQLiteDatabase(
68 const CParameterDatabase* pPara,
69 const QString &szConnectionName = QString());
70 [[nodiscard]] bool OpenSQLiteDatabase(
71 const QString& szFile,
72 const QString& szConnectionName = QString());
74
75 [[nodiscard]] virtual bool IsOpen() const;
80 void CloseDatabase();
81
82 [[nodiscard]] const CParameterDatabase* GetParameter() const;
83 [[nodiscard]] const QString GetError() const;
84
88 [[nodiscard]] virtual bool ExportToJsonFile(const QString& szFile);
89 [[nodiscard]] virtual bool ImportFromJsonFile(const QString& szFile);
91
92Q_SIGNALS:
93 void sigChanged();
94
95protected:
99
103 [[nodiscard]] virtual bool OnInitializeDatabase();
104 [[nodiscard]] virtual bool OnInitializeSqliteDatabase();
105 [[nodiscard]] virtual bool OnInitializeMySqlDatabase();
107
108 void SetError(const QString& szErr = QString());
109
110 [[nodiscard]] virtual bool ExportToJson(QJsonObject& obj);
111 [[nodiscard]] virtual bool ImportFromJson(const QJsonObject& obj);
112
113protected:
114 QString m_szConnectName;
115 QString m_MinVersion;
116 const CParameterDatabase* m_pPara;
117
118private:
119 QSqlDatabase m_database;
120 bool m_bOwner;
121 QString m_szError;
122};
123
128class PLUGIN_EXPORT CDatabaseIcon : public CDatabase
129{
130 Q_OBJECT
131
132public:
133 explicit CDatabaseIcon(const QString& szSuffix = QString(),
134 QObject *parent = nullptr);
135
142 [[nodiscard]] int GetIcon(const QIcon& icon);
143 [[nodiscard]] QIcon GetIcon(int id);
144
145 [[nodiscard]] static bool ExportIconToJson(/*in*/const QIcon& icon, /*out*/QJsonObject& obj);
146 [[nodiscard]] static bool ImportIconFromJson(/*in*/const QJsonObject &obj, /*out*/QIcon& icon);
147
148protected:
149 bool OnInitializeSqliteDatabase() override;
150 bool OnInitializeMySqlDatabase() override;
151
152 //[[nodiscard]] virtual bool ExportToJson(QJsonObject& obj) override;
153
154private:
155 QString m_szTableName;
156};
157
163class PLUGIN_EXPORT CDatabaseFile : public CDatabase
164{
165 Q_OBJECT
166
167public:
168 explicit CDatabaseFile(const QString& szSuffix = QString(),
169 QObject *parent = nullptr);
170
171 bool IsExist(const QString& szFile);
172
177 [[nodiscard]] QByteArray Load(const QString &szFile);
182 bool Save(const QString& szFile);
183
190 [[nodiscard]] static bool ExportFileToJson(const QString &szFile, QJsonObject &obj);
197 [[nodiscard]] static bool ImportFileFromJson(const QJsonObject &obj, QString &szFile);
204 [[nodiscard]] bool ImportFileToDatabaseFromJson(const QJsonObject &obj, QString &szFile);
205
211 [[nodiscard]] static QString GetFile(const QString& szFile);
217 [[nodiscard]] static QString SetFile(const QString& szFile);
218
219protected:
220 [[nodiscard]] virtual bool OnInitializeSqliteDatabase() override;
221 [[nodiscard]] virtual bool OnInitializeMySqlDatabase() override;
222
223private:
224 QString m_szTableName;
225};
File database
Definition Database.h:164
Icon database
Definition Database.h:129
提供打开数据库和初始化数据库等接口
Definition Database.h:21