Хранилища Subversion OpenInventory

Редакция

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

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

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