Хранилища Subversion OpenInventory

Редакция

Редакция 135 | Редакция 143 | К новейшей редакции | Только различия | Не учитывать пробелы | Содержимое файла | Авторство | Последнее изменение | Открыть журнал | RSS

Редакция 135 Редакция 140
1
#include "mysql.h"
1
#include "mysql.h"
2
2
3
MySql::MySql(QObject *parent) :
3
MySql::MySql(QObject *parent) :
4
    QObject(parent)
4
    QObject(parent)
5
{
5
{
6
}
6
}
7
7
8
MySql::~MySql(){
8
MySql::~MySql(){
9
db.close();
9
db.close();
10
}
10
}
11
11
12
/************************************************
12
/************************************************
13
** Ôóíêöèÿ ïðèñâîåíèÿ çíà÷åíèÿ èìåíè áàçû äàííûõ
13
** Ôóíêöèÿ ïðèñâîåíèÿ çíà÷åíèÿ èìåíè áàçû äàííûõ
14
**
14
**
15
************************************************/
15
************************************************/
16
16
17
17
18
18
19
void MySql::setDatabaseName(QString name){
19
void MySql::setDatabaseName(QString name){
20
    MySql::sqlDatabaseName = name;
20
    MySql::sqlDatabaseName = name;
21
}
21
}
22
22
23
23
24
bool MySql::connect(){
24
bool MySql::connect(){
25
    db = QSqlDatabase::addDatabase("QMYSQL");
25
    db = QSqlDatabase::addDatabase("QMYSQL");
26
26
27
    db.setHostName(MySql::sqlHostName);
27
    db.setHostName(MySql::sqlHostName);
28
    db.setDatabaseName(MySql::sqlDatabaseName);
28
    db.setDatabaseName(MySql::sqlDatabaseName);
29
    db.setUserName(MySql::sqlUserName);
29
    db.setUserName(MySql::sqlUserName);
30
    db.setPassword(MySql::sqlPassword);
30
    db.setPassword(MySql::sqlPassword);
31
    bool ok = db.open();
31
    bool ok = db.open();
32
    if (ok) return true;
32
    if (ok) return true;
33
    else {
33
    else {
34
          MySql::mysqlLastError = db.lastError().text();
34
          MySql::mysqlLastError = db.lastError().text();
35
        return false; }
35
        return false; }
36
36
37
    /*
37
    /*
38
    pdb->setHostName(hostName);
38
    pdb->setHostName(hostName);
39
    pdb->setDatabaseName(baseName);
39
    pdb->setDatabaseName(baseName);
40
    pdb->setUserName(userName);
40
    pdb->setUserName(userName);
41
    pdb->setPassword(password);
41
    pdb->setPassword(password);
42
    bool ok = pdb->open();
42
    bool ok = pdb->open();
43

43

44
if (!ok) {
44
if (!ok) {
45
                            QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
45
                            QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
46
                                                                            QWidget(this->parent()),                      // Ðîäèòåëüñêèé âèäæåò.
46
                                                                            QWidget(this->parent()),                      // Ðîäèòåëüñêèé âèäæåò.
47
                                                                            QObject::tr("Database Error"),   // Çàãîëîâîê.
47
                                                                            QObject::tr("Database Error"),   // Çàãîëîâîê.
48
                                                                            db.lastError().text());          // Òåêñò ñîîáùåíèÿ.
48
                                                                            db.lastError().text());          // Òåêñò ñîîáùåíèÿ.
49
                     }
49
                     }
50
  */
50
  */
51
51
52
    return true;
52
    return true;
53
}
53
}
54
54
55
55
56
void MySql::setUserName(QString uname){
56
void MySql::setUserName(QString uname){
57
    MySql::sqlUserName = uname;
57
    MySql::sqlUserName = uname;
58
}
58
}
59
59
60
void MySql::setPassword(QString passwrd){
60
void MySql::setPassword(QString passwrd){
61
    MySql::sqlPassword = passwrd;
61
    MySql::sqlPassword = passwrd;
62
}
62
}
63
63
64
64
65
void MySql::setHostName(QString hname){
65
void MySql::setHostName(QString hname){
66
    MySql::sqlHostName = hname;
66
    MySql::sqlHostName = hname;
67
}
67
}
68
68
69
bool  MySql::createTable(SqlTable* table){ // ñîçäàåò â áàçå äàííûõ òàáëèöó
69
bool  MySql::createTable(SqlTable* table){ // ñîçäàåò â áàçå äàííûõ òàáëèöó
70
QSqlQuery q;
70
QSqlQuery q;
71
bool ok;
71
bool ok;
72
ok = q.prepare(table->sqlString());
72
ok = q.prepare(table->sqlString());
73
if(!ok) {
73
if(!ok) {
74
    MySql::mysqlLastError = q.lastError().text();
74
    MySql::mysqlLastError = q.lastError().text();
75
    return false;}
75
    return false;}
76
ok = q.exec();
76
ok = q.exec();
77
if(!ok) {
77
if(!ok) {
78
    MySql::mysqlLastError = q.lastError().text();
78
    MySql::mysqlLastError = q.lastError().text();
79
    return false;}
79
    return false;}
80
else return true;
80
else return true;
81
}
81
}
82
82
83
83
84
84
85
QString MySql::lasError(){
85
QString MySql::lasError(){
86
86
87
    return MySql::mysqlLastError;
87
    return MySql::mysqlLastError;
88
}
88
}
89
89
90
90
91
91
92
/************************************************
92
/************************************************
93
** Ôóíêöèÿ ñîçäàåò íåîáõîäèìûå òàáëèöû â áàçå äàííûõ
93
** Ôóíêöèÿ ñîçäàåò íåîáõîäèìûå òàáëèöû â áàçå äàííûõ
94
** äëÿ õðàíåíèÿ íàçâàíèÿ è îïèñàíèÿ êëàññîâ
94
** äëÿ õðàíåíèÿ íàçâàíèÿ è îïèñàíèÿ êëàññîâ
95
** (Òàáëèöà ListOfClasses è Òàáëèöà DescriptionOfClasses)
95
** (Òàáëèöà ListOfClasses è Òàáëèöà DescriptionOfClasses)
96
************************************************/
96
************************************************/
97
97
98
98
99
bool MySql::createDataBase(){
99
bool MySql::createDataBase(){
100
    SqlTable* tbl;
100
    SqlTable* tbl;
101
    TableField* fld;
101
    TableField* fld;
102
    if (!db.isOpen()){
102
    if (!db.isOpen()){
103
        MySql::mysqlLastError = tr("Database is not open!");
103
        MySql::mysqlLastError = tr("Database is not open!");
104
        return false;
104
        return false;
105
    }
105
    }
-
 
106
-
 
107
    tbl = new SqlTable(tr("ListOfModels"));        // ñîçäàäèì òàáëèöó ñ èìåíåì ListOfModels äëÿ õðàíåíèÿ ñïèñêà ìîäåëåé ïðåäñòàâëåíèÿ
-
 
108
    fld = new TableField(tr("ModelName"), tbl);    // ýòî âòîðîå ïîëå òàáëèöû áóäåò õðàíèòü èìåíà ìîäåëåé, ïåðâîå ïîëå ID óæå èìååòñÿ â íîâîé òàáëèöå (îíî ñîçäàåòñÿ ïî óìîë÷àíèþ)
-
 
109
    fld->setNotNull(true);                          // ïîëå íå ìîæåò áûòü ïóñòûì
-
 
110
    fld->setType(tr("CHAR(30)"));                   // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ
-
 
111
    fld->setDefaultValue(tr("New model"));          // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ
-
 
112
    tbl->append(fld);                               // äîáàâëÿåì ïîëå â òàáëèöó
-
 
113
-
 
114
-
 
115
    fld = new TableField(tr("ModelString"), tbl);    // ýòî òðåòüå ïîëå òàáëèöû áóäåò õðàíèòü ìîäåëü â âèäå ñòðîêè
-
 
116
    fld->setType(tr("TEXT"));                        // òèï ïîëÿ - òåêñò
-
 
117
    fld->setDefaultValue(tr("NULL"));                // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ
-
 
118
    tbl->append(fld);
-
 
119
-
 
120
    fld = new TableField(tr("Enable"), tbl);    // ýòî òðåòüå ïîëå òàáëèöû áóäåò õðàíèòü ìîäåëü â âèäå ñòðîêè
-
 
121
    fld->setType(tr("BOOL"));                        // òèï ïîëÿ - òåêñò
-
 
122
    fld->setDefaultValue(tr("1"));                // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ
-
 
123
    tbl->append(fld);
-
 
124
-
 
125
-
 
126
    if(!MySql::createTable(tbl)){                   // åñëè íå óäàåòñÿ ñîçäàòü òàáëèöó
-
 
127
-
 
128
   //     delete fld;
-
 
129
        delete tbl;                                 // ÷èñòèì çà ñîáîé
-
 
130
        return false;                               // âûâîäèì îøèáêó
-
 
131
    }
-
 
132
-
 
133
-
 
134
    else {                                          // òàáëèöó óñïåøíî ñîçäàíà
-
 
135
 //       delete fld;
-
 
136
        delete tbl;                                 // ÷èñòèì çà ñîáîé
-
 
137
        return true;                                // ñîîáùàåì îá óñïåõå
-
 
138
-
 
139
    }
-
 
140
-
 
141
-
 
142
-
 
143
-
 
144
106
    tbl = new SqlTable(tr("ListOfClasses"));        // ñîçäàäèì òàáëèöó ñ èìåíåì ListOfClasses äëÿ õðàíåíèÿ ñïèñêà êëàññîâ
145
    tbl = new SqlTable(tr("ListOfClasses"));        // ñîçäàäèì òàáëèöó ñ èìåíåì ListOfClasses äëÿ õðàíåíèÿ ñïèñêà êëàññîâ
107
    fld = new TableField(tr("ClassName"), tbl);          // ýòî âòîðîå ïîëå òàáëèöû áóäåò õðàíèòü èìåíà êëàññîâ, ïåðâîå ïîëå ID óæå èìååòñÿ â íîâîé òàáëèöå (îíî ñîçäàåòñÿ ïî óìîë÷àíèþ)
146
    fld = new TableField(tr("ClassName"), tbl);          // ýòî âòîðîå ïîëå òàáëèöû áóäåò õðàíèòü èìåíà êëàññîâ, ïåðâîå ïîëå ID óæå èìååòñÿ â íîâîé òàáëèöå (îíî ñîçäàåòñÿ ïî óìîë÷àíèþ)
108
    fld->setNotNull(true);                          // ïîëå íå ìîæåò áûòü ïóñòûì
147
    fld->setNotNull(true);                          // ïîëå íå ìîæåò áûòü ïóñòûì
109
    fld->setType(tr("CHAR(30)"));                   // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ
148
    fld->setType(tr("CHAR(30)"));                   // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ
110
    fld->setDefaultValue(tr("New class"));          // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ
149
    fld->setDefaultValue(tr("New class"));          // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ
111
    tbl->append(fld);                               // äîáàâëÿåì ïîëå â òàáëèöó
150
    tbl->append(fld);                               // äîáàâëÿåì ïîëå â òàáëèöó
112
151
113
    fld = new TableField(tr("ClassAlias"), tbl);    // ýòî òðåòüå ïîëå òàáëèöû áóäåò õðàíèòü ïñåâäîíèìû êëàññîâ
152
    fld = new TableField(tr("ClassAlias"), tbl);    // ýòî òðåòüå ïîëå òàáëèöû áóäåò õðàíèòü ïñåâäîíèìû êëàññîâ
114
    fld->setNotNull(true);                          // ïîëå íå ìîæåò áûòü ïóñòûì
153
    fld->setNotNull(true);                          // ïîëå íå ìîæåò áûòü ïóñòûì
115
    fld->setType(tr("CHAR(30)"));                   // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ
154
    fld->setType(tr("CHAR(30)"));                   // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ
116
    fld->setDefaultValue(tr("New class alias"));    // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ
155
    fld->setDefaultValue(tr("New class alias"));    // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ
117
    tbl->append(fld);                               // äîáàâëÿåì ïîëå â òàáëèöó
156
    tbl->append(fld);                               // äîáàâëÿåì ïîëå â òàáëèöó
118
157
119
    fld = new TableField(tr("TableWhithInstance"), tbl);    // ýòî òðåòüå ïîëå òàáëèöû áóäåò õðàíèòü ïñåâäîíèìû êëàññîâ
158
    fld = new TableField(tr("TableWhithInstance"), tbl);    // ýòî òðåòüå ïîëå òàáëèöû áóäåò õðàíèòü ïñåâäîíèìû êëàññîâ
120
    fld->setNotNull(true);                          // ïîëå íå ìîæåò áûòü ïóñòûì
159
    fld->setNotNull(true);                          // ïîëå íå ìîæåò áûòü ïóñòûì
121
    fld->setType(tr("CHAR(30)"));                   // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ
160
    fld->setType(tr("CHAR(30)"));                   // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ
122
    fld->setDefaultValue(tr("New class instance"));    // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ
161
    fld->setDefaultValue(tr("New class instance"));    // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ
123
    tbl->append(fld);                               // äîáàâëÿåì ïîëå â òàáëèöó
162
    tbl->append(fld);                               // äîáàâëÿåì ïîëå â òàáëèöó
124
163
125
    fld = new TableField(tr("Comment"), tbl);    // ýòî òðåòüå ïîëå òàáëèöû áóäåò õðàíèòü ïñåâäîíèìû êëàññîâ
164
    fld = new TableField(tr("Comment"), tbl);    // ýòî òðåòüå ïîëå òàáëèöû áóäåò õðàíèòü ïñåâäîíèìû êëàññîâ
126
    fld->setNotNull(true);                          // ïîëå íå ìîæåò áûòü ïóñòûì
165
    fld->setNotNull(true);                          // ïîëå íå ìîæåò áûòü ïóñòûì
127
    fld->setType(tr("CHAR(30)"));                   // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ
166
    fld->setType(tr("CHAR(30)"));                   // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ
128
    fld->setDefaultValue(tr("without comments"));    // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ
167
    fld->setDefaultValue(tr("without comments"));    // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ
129
    tbl->append(fld);                               // äîáàâëÿåì ïîëå â òàáëèöó
168
    tbl->append(fld);                               // äîáàâëÿåì ïîëå â òàáëèöó
130
169
131
170
132
    if(!MySql::createTable(tbl)){                   // åñëè íå óäàåòñÿ ñîçäàòü òàáëèöó
171
    if(!MySql::createTable(tbl)){                   // åñëè íå óäàåòñÿ ñîçäàòü òàáëèöó
133
172
134
   //     delete fld;
173
   //     delete fld;
135
        delete tbl;                                 // ÷èñòèì çà ñîáîé
174
        delete tbl;                                 // ÷èñòèì çà ñîáîé
136
        return false;                               // âûâîäèì îøèáêó
175
        return false;                               // âûâîäèì îøèáêó
137
    }
176
    }
138
177
139
178
140
    else {                                          // òàáëèöó óñïåøíî ñîçäàíà
179
    else {                                          // òàáëèöó óñïåøíî ñîçäàíà
141
 //       delete fld;
180
 //       delete fld;
142
        delete tbl;                                 // ÷èñòèì çà ñîáîé
181
        delete tbl;                                 // ÷èñòèì çà ñîáîé
143
        return true;                                // ñîîáùàåì îá óñïåõå
182
        return true;                                // ñîîáùàåì îá óñïåõå
144
183
145
    }
184
    }
146
185
147
    tbl = new SqlTable(tr("DescriptionOfClasses")); // ñîçäàäèì òàáëèöó ñ èìåíåì DescriptionOfClassess äëÿ õðàíåíèÿ îïèñàíèÿ ïîëåé êëàññîâ
186
    tbl = new SqlTable(tr("DescriptionOfClasses")); // ñîçäàäèì òàáëèöó ñ èìåíåì DescriptionOfClassess äëÿ õðàíåíèÿ îïèñàíèÿ ïîëåé êëàññîâ
148
    fld = new TableField(tr("FieldName"), tbl);     // ýòî âòîðîå ïîëå òàáëèöû áóäåò õðàíèòü èìåíà ïîëåé, ïåðâîå ïîëå ID óæå èìååòñÿ â íîâîé òàáëèöå (îíî ñîçäàåòñÿ ïî óìîë÷àíèþ)
187
    fld = new TableField(tr("FieldName"), tbl);     // ýòî âòîðîå ïîëå òàáëèöû áóäåò õðàíèòü èìåíà ïîëåé, ïåðâîå ïîëå ID óæå èìååòñÿ â íîâîé òàáëèöå (îíî ñîçäàåòñÿ ïî óìîë÷àíèþ)
149
    fld->setNotNull(true);                          // ïîëå íå ìîæåò áûòü ïóñòûì
188
    fld->setNotNull(true);                          // ïîëå íå ìîæåò áûòü ïóñòûì
150
    fld->setType(tr("CHAR(30)"));                   // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ
189
    fld->setType(tr("CHAR(30)"));                   // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ
151
    fld->setDefaultValue(tr("New field"));          // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ
190
    fld->setDefaultValue(tr("New field"));          // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ
152
    tbl->append(fld);                               // äîáàâëÿåì ïîëå â òàáëèöó
191
    tbl->append(fld);                               // äîáàâëÿåì ïîëå â òàáëèöó
153
192
154
    fld = new TableField(tr("FieldAlias"), tbl);    // ýòî òðåòüå ïîëå òàáëèöû áóäåò õðàíèòü ïñåâäîíèìû ïîëåé êëàññîâ
193
    fld = new TableField(tr("FieldAlias"), tbl);    // ýòî òðåòüå ïîëå òàáëèöû áóäåò õðàíèòü ïñåâäîíèìû ïîëåé êëàññîâ
155
    fld->setNotNull(true);                          // ïîëå íå ìîæåò áûòü ïóñòûì
194
    fld->setNotNull(true);                          // ïîëå íå ìîæåò áûòü ïóñòûì
156
    fld->setType(tr("CHAR(30)"));                   // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ
195
    fld->setType(tr("CHAR(30)"));                   // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ
157
    fld->setDefaultValue(tr("New class alias"));    // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ
196
    fld->setDefaultValue(tr("New class alias"));    // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ
158
    tbl->append(fld);                               // äîáàâëÿåì ïîëå â òàáëèöó
197
    tbl->append(fld);                               // äîáàâëÿåì ïîëå â òàáëèöó
159
198
160
    fld = new TableField(tr("FieldType"), tbl);     // ýòî ÷åòâåðòîå ïîëå òàáëèöû áóäåò òèï ïîëÿ êëàññà
199
    fld = new TableField(tr("FieldType"), tbl);     // ýòî ÷åòâåðòîå ïîëå òàáëèöû áóäåò òèï ïîëÿ êëàññà
161
    fld->setNotNull(true);                          // ïîëå íå ìîæåò áûòü ïóñòûì
200
    fld->setNotNull(true);                          // ïîëå íå ìîæåò áûòü ïóñòûì
162
    fld->setType(tr("CHAR(30)"));                   // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ
201
    fld->setType(tr("CHAR(30)"));                   // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ
163
    fld->setDefaultValue(tr("CHAR(30)"));           // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ
202
    fld->setDefaultValue(tr("CHAR(30)"));           // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ
164
    tbl->append(fld);                               // äîáàâëÿåì ïîëå â òàáëèöó
203
    tbl->append(fld);                               // äîáàâëÿåì ïîëå â òàáëèöó
165
204
166
    fld = new TableField(tr("ClassIdentifer"), tbl);    // ýòî ïÿòîå ïîëå òàáëèöû áóäåò õðàíèòü ïñåâäîíèìû êëàññîâ
205
    fld = new TableField(tr("ClassIdentifer"), tbl);    // ýòî ïÿòîå ïîëå òàáëèöû áóäåò õðàíèòü ïñåâäîíèìû êëàññîâ
167
    fld->setNotNull(false);                          // ïîëå íå ìîæåò áûòü ïóñòûì
206
    fld->setNotNull(false);                          // ïîëå íå ìîæåò áûòü ïóñòûì
168
    fld->setType(tr("INT(10)"));                   // òèï ïîëÿ - öåëîå ÷èñëî
207
    fld->setType(tr("INT(10)"));                   // òèï ïîëÿ - öåëîå ÷èñëî
169
    fld->setDefaultValue(tr("NULL"));    // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ
208
    fld->setDefaultValue(tr("NULL"));    // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ
170
    tbl->append(fld);                               // äîáàâëÿåì ïîëå â òàáëèöó
209
    tbl->append(fld);                               // äîáàâëÿåì ïîëå â òàáëèöó
171
210
172
211
173
212
174
    fld = new TableField(tr("Comment"), tbl);    // ýòî òðåòüå ïîëå òàáëèöû áóäåò õðàíèòü ïñåâäîíèìû êëàññîâ
213
    fld = new TableField(tr("Comment"), tbl);    // ýòî òðåòüå ïîëå òàáëèöû áóäåò õðàíèòü ïñåâäîíèìû êëàññîâ
175
    fld->setNotNull(true);                          // ïîëå íå ìîæåò áûòü ïóñòûì
214
    fld->setNotNull(true);                          // ïîëå íå ìîæåò áûòü ïóñòûì
176
    fld->setType(tr("CHAR(30)"));                   // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ
215
    fld->setType(tr("CHAR(30)"));                   // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ
177
    fld->setDefaultValue(tr("without comments"));    // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ
216
    fld->setDefaultValue(tr("without comments"));    // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ
178
    tbl->append(fld);                               // äîáàâëÿåì ïîëå â òàáëèöó
217
    tbl->append(fld);                               // äîáàâëÿåì ïîëå â òàáëèöó
179
218
180
219
181
    if(!MySql::createTable(tbl)){                   // åñëè íå óäàåòñÿ ñîçäàòü òàáëèöó
220
    if(!MySql::createTable(tbl)){                   // åñëè íå óäàåòñÿ ñîçäàòü òàáëèöó
182
221
183
   //     delete fld;
222
   //     delete fld;
184
        delete tbl;                                 // ÷èñòèì çà ñîáîé
223
        delete tbl;                                 // ÷èñòèì çà ñîáîé
185
        return false;                               // âûâîäèì îøèáêó
224
        return false;                               // âûâîäèì îøèáêó
186
    }
225
    }
187
226
188
227
189
    else {                                          // òàáëèöó óñïåøíî ñîçäàíà
228
    else {                                          // òàáëèöó óñïåøíî ñîçäàíà
190
 //       delete fld;
229
 //       delete fld;
191
        delete tbl;                                 // ÷èñòèì çà ñîáîé
230
        delete tbl;                                 // ÷èñòèì çà ñîáîé
192
        return true;                                // ñîîáùàåì îá óñïåõå
231
        return true;                                // ñîîáùàåì îá óñïåõå
193
232
194
    }
233
    }
195
234
196
235
197
236
198
237
199
238
200
}
239
}
201
240
202
241
203
242
204
243
205
bool MySql::createListOfClassesTable(){
244
bool MySql::createListOfClassesTable(){
206
245
207
    SqlTable* tbl;
246
    SqlTable* tbl;
208
    TableField* fld;
247
    TableField* fld;
209
    if (!db.isOpen()){
248
    if (!db.isOpen()){
210
        MySql::mysqlLastError = tr("Database is not open!");
249
        MySql::mysqlLastError = tr("Database is not open!");
211
        return false;
250
        return false;
212
    }
251
    }
213
    tbl = new SqlTable(tr("ListOfClasses"));        // ñîçäàäèì òàáëèöó ñ èìåíåì ListOfClasses äëÿ õðàíåíèÿ ñïèñêà êëàññîâ
252
    tbl = new SqlTable(tr("ListOfClasses"));        // ñîçäàäèì òàáëèöó ñ èìåíåì ListOfClasses äëÿ õðàíåíèÿ ñïèñêà êëàññîâ
214
    fld = new TableField(tr("ClassName"), tbl);          // ýòî âòîðîå ïîëå òàáëèöû áóäåò õðàíèòü èìåíà êëàññîâ, ïåðâîå ïîëå ID óæå èìååòñÿ â íîâîé òàáëèöå (îíî ñîçäàåòñÿ ïî óìîë÷àíèþ)
253
    fld = new TableField(tr("ClassName"), tbl);          // ýòî âòîðîå ïîëå òàáëèöû áóäåò õðàíèòü èìåíà êëàññîâ, ïåðâîå ïîëå ID óæå èìååòñÿ â íîâîé òàáëèöå (îíî ñîçäàåòñÿ ïî óìîë÷àíèþ)
215
    fld->setNotNull(true);                          // ïîëå íå ìîæåò áûòü ïóñòûì
254
    fld->setNotNull(true);                          // ïîëå íå ìîæåò áûòü ïóñòûì
216
    fld->setType(tr("CHAR(30)"));                   // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ
255
    fld->setType(tr("CHAR(30)"));                   // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ
217
    fld->setDefaultValue(tr("New class"));          // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ
256
    fld->setDefaultValue(tr("New class"));          // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ
218
    tbl->append(fld);                               // äîáàâëÿåì ïîëå â òàáëèöó
257
    tbl->append(fld);                               // äîáàâëÿåì ïîëå â òàáëèöó
219
258
220
    fld = new TableField(tr("ClassAlias"), tbl);    // ýòî òðåòüå ïîëå òàáëèöû áóäåò õðàíèòü ïñåâäîíèìû êëàññîâ
259
    fld = new TableField(tr("ClassAlias"), tbl);    // ýòî òðåòüå ïîëå òàáëèöû áóäåò õðàíèòü ïñåâäîíèìû êëàññîâ
221
    fld->setNotNull(true);                          // ïîëå íå ìîæåò áûòü ïóñòûì
260
    fld->setNotNull(true);                          // ïîëå íå ìîæåò áûòü ïóñòûì
222
    fld->setType(tr("CHAR(30)"));                   // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ
261
    fld->setType(tr("CHAR(30)"));                   // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ
223
    fld->setDefaultValue(tr("New class alias"));    // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ
262
    fld->setDefaultValue(tr("New class alias"));    // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ
224
    tbl->append(fld);                               // äîáàâëÿåì ïîëå â òàáëèöó
263
    tbl->append(fld);                               // äîáàâëÿåì ïîëå â òàáëèöó
225
264
226
    fld = new TableField(tr("TableWhithInstance"), tbl);    // ýòî òðåòüå ïîëå òàáëèöû áóäåò õðàíèòü ïñåâäîíèìû êëàññîâ
265
    fld = new TableField(tr("TableWhithInstance"), tbl);    // ýòî òðåòüå ïîëå òàáëèöû áóäåò õðàíèòü ïñåâäîíèìû êëàññîâ
227
    fld->setNotNull(true);                          // ïîëå íå ìîæåò áûòü ïóñòûì
266
    fld->setNotNull(true);                          // ïîëå íå ìîæåò áûòü ïóñòûì
228
    fld->setType(tr("CHAR(30)"));                   // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ
267
    fld->setType(tr("CHAR(30)"));                   // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ
229
    fld->setDefaultValue(tr("New class instance"));    // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ
268
    fld->setDefaultValue(tr("New class instance"));    // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ
230
    tbl->append(fld);                               // äîáàâëÿåì ïîëå â òàáëèöó
269
    tbl->append(fld);                               // äîáàâëÿåì ïîëå â òàáëèöó
231
270
232
    fld = new TableField(tr("Comment"), tbl);    // ýòî òðåòüå ïîëå òàáëèöû áóäåò õðàíèòü ïñåâäîíèìû êëàññîâ
271
    fld = new TableField(tr("Comment"), tbl);    // ýòî òðåòüå ïîëå òàáëèöû áóäåò õðàíèòü ïñåâäîíèìû êëàññîâ
233
    fld->setNotNull(true);                          // ïîëå íå ìîæåò áûòü ïóñòûì
272
    fld->setNotNull(true);                          // ïîëå íå ìîæåò áûòü ïóñòûì
234
    fld->setType(tr("CHAR(30)"));                   // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ
273
    fld->setType(tr("CHAR(30)"));                   // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ
235
    fld->setDefaultValue(tr("without comments"));    // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ
274
    fld->setDefaultValue(tr("without comments"));    // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ
236
    tbl->append(fld);                               // äîáàâëÿåì ïîëå â òàáëèöó
275
    tbl->append(fld);                               // äîáàâëÿåì ïîëå â òàáëèöó
237
276
238
277
239
    if(!MySql::createTable(tbl)){                   // åñëè íå óäàåòñÿ ñîçäàòü òàáëèöó
278
    if(!MySql::createTable(tbl)){                   // åñëè íå óäàåòñÿ ñîçäàòü òàáëèöó
240
279
241
   //     delete fld;
280
   //     delete fld;
242
        delete tbl;                                 // ÷èñòèì çà ñîáîé
281
        delete tbl;                                 // ÷èñòèì çà ñîáîé
243
        return false;                               // âûâîäèì îøèáêó
282
        return false;                               // âûâîäèì îøèáêó
244
    }
283
    }
245
284
246
285
247
    else {                                          // òàáëèöó óñïåøíî ñîçäàíà
286
    else {                                          // òàáëèöó óñïåøíî ñîçäàíà
248
 //       delete fld;
287
 //       delete fld;
249
        delete tbl;                                 // ÷èñòèì çà ñîáîé
288
        delete tbl;                                 // ÷èñòèì çà ñîáîé
250
        return true;                                // ñîîáùàåì îá óñïåõå
289
        return true;                                // ñîîáùàåì îá óñïåõå
251
290
252
    }
291
    }
253
292
254
293
255
294
256
}
295
}
257
296
258
297
259
298
260
299
261
bool MySql::createDescriptionOfClassesTable(){ // ñîçäàåò íåîáõîäèìóþ òàáëèöó â áàçå äàííûõ äëÿ õðàíåíèÿ îïèñàíèÿ êëàññîâ (Òàáëèöà DescriptionOfClasses)
300
bool MySql::createDescriptionOfClassesTable(){ // ñîçäàåò íåîáõîäèìóþ òàáëèöó â áàçå äàííûõ äëÿ õðàíåíèÿ îïèñàíèÿ êëàññîâ (Òàáëèöà DescriptionOfClasses)
262
    SqlTable* tbl;
301
    SqlTable* tbl;
263
    TableField* fld;
302
    TableField* fld;
264
    if (!db.isOpen()){
303
    if (!db.isOpen()){
265
        MySql::mysqlLastError = tr("Database is not open!");
304
        MySql::mysqlLastError = tr("Database is not open!");
266
        return false;
305
        return false;
267
    }
306
    }
268
    tbl = new SqlTable(tr("DescriptionOfClasses")); // ñîçäàäèì òàáëèöó ñ èìåíåì DescriptionOfClassess äëÿ õðàíåíèÿ îïèñàíèÿ ïîëåé êëàññîâ
307
    tbl = new SqlTable(tr("DescriptionOfClasses")); // ñîçäàäèì òàáëèöó ñ èìåíåì DescriptionOfClassess äëÿ õðàíåíèÿ îïèñàíèÿ ïîëåé êëàññîâ
269
    fld = new TableField(tr("FieldName"), tbl);     // ýòî âòîðîå ïîëå òàáëèöû áóäåò õðàíèòü èìåíà ïîëåé, ïåðâîå ïîëå ID óæå èìååòñÿ â íîâîé òàáëèöå (îíî ñîçäàåòñÿ ïî óìîë÷àíèþ)
308
    fld = new TableField(tr("FieldName"), tbl);     // ýòî âòîðîå ïîëå òàáëèöû áóäåò õðàíèòü èìåíà ïîëåé, ïåðâîå ïîëå ID óæå èìååòñÿ â íîâîé òàáëèöå (îíî ñîçäàåòñÿ ïî óìîë÷àíèþ)
270
    fld->setNotNull(true);                          // ïîëå íå ìîæåò áûòü ïóñòûì
309
    fld->setNotNull(true);                          // ïîëå íå ìîæåò áûòü ïóñòûì
271
    fld->setType(tr("CHAR(30)"));                   // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ
310
    fld->setType(tr("CHAR(30)"));                   // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ
272
    fld->setDefaultValue(tr("New field"));          // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ
311
    fld->setDefaultValue(tr("New field"));          // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ
273
    tbl->append(fld);                               // äîáàâëÿåì ïîëå â òàáëèöó
312
    tbl->append(fld);                               // äîáàâëÿåì ïîëå â òàáëèöó
274
313
275
    fld = new TableField(tr("FieldAlias"), tbl);    // ýòî òðåòüå ïîëå òàáëèöû áóäåò õðàíèòü ïñåâäîíèìû ïîëåé êëàññîâ
314
    fld = new TableField(tr("FieldAlias"), tbl);    // ýòî òðåòüå ïîëå òàáëèöû áóäåò õðàíèòü ïñåâäîíèìû ïîëåé êëàññîâ
276
    fld->setNotNull(true);                          // ïîëå íå ìîæåò áûòü ïóñòûì
315
    fld->setNotNull(true);                          // ïîëå íå ìîæåò áûòü ïóñòûì
277
    fld->setType(tr("CHAR(30)"));                   // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ
316
    fld->setType(tr("CHAR(30)"));                   // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ
278
    fld->setDefaultValue(tr("New field alias"));    // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ
317
    fld->setDefaultValue(tr("New field alias"));    // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ
279
    tbl->append(fld);                               // äîáàâëÿåì ïîëå â òàáëèöó
318
    tbl->append(fld);                               // äîáàâëÿåì ïîëå â òàáëèöó
280
319
281
    fld = new TableField(tr("FieldType"), tbl);     // ýòî ÷åòâåðòîå ïîëå òàáëèöû áóäåò òèï ïîëÿ êëàññà
320
    fld = new TableField(tr("FieldType"), tbl);     // ýòî ÷åòâåðòîå ïîëå òàáëèöû áóäåò òèï ïîëÿ êëàññà
282
    fld->setNotNull(true);                          // ïîëå íå ìîæåò áûòü ïóñòûì
321
    fld->setNotNull(true);                          // ïîëå íå ìîæåò áûòü ïóñòûì
283
    fld->setType(tr("CHAR(30)"));                   // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ
322
    fld->setType(tr("CHAR(30)"));                   // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ
284
    fld->setDefaultValue(tr("CHAR(30)"));           // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ
323
    fld->setDefaultValue(tr("CHAR(30)"));           // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ
285
    tbl->append(fld);                               // äîáàâëÿåì ïîëå â òàáëèöó
324
    tbl->append(fld);                               // äîáàâëÿåì ïîëå â òàáëèöó
286
325
287
    fld = new TableField(tr("DefaultValue"), tbl);  // ýòî ÷åòâåðòîå ïîëå òàáëèöû áóäåò òèï ïîëÿ êëàññà
326
    fld = new TableField(tr("DefaultValue"), tbl);  // ýòî ÷åòâåðòîå ïîëå òàáëèöû áóäåò òèï ïîëÿ êëàññà
288
    fld->setNotNull(false);                         // ïîëå íå ìîæåò áûòü ïóñòûì
327
    fld->setNotNull(false);                         // ïîëå íå ìîæåò áûòü ïóñòûì
289
    fld->setType(tr("CHAR(30)"));                   // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ
328
    fld->setType(tr("CHAR(30)"));                   // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ
290
    fld->setDefaultValue(tr("NULL"));               // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ
329
    fld->setDefaultValue(tr("NULL"));               // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ
291
    tbl->append(fld);                               // äîáàâëÿåì ïîëå â òàáëèöó
330
    tbl->append(fld);                               // äîáàâëÿåì ïîëå â òàáëèöó
292
331
293
    fld = new TableField(tr("ClassIdentifer"), tbl);    // ýòî ïÿòîå ïîëå òàáëèöû áóäåò õðàíèòü ïñåâäîíèìû êëàññîâ
332
    fld = new TableField(tr("ClassIdentifer"), tbl);    // ýòî ïÿòîå ïîëå òàáëèöû áóäåò õðàíèòü ïñåâäîíèìû êëàññîâ
294
    fld->setNotNull(false);                          // ïîëå íå ìîæåò áûòü ïóñòûì
333
    fld->setNotNull(false);                          // ïîëå íå ìîæåò áûòü ïóñòûì
295
    fld->setType(tr("INT(10)"));                   // òèï ïîëÿ - öåëîå ÷èñëî
334
    fld->setType(tr("INT(10)"));                   // òèï ïîëÿ - öåëîå ÷èñëî
296
    fld->setDefaultValue(tr("NULL"));    // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ
335
    fld->setDefaultValue(tr("NULL"));    // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ
297
    tbl->append(fld);                               // äîáàâëÿåì ïîëå â òàáëèöó
336
    tbl->append(fld);                               // äîáàâëÿåì ïîëå â òàáëèöó
298
337
299
338
300
339
301
    fld = new TableField(tr("Comment"), tbl);    // ýòî òðåòüå ïîëå òàáëèöû áóäåò õðàíèòü ïñåâäîíèìû êëàññîâ
340
    fld = new TableField(tr("Comment"), tbl);    // ýòî òðåòüå ïîëå òàáëèöû áóäåò õðàíèòü ïñåâäîíèìû êëàññîâ
302
    fld->setNotNull(true);                          // ïîëå íå ìîæåò áûòü ïóñòûì
341
    fld->setNotNull(true);                          // ïîëå íå ìîæåò áûòü ïóñòûì
303
    fld->setType(tr("CHAR(30)"));                   // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ
342
    fld->setType(tr("CHAR(30)"));                   // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ
304
    fld->setDefaultValue(tr("without comments"));    // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ
343
    fld->setDefaultValue(tr("without comments"));    // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ
305
    tbl->append(fld);                               // äîáàâëÿåì ïîëå â òàáëèöó
344
    tbl->append(fld);                               // äîáàâëÿåì ïîëå â òàáëèöó
306
345
307
346
308
    if(!MySql::createTable(tbl)){                   // åñëè íå óäàåòñÿ ñîçäàòü òàáëèöó
347
    if(!MySql::createTable(tbl)){                   // åñëè íå óäàåòñÿ ñîçäàòü òàáëèöó
309
348
310
   //     delete fld;
349
   //     delete fld;
311
        delete tbl;                                 // ÷èñòèì çà ñîáîé
350
        delete tbl;                                 // ÷èñòèì çà ñîáîé
312
        return false;                               // âûâîäèì îøèáêó
351
        return false;                               // âûâîäèì îøèáêó
313
    }
352
    }
314
353
315
354
316
    else {                                          // òàáëèöó óñïåøíî ñîçäàíà
355
    else {                                          // òàáëèöó óñïåøíî ñîçäàíà
317
 //       delete fld;
356
 //       delete fld;
318
        delete tbl;                                 // ÷èñòèì çà ñîáîé
357
        delete tbl;                                 // ÷èñòèì çà ñîáîé
319
        return true;                                // ñîîáùàåì îá óñïåõå
358
        return true;                                // ñîîáùàåì îá óñïåõå
320
359
321
    }
360
    }
322
361
323
362
324
}
363
}
325
364
326
365
327
QSqlError MySql::dbLastError(){ // ôóíêöèÿ ôîçâðàùàåò ïîñëåäíþþ îøèáêó áàçû äàííûõ
366
QSqlError MySql::dbLastError(){ // ôóíêöèÿ ôîçâðàùàåò ïîñëåäíþþ îøèáêó áàçû äàííûõ
328
    QString error;
367
    QString error;
329
    error = db.lastError().text();
368
    error = db.lastError().text();
330
369
331
    return db.lastError();
370
    return db.lastError();
332
}
371
}
333
372
334
373
335
void MySql::close(){ // çàêîûâàåì ñîåäèíåíèå ñ áàçîé
374
void MySql::close(){ // çàêîûâàåì ñîåäèíåíèå ñ áàçîé
336
    db.close();
375
    db.close();
337
376
338
}
377
}
339
 
378