forked from hitfyd/ShowJCR
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsqlitedb.h
39 lines (31 loc) · 2.04 KB
/
sqlitedb.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#ifndef SQLITEDB_H
#define SQLITEDB_H
#include <QObject>
#include <QDir>
#include <QMultiMap>
#include <QtSql/QSqlDatabase>
typedef QPair<QString, QString> Pair;
class SqliteDB : public QObject
{
Q_OBJECT
public:
explicit SqliteDB(const QDir &appDir, const QString &datasetName, QObject *parent = nullptr);
~SqliteDB();
QStringList getAllJournalNames(); // 返回当前数据库中包含的所有有效期刊名称,用于输入联想和判断输入期刊名称是否正确
QList<Pair> getJournalInfo(const QString &journalName, bool allowSelectAgain = true);
private:
//临时逻辑:判断表字段是否包含“Journal”,包含则作为主键,同时如果表的第一个字段不是“Journal”,则第一个字段也作为主键
QString defaultPrimaryKeyValue = "Journal";
QSqlDatabase database;
QStringList tableNames; // 存储数据库中所有表的名字
QList<QStringList> tableFields; // 存储表对应的字段名称,存储顺序和tableNames一一对应
QList<Pair> tablePrimaryKeys; // 存储表(Key)及其对应的主键字段名称(T),注意一个表可能不止一个主键
QList<QStringList> allKeyNames; //存储表及其主键列中的所有值,存储顺序和tablePrimaryKeys一一对应,用于判断输入期刊所应查询的tablePrimaryKeys
QStringList allJournalNamesList; //组合成当前数据库中包含的所有有效期刊名称,用于输入联想和判断输入期刊名称是否正确
void selectTableNames(); // 查询数据库获取所有表名称,存储在tableNames中
void selectTableFields(); // 根据tableNames,依次查询对应表的字段名称,存储在tableFields中
void setTablePrimaryKeys(); // 设置表及其对应的主键,通常一个表对应一个主键,个别表可能有多个主键,存储在tablePrimaryKeys中
void selectAllJournalNames(); //根据tablePrimaryKeys,查询数据库中所有表对应主键的值作为期刊目录,存储在allJournalNames中
signals:
};
#endif // SQLITEDB_H