-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathXSQLManagement.cpp
More file actions
104 lines (85 loc) · 2.88 KB
/
Copy pathXSQLManagement.cpp
File metadata and controls
104 lines (85 loc) · 2.88 KB
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
#include "XSQLManagement.h"
XSQLManagement m_sql;
//==============================================================================
XSQLManagement::XSQLManagement()
{
m_folderName = "tdata";
m_maximum_items = 200;
}
//==============================================================================
XSQLManagement::~XSQLManagement()
{
XData::db.close();
}
//==============================================================================
void XSQLManagement::makeFile(bool m_status)
{
m_makeFile = m_status;
}
//==============================================================================
void XSQLManagement::initializing()
{
LOG("initializing...");
LOG(QString("database checking."));
// ### check if we using database
if(!m_makeFile) {
LOG("database is disabled in project..");
return;
}
XData::db = QSqlDatabase::addDatabase("QSQLITE");
LOG(QString("database catched."));
XData::db.setDatabaseName(m_file->app_data("Data.dat"));
if(!XData::db.open()) {
LOG(QString("can't open database: %1").arg(m_file->app_data("Data.dat")));
LOG(QString("error: %1").arg(XData::db.lastError().text()));
return;
}
if(!XData::db.isValid()) {
LOG(QString("database is not valid: %1").arg(m_file->app_data("Data.dat")));
LOG(QString("error: %1").arg(XData::db.lastError().text()));
return;
}
if(!XData::db.isOpen()) {
LOG(QString("database is not opened: %1").arg(m_file->app_data("Data.dat")));
LOG(QString("error: %1").arg(XData::db.lastError().text()));
return;
}
//==============================================================================
// table name defenition here
QueryResult m_result = query(QString("CREATE TABLE IF NOT EXISTS /**/"));
if(!m_result.isQueryOk)
LOG(QString("table /**/ can't create, error: %1").arg(m_result.m_query.lastError().text()));
// {}
//==============================================================================
LOG("database is ready.");
}
//==============================================================================
QueryResult XSQLManagement::query_pagination(QString m_sql_query, int m_page)
{
int m_offset = ( m_maximum_items * m_page ) - m_maximum_items;
QSqlQuery m_query;
if(m_page < 1) {
LOG(QString("query: %1, page: %2").arg(m_sql_query).arg(m_page));
return QueryResult(false, m_query);
}
m_sql_query.append(" order by m_index DESC");
m_sql_query.append(QString(" limit %1 offset %2").arg(m_maximum_items).arg(m_offset));
m_query.prepare(m_sql_query);
if(!m_query.exec()) {
LOG(QString("query error: %1").arg(m_query.lastError().text()));
return QueryResult(false, m_query);
}
else
return QueryResult(true, m_query);;
}
//==============================================================================
QueryResult XSQLManagement::query(QString m_sql_query)
{
QSqlQuery m_query;
m_query.prepare(m_sql_query);
if(!m_query.exec()) {
return QueryResult(false, m_query);
}
else
return QueryResult(true, m_query);
}