Редакция 96 | Редакция 140 | К новейшей редакции | Только различия | Учитывать пробелы | Содержимое файла | Авторство | Последнее изменение | Открыть журнал | RSS
Редакция 96 | Редакция 135 | ||
---|---|---|---|
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 | tbl = new SqlTable(tr("ListOfClasses")); // ñîçäàäèì òàáëèöó ñ èìåíåì ListOfClasses äëÿ õðàíåíèÿ ñïèñêà êëàññîâ |
106 | tbl = new SqlTable(tr("ListOfClasses")); // ñîçäàäèì òàáëèöó ñ èìåíåì ListOfClasses äëÿ õðàíåíèÿ ñïèñêà êëàññîâ |
107 | fld = new TableField(tr("ClassName"), tbl); // ýòî âòîðîå ïîëå òàáëèöû áóäåò õðàíèòü èìåíà êëàññîâ, ïåðâîå ïîëå ID óæå èìååòñÿ â íîâîé òàáëèöå (îíî ñîçäàåòñÿ ïî óìîë÷àíèþ) |
107 | fld = new TableField(tr("ClassName"), tbl); // ýòî âòîðîå ïîëå òàáëèöû áóäåò õðàíèòü èìåíà êëàññîâ, ïåðâîå ïîëå ID óæå èìååòñÿ â íîâîé òàáëèöå (îíî ñîçäàåòñÿ ïî óìîë÷àíèþ) |
108 | fld->setNotNull(true); // ïîëå íå ìîæåò áûòü ïóñòûì |
108 | fld->setNotNull(true); // ïîëå íå ìîæåò áûòü ïóñòûì |
109 | fld->setType(tr("CHAR(30)")); // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ |
109 | fld->setType(tr("CHAR(30)")); // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ |
110 | fld->setDefaultValue(tr("New class")); // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ |
110 | fld->setDefaultValue(tr("New class")); // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ |
111 | tbl->append(fld); // äîáàâëÿåì ïîëå â òàáëèöó |
111 | tbl->append(fld); // äîáàâëÿåì ïîëå â òàáëèöó |
112 | 112 | ||
113 | fld = new TableField(tr("ClassAlias"), tbl); // ýòî òðåòüå ïîëå òàáëèöû áóäåò õðàíèòü ïñåâäîíèìû êëàññîâ |
113 | fld = new TableField(tr("ClassAlias"), tbl); // ýòî òðåòüå ïîëå òàáëèöû áóäåò õðàíèòü ïñåâäîíèìû êëàññîâ |
114 | fld->setNotNull(true); // ïîëå íå ìîæåò áûòü ïóñòûì |
114 | fld->setNotNull(true); // ïîëå íå ìîæåò áûòü ïóñòûì |
115 | fld->setType(tr("CHAR(30)")); // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ |
115 | fld->setType(tr("CHAR(30)")); // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ |
116 | fld->setDefaultValue(tr("New class alias")); // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ |
116 | fld->setDefaultValue(tr("New class alias")); // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ |
117 | tbl->append(fld); // äîáàâëÿåì ïîëå â òàáëèöó |
117 | tbl->append(fld); // äîáàâëÿåì ïîëå â òàáëèöó |
118 | 118 | ||
119 | fld = new TableField(tr("TableWhithInstance"), tbl); // ýòî òðåòüå ïîëå òàáëèöû áóäåò õðàíèòü ïñåâäîíèìû êëàññîâ |
119 | fld = new TableField(tr("TableWhithInstance"), tbl); // ýòî òðåòüå ïîëå òàáëèöû áóäåò õðàíèòü ïñåâäîíèìû êëàññîâ |
120 | fld->setNotNull(true); // ïîëå íå ìîæåò áûòü ïóñòûì |
120 | fld->setNotNull(true); // ïîëå íå ìîæåò áûòü ïóñòûì |
121 | fld->setType(tr("CHAR(30)")); // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ |
121 | fld->setType(tr("CHAR(30)")); // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ |
122 | fld->setDefaultValue(tr("New class instance")); // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ |
122 | fld->setDefaultValue(tr("New class instance")); // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ |
123 | tbl->append(fld); // äîáàâëÿåì ïîëå â òàáëèöó |
123 | tbl->append(fld); // äîáàâëÿåì ïîëå â òàáëèöó |
124 | 124 | ||
125 | fld = new TableField(tr("Comment"), tbl); // ýòî òðåòüå ïîëå òàáëèöû áóäåò õðàíèòü ïñåâäîíèìû êëàññîâ |
125 | fld = new TableField(tr("Comment"), tbl); // ýòî òðåòüå ïîëå òàáëèöû áóäåò õðàíèòü ïñåâäîíèìû êëàññîâ |
126 | fld->setNotNull(true); // ïîëå íå ìîæåò áûòü ïóñòûì |
126 | fld->setNotNull(true); // ïîëå íå ìîæåò áûòü ïóñòûì |
127 | fld->setType(tr("CHAR(30)")); // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ |
127 | fld->setType(tr("CHAR(30)")); // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ |
128 | fld->setDefaultValue(tr("without comments")); // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ |
128 | fld->setDefaultValue(tr("without comments")); // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ |
129 | tbl->append(fld); // äîáàâëÿåì ïîëå â òàáëèöó |
129 | tbl->append(fld); // äîáàâëÿåì ïîëå â òàáëèöó |
130 | 130 | ||
131 | 131 | ||
132 | if(!MySql::createTable(tbl)){ // åñëè íå óäàåòñÿ ñîçäàòü òàáëèöó |
132 | if(!MySql::createTable(tbl)){ // åñëè íå óäàåòñÿ ñîçäàòü òàáëèöó |
133 | 133 | ||
134 | // delete fld;
|
134 | // delete fld;
|
135 | delete tbl; // ÷èñòèì çà ñîáîé |
135 | delete tbl; // ÷èñòèì çà ñîáîé |
136 | return false; // âûâîäèì îøèáêó |
136 | return false; // âûâîäèì îøèáêó |
137 | }
|
137 | }
|
138 | 138 | ||
139 | 139 | ||
140 | else { // òàáëèöó óñïåøíî ñîçäàíà |
140 | else { // òàáëèöó óñïåøíî ñîçäàíà |
141 | // delete fld;
|
141 | // delete fld;
|
142 | delete tbl; // ÷èñòèì çà ñîáîé |
142 | delete tbl; // ÷èñòèì çà ñîáîé |
143 | return true; // ñîîáùàåì îá óñïåõå |
143 | return true; // ñîîáùàåì îá óñïåõå |
144 | 144 | ||
145 | }
|
145 | }
|
146 | 146 | ||
147 | tbl = new SqlTable(tr("DescriptionOfClasses")); // ñîçäàäèì òàáëèöó ñ èìåíåì DescriptionOfClassess äëÿ õðàíåíèÿ îïèñàíèÿ ïîëåé êëàññîâ |
147 | tbl = new SqlTable(tr("DescriptionOfClasses")); // ñîçäàäèì òàáëèöó ñ èìåíåì DescriptionOfClassess äëÿ õðàíåíèÿ îïèñàíèÿ ïîëåé êëàññîâ |
148 | fld = new TableField(tr("FieldName"), tbl); // ýòî âòîðîå ïîëå òàáëèöû áóäåò õðàíèòü èìåíà ïîëåé, ïåðâîå ïîëå ID óæå èìååòñÿ â íîâîé òàáëèöå (îíî ñîçäàåòñÿ ïî óìîë÷àíèþ) |
148 | fld = new TableField(tr("FieldName"), tbl); // ýòî âòîðîå ïîëå òàáëèöû áóäåò õðàíèòü èìåíà ïîëåé, ïåðâîå ïîëå ID óæå èìååòñÿ â íîâîé òàáëèöå (îíî ñîçäàåòñÿ ïî óìîë÷àíèþ) |
149 | fld->setNotNull(true); // ïîëå íå ìîæåò áûòü ïóñòûì |
149 | fld->setNotNull(true); // ïîëå íå ìîæåò áûòü ïóñòûì |
150 | fld->setType(tr("CHAR(30)")); // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ |
150 | fld->setType(tr("CHAR(30)")); // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ |
151 | fld->setDefaultValue(tr("New field")); // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ |
151 | fld->setDefaultValue(tr("New field")); // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ |
152 | tbl->append(fld); // äîáàâëÿåì ïîëå â òàáëèöó |
152 | tbl->append(fld); // äîáàâëÿåì ïîëå â òàáëèöó |
153 | 153 | ||
154 | fld = new TableField(tr("FieldAlias"), tbl); // ýòî òðåòüå ïîëå òàáëèöû áóäåò õðàíèòü ïñåâäîíèìû ïîëåé êëàññîâ |
154 | fld = new TableField(tr("FieldAlias"), tbl); // ýòî òðåòüå ïîëå òàáëèöû áóäåò õðàíèòü ïñåâäîíèìû ïîëåé êëàññîâ |
155 | fld->setNotNull(true); // ïîëå íå ìîæåò áûòü ïóñòûì |
155 | fld->setNotNull(true); // ïîëå íå ìîæåò áûòü ïóñòûì |
156 | fld->setType(tr("CHAR(30)")); // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ |
156 | fld->setType(tr("CHAR(30)")); // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ |
157 | fld->setDefaultValue(tr("New class alias")); // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ |
157 | fld->setDefaultValue(tr("New class alias")); // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ |
158 | tbl->append(fld); // äîáàâëÿåì ïîëå â òàáëèöó |
158 | tbl->append(fld); // äîáàâëÿåì ïîëå â òàáëèöó |
159 | 159 | ||
160 | fld = new TableField(tr("FieldType"), tbl); // ýòî ÷åòâåðòîå ïîëå òàáëèöû áóäåò òèï ïîëÿ êëàññà |
160 | fld = new TableField(tr("FieldType"), tbl); // ýòî ÷åòâåðòîå ïîëå òàáëèöû áóäåò òèï ïîëÿ êëàññà |
161 | fld->setNotNull(true); // ïîëå íå ìîæåò áûòü ïóñòûì |
161 | fld->setNotNull(true); // ïîëå íå ìîæåò áûòü ïóñòûì |
162 | fld->setType(tr("CHAR(30)")); // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ |
162 | fld->setType(tr("CHAR(30)")); // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ |
163 | fld->setDefaultValue(tr("CHAR(30)")); // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ |
163 | fld->setDefaultValue(tr("CHAR(30)")); // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ |
164 | tbl->append(fld); // äîáàâëÿåì ïîëå â òàáëèöó |
164 | tbl->append(fld); // äîáàâëÿåì ïîëå â òàáëèöó |
165 | 165 | ||
166 | fld = new TableField(tr("ClassIdentifer"), tbl); // ýòî ïÿòîå ïîëå òàáëèöû áóäåò õðàíèòü ïñåâäîíèìû êëàññîâ |
166 | fld = new TableField(tr("ClassIdentifer"), tbl); // ýòî ïÿòîå ïîëå òàáëèöû áóäåò õðàíèòü ïñåâäîíèìû êëàññîâ |
167 | fld->setNotNull(false); // ïîëå íå ìîæåò áûòü ïóñòûì |
167 | fld->setNotNull(false); // ïîëå íå ìîæåò áûòü ïóñòûì |
168 | fld->setType(tr("INT(10)")); // òèï ïîëÿ - öåëîå ÷èñëî |
168 | fld->setType(tr("INT(10)")); // òèï ïîëÿ - öåëîå ÷èñëî |
169 | fld->setDefaultValue(tr("NULL")); // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ |
169 | fld->setDefaultValue(tr("NULL")); // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ |
170 | tbl->append(fld); // äîáàâëÿåì ïîëå â òàáëèöó |
170 | tbl->append(fld); // äîáàâëÿåì ïîëå â òàáëèöó |
171 | 171 | ||
172 | 172 | ||
173 | 173 | ||
174 | fld = new TableField(tr("Comment"), tbl); // ýòî òðåòüå ïîëå òàáëèöû áóäåò õðàíèòü ïñåâäîíèìû êëàññîâ |
174 | fld = new TableField(tr("Comment"), tbl); // ýòî òðåòüå ïîëå òàáëèöû áóäåò õðàíèòü ïñåâäîíèìû êëàññîâ |
175 | fld->setNotNull(true); // ïîëå íå ìîæåò áûòü ïóñòûì |
175 | fld->setNotNull(true); // ïîëå íå ìîæåò áûòü ïóñòûì |
176 | fld->setType(tr("CHAR(30)")); // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ |
176 | fld->setType(tr("CHAR(30)")); // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ |
177 | fld->setDefaultValue(tr("without comments")); // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ |
177 | fld->setDefaultValue(tr("without comments")); // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ |
178 | tbl->append(fld); // äîáàâëÿåì ïîëå â òàáëèöó |
178 | tbl->append(fld); // äîáàâëÿåì ïîëå â òàáëèöó |
179 | 179 | ||
180 | 180 | ||
181 | if(!MySql::createTable(tbl)){ // åñëè íå óäàåòñÿ ñîçäàòü òàáëèöó |
181 | if(!MySql::createTable(tbl)){ // åñëè íå óäàåòñÿ ñîçäàòü òàáëèöó |
182 | 182 | ||
183 | // delete fld;
|
183 | // delete fld;
|
184 | delete tbl; // ÷èñòèì çà ñîáîé |
184 | delete tbl; // ÷èñòèì çà ñîáîé |
185 | return false; // âûâîäèì îøèáêó |
185 | return false; // âûâîäèì îøèáêó |
186 | }
|
186 | }
|
187 | 187 | ||
188 | 188 | ||
189 | else { // òàáëèöó óñïåøíî ñîçäàíà |
189 | else { // òàáëèöó óñïåøíî ñîçäàíà |
190 | // delete fld;
|
190 | // delete fld;
|
191 | delete tbl; // ÷èñòèì çà ñîáîé |
191 | delete tbl; // ÷èñòèì çà ñîáîé |
192 | return true; // ñîîáùàåì îá óñïåõå |
192 | return true; // ñîîáùàåì îá óñïåõå |
193 | 193 | ||
194 | }
|
194 | }
|
195 | 195 | ||
196 | 196 | ||
197 | 197 | ||
198 | 198 | ||
199 | 199 | ||
200 | }
|
200 | }
|
201 | 201 | ||
202 | 202 | ||
203 | 203 | ||
204 | 204 | ||
205 | bool MySql::createListOfClassesTable(){ |
205 | bool MySql::createListOfClassesTable(){ |
206 | 206 | ||
207 | SqlTable* tbl; |
207 | SqlTable* tbl; |
208 | TableField* fld; |
208 | TableField* fld; |
209 | if (!db.isOpen()){ |
209 | if (!db.isOpen()){ |
210 | MySql::mysqlLastError = tr("Database is not open!"); |
210 | MySql::mysqlLastError = tr("Database is not open!"); |
211 | return false; |
211 | return false; |
212 | }
|
212 | }
|
213 | tbl = new SqlTable(tr("ListOfClasses")); // ñîçäàäèì òàáëèöó ñ èìåíåì ListOfClasses äëÿ õðàíåíèÿ ñïèñêà êëàññîâ |
213 | tbl = new SqlTable(tr("ListOfClasses")); // ñîçäàäèì òàáëèöó ñ èìåíåì ListOfClasses äëÿ õðàíåíèÿ ñïèñêà êëàññîâ |
214 | fld = new TableField(tr("ClassName"), tbl); // ýòî âòîðîå ïîëå òàáëèöû áóäåò õðàíèòü èìåíà êëàññîâ, ïåðâîå ïîëå ID óæå èìååòñÿ â íîâîé òàáëèöå (îíî ñîçäàåòñÿ ïî óìîë÷àíèþ) |
214 | fld = new TableField(tr("ClassName"), tbl); // ýòî âòîðîå ïîëå òàáëèöû áóäåò õðàíèòü èìåíà êëàññîâ, ïåðâîå ïîëå ID óæå èìååòñÿ â íîâîé òàáëèöå (îíî ñîçäàåòñÿ ïî óìîë÷àíèþ) |
215 | fld->setNotNull(true); // ïîëå íå ìîæåò áûòü ïóñòûì |
215 | fld->setNotNull(true); // ïîëå íå ìîæåò áûòü ïóñòûì |
216 | fld->setType(tr("CHAR(30)")); // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ |
216 | fld->setType(tr("CHAR(30)")); // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ |
217 | fld->setDefaultValue(tr("New class")); // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ |
217 | fld->setDefaultValue(tr("New class")); // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ |
218 | tbl->append(fld); // äîáàâëÿåì ïîëå â òàáëèöó |
218 | tbl->append(fld); // äîáàâëÿåì ïîëå â òàáëèöó |
219 | 219 | ||
220 | fld = new TableField(tr("ClassAlias"), tbl); // ýòî òðåòüå ïîëå òàáëèöû áóäåò õðàíèòü ïñåâäîíèìû êëàññîâ |
220 | fld = new TableField(tr("ClassAlias"), tbl); // ýòî òðåòüå ïîëå òàáëèöû áóäåò õðàíèòü ïñåâäîíèìû êëàññîâ |
221 | fld->setNotNull(true); // ïîëå íå ìîæåò áûòü ïóñòûì |
221 | fld->setNotNull(true); // ïîëå íå ìîæåò áûòü ïóñòûì |
222 | fld->setType(tr("CHAR(30)")); // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ |
222 | fld->setType(tr("CHAR(30)")); // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ |
223 | fld->setDefaultValue(tr("New class alias")); // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ |
223 | fld->setDefaultValue(tr("New class alias")); // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ |
224 | tbl->append(fld); // äîáàâëÿåì ïîëå â òàáëèöó |
224 | tbl->append(fld); // äîáàâëÿåì ïîëå â òàáëèöó |
225 | 225 | ||
226 | fld = new TableField(tr("TableWhithInstance"), tbl); // ýòî òðåòüå ïîëå òàáëèöû áóäåò õðàíèòü ïñåâäîíèìû êëàññîâ |
226 | fld = new TableField(tr("TableWhithInstance"), tbl); // ýòî òðåòüå ïîëå òàáëèöû áóäåò õðàíèòü ïñåâäîíèìû êëàññîâ |
227 | fld->setNotNull(true); // ïîëå íå ìîæåò áûòü ïóñòûì |
227 | fld->setNotNull(true); // ïîëå íå ìîæåò áûòü ïóñòûì |
228 | fld->setType(tr("CHAR(30)")); // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ |
228 | fld->setType(tr("CHAR(30)")); // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ |
229 | fld->setDefaultValue(tr("New class instance")); // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ |
229 | fld->setDefaultValue(tr("New class instance")); // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ |
230 | tbl->append(fld); // äîáàâëÿåì ïîëå â òàáëèöó |
230 | tbl->append(fld); // äîáàâëÿåì ïîëå â òàáëèöó |
231 | 231 | ||
232 | fld = new TableField(tr("Comment"), tbl); // ýòî òðåòüå ïîëå òàáëèöû áóäåò õðàíèòü ïñåâäîíèìû êëàññîâ |
232 | fld = new TableField(tr("Comment"), tbl); // ýòî òðåòüå ïîëå òàáëèöû áóäåò õðàíèòü ïñåâäîíèìû êëàññîâ |
233 | fld->setNotNull(true); // ïîëå íå ìîæåò áûòü ïóñòûì |
233 | fld->setNotNull(true); // ïîëå íå ìîæåò áûòü ïóñòûì |
234 | fld->setType(tr("CHAR(30)")); // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ |
234 | fld->setType(tr("CHAR(30)")); // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ |
235 | fld->setDefaultValue(tr("without comments")); // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ |
235 | fld->setDefaultValue(tr("without comments")); // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ |
236 | tbl->append(fld); // äîáàâëÿåì ïîëå â òàáëèöó |
236 | tbl->append(fld); // äîáàâëÿåì ïîëå â òàáëèöó |
237 | 237 | ||
238 | 238 | ||
239 | if(!MySql::createTable(tbl)){ // åñëè íå óäàåòñÿ ñîçäàòü òàáëèöó |
239 | if(!MySql::createTable(tbl)){ // åñëè íå óäàåòñÿ ñîçäàòü òàáëèöó |
240 | 240 | ||
241 | // delete fld;
|
241 | // delete fld;
|
242 | delete tbl; // ÷èñòèì çà ñîáîé |
242 | delete tbl; // ÷èñòèì çà ñîáîé |
243 | return false; // âûâîäèì îøèáêó |
243 | return false; // âûâîäèì îøèáêó |
244 | }
|
244 | }
|
245 | 245 | ||
246 | 246 | ||
247 | else { // òàáëèöó óñïåøíî ñîçäàíà |
247 | else { // òàáëèöó óñïåøíî ñîçäàíà |
248 | // delete fld;
|
248 | // delete fld;
|
249 | delete tbl; // ÷èñòèì çà ñîáîé |
249 | delete tbl; // ÷èñòèì çà ñîáîé |
250 | return true; // ñîîáùàåì îá óñïåõå |
250 | return true; // ñîîáùàåì îá óñïåõå |
251 | 251 | ||
252 | }
|
252 | }
|
253 | 253 | ||
254 | 254 | ||
255 | 255 | ||
256 | }
|
256 | }
|
257 | 257 | ||
258 | 258 | ||
259 | 259 | ||
260 | 260 | ||
261 | bool MySql::createDescriptionOfClassesTable(){ // ñîçäàåò íåîáõîäèìóþ òàáëèöó â áàçå äàííûõ äëÿ õðàíåíèÿ îïèñàíèÿ êëàññîâ (Òàáëèöà DescriptionOfClasses) |
261 | bool MySql::createDescriptionOfClassesTable(){ // ñîçäàåò íåîáõîäèìóþ òàáëèöó â áàçå äàííûõ äëÿ õðàíåíèÿ îïèñàíèÿ êëàññîâ (Òàáëèöà DescriptionOfClasses) |
262 | SqlTable* tbl; |
262 | SqlTable* tbl; |
263 | TableField* fld; |
263 | TableField* fld; |
264 | if (!db.isOpen()){ |
264 | if (!db.isOpen()){ |
265 | MySql::mysqlLastError = tr("Database is not open!"); |
265 | MySql::mysqlLastError = tr("Database is not open!"); |
266 | return false; |
266 | return false; |
267 | }
|
267 | }
|
268 | tbl = new SqlTable(tr("DescriptionOfClasses")); // ñîçäàäèì òàáëèöó ñ èìåíåì DescriptionOfClassess äëÿ õðàíåíèÿ îïèñàíèÿ ïîëåé êëàññîâ |
268 | tbl = new SqlTable(tr("DescriptionOfClasses")); // ñîçäàäèì òàáëèöó ñ èìåíåì DescriptionOfClassess äëÿ õðàíåíèÿ îïèñàíèÿ ïîëåé êëàññîâ |
269 | fld = new TableField(tr("FieldName"), tbl); // ýòî âòîðîå ïîëå òàáëèöû áóäåò õðàíèòü èìåíà ïîëåé, ïåðâîå ïîëå ID óæå èìååòñÿ â íîâîé òàáëèöå (îíî ñîçäàåòñÿ ïî óìîë÷àíèþ) |
269 | fld = new TableField(tr("FieldName"), tbl); // ýòî âòîðîå ïîëå òàáëèöû áóäåò õðàíèòü èìåíà ïîëåé, ïåðâîå ïîëå ID óæå èìååòñÿ â íîâîé òàáëèöå (îíî ñîçäàåòñÿ ïî óìîë÷àíèþ) |
270 | fld->setNotNull(true); // ïîëå íå ìîæåò áûòü ïóñòûì |
270 | fld->setNotNull(true); // ïîëå íå ìîæåò áûòü ïóñòûì |
271 | fld->setType(tr("CHAR(30)")); // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ |
271 | fld->setType(tr("CHAR(30)")); // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ |
272 | fld->setDefaultValue(tr("New field")); // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ |
272 | fld->setDefaultValue(tr("New field")); // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ |
273 | tbl->append(fld); // äîáàâëÿåì ïîëå â òàáëèöó |
273 | tbl->append(fld); // äîáàâëÿåì ïîëå â òàáëèöó |
274 | 274 | ||
275 | fld = new TableField(tr("FieldAlias"), tbl); // ýòî òðåòüå ïîëå òàáëèöû áóäåò õðàíèòü ïñåâäîíèìû ïîëåé êëàññîâ |
275 | fld = new TableField(tr("FieldAlias"), tbl); // ýòî òðåòüå ïîëå òàáëèöû áóäåò õðàíèòü ïñåâäîíèìû ïîëåé êëàññîâ |
276 | fld->setNotNull(true); // ïîëå íå ìîæåò áûòü ïóñòûì |
276 | fld->setNotNull(true); // ïîëå íå ìîæåò áûòü ïóñòûì |
277 | fld->setType(tr("CHAR(30)")); // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ |
277 | fld->setType(tr("CHAR(30)")); // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ |
278 | fld->setDefaultValue(tr("New field alias")); // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ |
278 | fld->setDefaultValue(tr("New field alias")); // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ |
279 | tbl->append(fld); // äîáàâëÿåì ïîëå â òàáëèöó |
279 | tbl->append(fld); // äîáàâëÿåì ïîëå â òàáëèöó |
280 | 280 | ||
281 | fld = new TableField(tr("FieldType"), tbl); // ýòî ÷åòâåðòîå ïîëå òàáëèöû áóäåò òèï ïîëÿ êëàññà |
281 | fld = new TableField(tr("FieldType"), tbl); // ýòî ÷åòâåðòîå ïîëå òàáëèöû áóäåò òèï ïîëÿ êëàññà |
282 | fld->setNotNull(true); // ïîëå íå ìîæåò áûòü ïóñòûì |
282 | fld->setNotNull(true); // ïîëå íå ìîæåò áûòü ïóñòûì |
283 | fld->setType(tr("CHAR(30)")); // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ |
283 | fld->setType(tr("CHAR(30)")); // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ |
284 | fld->setDefaultValue(tr("CHAR(30)")); // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ |
284 | fld->setDefaultValue(tr("CHAR(30)")); // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ |
285 | tbl->append(fld); // äîáàâëÿåì ïîëå â òàáëèöó |
285 | tbl->append(fld); // äîáàâëÿåì ïîëå â òàáëèöó |
286 | 286 | ||
287 | fld = new TableField(tr("DefaultValue"), tbl); // ýòî ÷åòâåðòîå ïîëå òàáëèöû áóäåò òèï ïîëÿ êëàññà |
287 | fld = new TableField(tr("DefaultValue"), tbl); // ýòî ÷åòâåðòîå ïîëå òàáëèöû áóäåò òèï ïîëÿ êëàññà |
288 | fld->setNotNull(false); // ïîëå íå ìîæåò áûòü ïóñòûì |
288 | fld->setNotNull(false); // ïîëå íå ìîæåò áûòü ïóñòûì |
289 | fld->setType(tr("CHAR(30)")); // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ |
289 | fld->setType(tr("CHAR(30)")); // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ |
290 | fld->setDefaultValue(tr("NULL")); // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ |
290 | fld->setDefaultValue(tr("NULL")); // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ |
291 | tbl->append(fld); // äîáàâëÿåì ïîëå â òàáëèöó |
291 | tbl->append(fld); // äîáàâëÿåì ïîëå â òàáëèöó |
292 | 292 | ||
293 | fld = new TableField(tr("ClassIdentifer"), tbl); // ýòî ïÿòîå ïîëå òàáëèöû áóäåò õðàíèòü ïñåâäîíèìû êëàññîâ |
293 | fld = new TableField(tr("ClassIdentifer"), tbl); // ýòî ïÿòîå ïîëå òàáëèöû áóäåò õðàíèòü ïñåâäîíèìû êëàññîâ |
294 | fld->setNotNull(false); // ïîëå íå ìîæåò áûòü ïóñòûì |
294 | fld->setNotNull(false); // ïîëå íå ìîæåò áûòü ïóñòûì |
295 | fld->setType(tr("INT(10)")); // òèï ïîëÿ - öåëîå ÷èñëî |
295 | fld->setType(tr("INT(10)")); // òèï ïîëÿ - öåëîå ÷èñëî |
296 | fld->setDefaultValue(tr("NULL")); // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ |
296 | fld->setDefaultValue(tr("NULL")); // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ |
297 | tbl->append(fld); // äîáàâëÿåì ïîëå â òàáëèöó |
297 | tbl->append(fld); // äîáàâëÿåì ïîëå â òàáëèöó |
298 | 298 | ||
299 | 299 | ||
300 | 300 | ||
301 | fld = new TableField(tr("Comment"), tbl); // ýòî òðåòüå ïîëå òàáëèöû áóäåò õðàíèòü ïñåâäîíèìû êëàññîâ |
301 | fld = new TableField(tr("Comment"), tbl); // ýòî òðåòüå ïîëå òàáëèöû áóäåò õðàíèòü ïñåâäîíèìû êëàññîâ |
302 | fld->setNotNull(true); // ïîëå íå ìîæåò áûòü ïóñòûì |
302 | fld->setNotNull(true); // ïîëå íå ìîæåò áûòü ïóñòûì |
303 | fld->setType(tr("CHAR(30)")); // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ |
303 | fld->setType(tr("CHAR(30)")); // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ |
304 | fld->setDefaultValue(tr("without comments")); // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ |
304 | fld->setDefaultValue(tr("without comments")); // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ |
305 | tbl->append(fld); // äîáàâëÿåì ïîëå â òàáëèöó |
305 | tbl->append(fld); // äîáàâëÿåì ïîëå â òàáëèöó |
306 | 306 | ||
307 | 307 | ||
308 | if(!MySql::createTable(tbl)){ // åñëè íå óäàåòñÿ ñîçäàòü òàáëèöó |
308 | if(!MySql::createTable(tbl)){ // åñëè íå óäàåòñÿ ñîçäàòü òàáëèöó |
309 | 309 | ||
310 | // delete fld;
|
310 | // delete fld;
|
311 | delete tbl; // ÷èñòèì çà ñîáîé |
311 | delete tbl; // ÷èñòèì çà ñîáîé |
312 | return false; // âûâîäèì îøèáêó |
312 | return false; // âûâîäèì îøèáêó |
313 | }
|
313 | }
|
314 | 314 | ||
315 | 315 | ||
316 | else { // òàáëèöó óñïåøíî ñîçäàíà |
316 | else { // òàáëèöó óñïåøíî ñîçäàíà |
317 | // delete fld;
|
317 | // delete fld;
|
318 | delete tbl; // ÷èñòèì çà ñîáîé |
318 | delete tbl; // ÷èñòèì çà ñîáîé |
319 | return true; // ñîîáùàåì îá óñïåõå |
319 | return true; // ñîîáùàåì îá óñïåõå |
320 | 320 | ||
321 | }
|
321 | }
|
322 | 322 | ||
323 | 323 | ||
324 | }
|
324 | }
|
325 | 325 | ||
326 | 326 | ||
327 | QSqlError MySql::dbLastError(){ // ôóíêöèÿ ôîçâðàùàåò ïîñëåäíþþ îøèáêó áàçû äàííûõ |
327 | QSqlError MySql::dbLastError(){ // ôóíêöèÿ ôîçâðàùàåò ïîñëåäíþþ îøèáêó áàçû äàííûõ |
328 | QString error;
|
328 | QString error;
|
329 | error = db.lastError().text(); |
329 | error = db.lastError().text(); |
330 | 330 | ||
331 | return db.lastError(); |
331 | return db.lastError(); |
332 | }
|
332 | }
|
- | 333 | ||
- | 334 | ||
- | 335 | void MySql::close(){ // çàêîûâàåì ñîåäèíåíèå ñ áàçîé |
|
- | 336 | db.close(); |
|
- | 337 | ||
- | 338 | }
|
|
333 | 339 |