Subversion Repositories OpenInventory

Rev

Rev 59 | Rev 73 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
28 pingvin 1
#include "mysql.h"
2
 
3
MySql::MySql(QObject *parent) :
4
    QObject(parent)
5
{
6
}
7
 
8
 
9
 
10
/************************************************
11
** ‘ункци€ присвоени€ значени€ имени базы данных
12
**
13
************************************************/
14
 
15
 
16
 
17
void MySql::setDatabaseName(QString name){
41 pingvin 18
    MySql::sqlDatabaseName = name;
28 pingvin 19
}
41 pingvin 20
 
21
 
44 pingvin 22
bool MySql::connect(){
41 pingvin 23
    db = QSqlDatabase::addDatabase("QMYSQL");
24
 
25
    db.setHostName(MySql::sqlHostName);
26
    db.setDatabaseName(MySql::sqlDatabaseName);
27
    db.setUserName(MySql::sqlUserName);
28
    db.setPassword(MySql::sqlPassword);
29
    bool ok = db.open();
30
    if (ok) return true;
44 pingvin 31
    else {
32
          MySql::mysqlLastError = db.lastError().text();
41 pingvin 33
        return false; }
34
 
35
    /*
36
    pdb->setHostName(hostName);
37
    pdb->setDatabaseName(baseName);
38
    pdb->setUserName(userName);
39
    pdb->setPassword(password);
40
    bool ok = pdb->open();
41
 
42
if (!ok) {
43
                            QMessageBox::critical( // ƒиалог с сообщением об ошибке.
44
                                                                            QWidget(this->parent()),                      // –одительский виджет.
45
                                                                            QObject::tr("Database Error"),   // «аголовок.
46
                                                                            db.lastError().text());          // “екст сообщени€.
47
                     }
48
  */
49
 
50
    return true;
51
}
52
 
53
 
54
void MySql::setUserName(QString uname){
55
    MySql::sqlUserName = uname;
56
}
57
 
58
void MySql::setPassword(QString passwrd){
59
    MySql::sqlPassword = passwrd;
60
}
61
 
62
 
63
void MySql::setHostName(QString hname){
64
    MySql::sqlHostName = hname;
65
}
42 pingvin 66
 
44 pingvin 67
bool  MySql::createTable(SqlTable* table){ // создает в базе данных таблицу
42 pingvin 68
QSqlQuery q;
69
bool ok;
70
ok = q.prepare(table->sqlString());
71
if(!ok) {
44 pingvin 72
    MySql::mysqlLastError = q.lastError().text();
42 pingvin 73
    return false;}
74
ok = q.exec();
75
if(!ok) {
44 pingvin 76
    MySql::mysqlLastError = q.lastError().text();
42 pingvin 77
    return false;}
78
else return true;
79
}
44 pingvin 80
 
81
 
82
 
83
QString MySql::lasError(){
84
 
85
    return MySql::mysqlLastError;
86
}
87
 
88
 
45 pingvin 89
 
90
/************************************************
91
** ‘ункци€ создает необходимые таблицы в базе данных
92
** дл€ хранени€ названи€ и описани€ классов
93
** (“аблица ListOfClasses и “аблица DescriptionOfClasses)
94
************************************************/
95
 
96
 
97
bool MySql::createDataBase(){
98
    SqlTable* tbl;
99
    TableField* fld;
100
    if (!db.isOpen()){
101
        MySql::mysqlLastError = tr("Database is not open!");
102
        return false;
103
    }
104
    tbl = new SqlTable(tr("ListOfClasses"));        // создадим таблицу с именем ListOfClasses дл€ хранени€ списка классов
105
    fld = new TableField(tr("ClassName"), tbl);          // это второе поле таблицы будет хранить имена классов, первое поле ID уже имеетс€ в новой таблице (оно создаетс€ по умолчанию)
106
    fld->setNotNull(true);                          // поле не может быть пустым
107
    fld->setType(tr("CHAR(30)"));                   // тип пол€ - строка из 30 символов
108
    fld->setDefaultValue(tr("New class"));          // значение пол€ по умолчанию
109
    tbl->append(fld);                               // добавл€ем поле в таблицу
110
 
111
    fld = new TableField(tr("ClassAlias"), tbl);    // это третье поле таблицы будет хранить псевдонимы классов
112
    fld->setNotNull(true);                          // поле не может быть пустым
113
    fld->setType(tr("CHAR(30)"));                   // тип пол€ - строка из 30 символов
114
    fld->setDefaultValue(tr("New class alias"));    // значение пол€ по умолчанию
115
    tbl->append(fld);                               // добавл€ем поле в таблицу
116
 
117
    fld = new TableField(tr("TableWhithInstance"), tbl);    // это третье поле таблицы будет хранить псевдонимы классов
118
    fld->setNotNull(true);                          // поле не может быть пустым
119
    fld->setType(tr("CHAR(30)"));                   // тип пол€ - строка из 30 символов
120
    fld->setDefaultValue(tr("New class instance"));    // значение пол€ по умолчанию
121
    tbl->append(fld);                               // добавл€ем поле в таблицу
122
 
123
    fld = new TableField(tr("Comment"), tbl);    // это третье поле таблицы будет хранить псевдонимы классов
124
    fld->setNotNull(true);                          // поле не может быть пустым
125
    fld->setType(tr("CHAR(30)"));                   // тип пол€ - строка из 30 символов
126
    fld->setDefaultValue(tr("without comments"));    // значение пол€ по умолчанию
127
    tbl->append(fld);                               // добавл€ем поле в таблицу
128
 
129
 
130
    if(!MySql::createTable(tbl)){                   // если не удаетс€ создать таблицу
131
 
132
   //     delete fld;
133
        delete tbl;                                 // чистим за собой
134
        return false;                               // выводим ошибку
135
    }
136
 
137
 
138
    else {                                          // таблицу успешно создана
139
 //       delete fld;
140
        delete tbl;                                 // чистим за собой
141
        return true;                                // сообщаем об успехе
142
 
143
    }
144
 
56 pingvin 145
    tbl = new SqlTable(tr("DescriptionOfClasses")); // создадим таблицу с именем DescriptionOfClassess дл€ хранени€ описани€ полей классов
146
    fld = new TableField(tr("FieldName"), tbl);     // это второе поле таблицы будет хранить имена полей, первое поле ID уже имеетс€ в новой таблице (оно создаетс€ по умолчанию)
147
    fld->setNotNull(true);                          // поле не может быть пустым
148
    fld->setType(tr("CHAR(30)"));                   // тип пол€ - строка из 30 символов
149
    fld->setDefaultValue(tr("New field"));          // значение пол€ по умолчанию
150
    tbl->append(fld);                               // добавл€ем поле в таблицу
45 pingvin 151
 
56 pingvin 152
    fld = new TableField(tr("FieldAlias"), tbl);    // это третье поле таблицы будет хранить псевдонимы полей классов
153
    fld->setNotNull(true);                          // поле не может быть пустым
154
    fld->setType(tr("CHAR(30)"));                   // тип пол€ - строка из 30 символов
155
    fld->setDefaultValue(tr("New class alias"));    // значение пол€ по умолчанию
156
    tbl->append(fld);                               // добавл€ем поле в таблицу
157
 
158
    fld = new TableField(tr("FieldType"), tbl);     // это четвертое поле таблицы будет тип пол€ класса
159
    fld->setNotNull(true);                          // поле не может быть пустым
160
    fld->setType(tr("CHAR(30)"));                   // тип пол€ - строка из 30 символов
161
    fld->setDefaultValue(tr("CHAR(30)"));           // значение пол€ по умолчанию
162
    tbl->append(fld);                               // добавл€ем поле в таблицу
163
 
164
    fld = new TableField(tr("ClassIdentifer"), tbl);    // это п€тое поле таблицы будет хранить псевдонимы классов
165
    fld->setNotNull(false);                          // поле не может быть пустым
166
    fld->setType(tr("INT(10)"));                   // тип пол€ - целое число
167
    fld->setDefaultValue(tr("NULL"));    // значение пол€ по умолчанию
168
    tbl->append(fld);                               // добавл€ем поле в таблицу
169
 
170
 
171
 
172
    fld = new TableField(tr("Comment"), tbl);    // это третье поле таблицы будет хранить псевдонимы классов
173
    fld->setNotNull(true);                          // поле не может быть пустым
174
    fld->setType(tr("CHAR(30)"));                   // тип пол€ - строка из 30 символов
175
    fld->setDefaultValue(tr("without comments"));    // значение пол€ по умолчанию
176
    tbl->append(fld);                               // добавл€ем поле в таблицу
177
 
178
 
179
    if(!MySql::createTable(tbl)){                   // если не удаетс€ создать таблицу
180
 
181
   //     delete fld;
182
        delete tbl;                                 // чистим за собой
183
        return false;                               // выводим ошибку
184
    }
185
 
186
 
187
    else {                                          // таблицу успешно создана
188
 //       delete fld;
189
        delete tbl;                                 // чистим за собой
190
        return true;                                // сообщаем об успехе
191
 
192
    }
193
 
194
 
195
 
196
 
197
 
45 pingvin 198
}
56 pingvin 199
 
200
 
201
 
202
 
203
bool MySql::createListOfClassesTable(){
204
 
205
    SqlTable* tbl;
206
    TableField* fld;
207
    if (!db.isOpen()){
208
        MySql::mysqlLastError = tr("Database is not open!");
209
        return false;
210
    }
211
    tbl = new SqlTable(tr("ListOfClasses"));        // создадим таблицу с именем ListOfClasses дл€ хранени€ списка классов
212
    fld = new TableField(tr("ClassName"), tbl);          // это второе поле таблицы будет хранить имена классов, первое поле ID уже имеетс€ в новой таблице (оно создаетс€ по умолчанию)
213
    fld->setNotNull(true);                          // поле не может быть пустым
214
    fld->setType(tr("CHAR(30)"));                   // тип пол€ - строка из 30 символов
215
    fld->setDefaultValue(tr("New class"));          // значение пол€ по умолчанию
216
    tbl->append(fld);                               // добавл€ем поле в таблицу
217
 
218
    fld = new TableField(tr("ClassAlias"), tbl);    // это третье поле таблицы будет хранить псевдонимы классов
219
    fld->setNotNull(true);                          // поле не может быть пустым
220
    fld->setType(tr("CHAR(30)"));                   // тип пол€ - строка из 30 символов
221
    fld->setDefaultValue(tr("New class alias"));    // значение пол€ по умолчанию
222
    tbl->append(fld);                               // добавл€ем поле в таблицу
223
 
224
    fld = new TableField(tr("TableWhithInstance"), tbl);    // это третье поле таблицы будет хранить псевдонимы классов
225
    fld->setNotNull(true);                          // поле не может быть пустым
226
    fld->setType(tr("CHAR(30)"));                   // тип пол€ - строка из 30 символов
227
    fld->setDefaultValue(tr("New class instance"));    // значение пол€ по умолчанию
228
    tbl->append(fld);                               // добавл€ем поле в таблицу
229
 
230
    fld = new TableField(tr("Comment"), tbl);    // это третье поле таблицы будет хранить псевдонимы классов
231
    fld->setNotNull(true);                          // поле не может быть пустым
232
    fld->setType(tr("CHAR(30)"));                   // тип пол€ - строка из 30 символов
233
    fld->setDefaultValue(tr("without comments"));    // значение пол€ по умолчанию
234
    tbl->append(fld);                               // добавл€ем поле в таблицу
235
 
236
 
237
    if(!MySql::createTable(tbl)){                   // если не удаетс€ создать таблицу
238
 
239
   //     delete fld;
240
        delete tbl;                                 // чистим за собой
241
        return false;                               // выводим ошибку
242
    }
243
 
244
 
245
    else {                                          // таблицу успешно создана
246
 //       delete fld;
247
        delete tbl;                                 // чистим за собой
248
        return true;                                // сообщаем об успехе
249
 
250
    }
251
 
252
 
253
 
254
}
255
 
256
 
257
 
258
 
259
bool MySql::createDescriptionOfClassesTable(){ // создает необходимую таблицу в базе данных дл€ хранени€ описани€ классов (“аблица DescriptionOfClasses)
260
    SqlTable* tbl;
261
    TableField* fld;
262
    if (!db.isOpen()){
263
        MySql::mysqlLastError = tr("Database is not open!");
264
        return false;
265
    }
266
    tbl = new SqlTable(tr("DescriptionOfClasses")); // создадим таблицу с именем DescriptionOfClassess дл€ хранени€ описани€ полей классов
267
    fld = new TableField(tr("FieldName"), tbl);     // это второе поле таблицы будет хранить имена полей, первое поле ID уже имеетс€ в новой таблице (оно создаетс€ по умолчанию)
268
    fld->setNotNull(true);                          // поле не может быть пустым
269
    fld->setType(tr("CHAR(30)"));                   // тип пол€ - строка из 30 символов
270
    fld->setDefaultValue(tr("New field"));          // значение пол€ по умолчанию
271
    tbl->append(fld);                               // добавл€ем поле в таблицу
272
 
273
    fld = new TableField(tr("FieldAlias"), tbl);    // это третье поле таблицы будет хранить псевдонимы полей классов
274
    fld->setNotNull(true);                          // поле не может быть пустым
275
    fld->setType(tr("CHAR(30)"));                   // тип пол€ - строка из 30 символов
62 pingvin 276
    fld->setDefaultValue(tr("New field alias"));    // значение пол€ по умолчанию
56 pingvin 277
    tbl->append(fld);                               // добавл€ем поле в таблицу
278
 
279
    fld = new TableField(tr("FieldType"), tbl);     // это четвертое поле таблицы будет тип пол€ класса
280
    fld->setNotNull(true);                          // поле не может быть пустым
281
    fld->setType(tr("CHAR(30)"));                   // тип пол€ - строка из 30 символов
282
    fld->setDefaultValue(tr("CHAR(30)"));           // значение пол€ по умолчанию
283
    tbl->append(fld);                               // добавл€ем поле в таблицу
284
 
59 pingvin 285
    fld = new TableField(tr("DefaultValue"), tbl);  // это четвертое поле таблицы будет тип пол€ класса
286
    fld->setNotNull(false);                         // поле не может быть пустым
287
    fld->setType(tr("CHAR(30)"));                   // тип пол€ - строка из 30 символов
288
    fld->setDefaultValue(tr("NULL"));               // значение пол€ по умолчанию
289
    tbl->append(fld);                               // добавл€ем поле в таблицу
290
 
56 pingvin 291
    fld = new TableField(tr("ClassIdentifer"), tbl);    // это п€тое поле таблицы будет хранить псевдонимы классов
292
    fld->setNotNull(false);                          // поле не может быть пустым
293
    fld->setType(tr("INT(10)"));                   // тип пол€ - целое число
294
    fld->setDefaultValue(tr("NULL"));    // значение пол€ по умолчанию
295
    tbl->append(fld);                               // добавл€ем поле в таблицу
296
 
297
 
298
 
299
    fld = new TableField(tr("Comment"), tbl);    // это третье поле таблицы будет хранить псевдонимы классов
300
    fld->setNotNull(true);                          // поле не может быть пустым
301
    fld->setType(tr("CHAR(30)"));                   // тип пол€ - строка из 30 символов
302
    fld->setDefaultValue(tr("without comments"));    // значение пол€ по умолчанию
303
    tbl->append(fld);                               // добавл€ем поле в таблицу
304
 
305
 
306
    if(!MySql::createTable(tbl)){                   // если не удаетс€ создать таблицу
307
 
308
   //     delete fld;
309
        delete tbl;                                 // чистим за собой
310
        return false;                               // выводим ошибку
311
    }
312
 
313
 
314
    else {                                          // таблицу успешно создана
315
 //       delete fld;
316
        delete tbl;                                 // чистим за собой
317
        return true;                                // сообщаем об успехе
318
 
319
    }
320
 
321
 
322
}