Редакция 39 | Только различия | Учитывать пробелы | Содержимое файла | Авторство | Последнее изменение | Открыть журнал | RSS
Редакция 39 | Редакция 70 | ||
---|---|---|---|
1 | #include "sqltable.h"
|
1 | #include "sqltable.h"
|
2 | 2 | ||
3 | SqlTable::SqlTable(QString tname, QObject *parent) : |
3 | SqlTable::SqlTable(QString tname, QObject *parent) : |
4 | QObject(parent) |
4 | QObject(parent) |
5 | {
|
5 | {
|
6 | 6 | ||
7 | tableName = tname; |
7 | tableName = tname; |
8 | field_tmp = new TableField("ID", this); // ïðè ñîçäàíèè òàáëèöû äîáàâèì ïîëå "ID" (ñ÷åò÷èê) |
8 | field_tmp = new TableField("ID", this); // ïðè ñîçäàíèè òàáëèöû äîáàâèì ïîëå "ID" (ñ÷åò÷èê) |
9 | field_tmp->setType(tr("INT(10)")); |
9 | field_tmp->setType(tr("INT(10)")); |
10 | field_tmp->setAutoIncrement(true); |
10 | field_tmp->setAutoIncrement(true); |
11 | tableFields.append(field_tmp); // äîáàâëÿåì íîâîå ïîëå (óêàçàòåëü) â ñïèñîê (óêàçàòåëåé) ïîëåé |
11 | tableFields.append(field_tmp); // äîáàâëÿåì íîâîå ïîëå (óêàçàòåëü) â ñïèñîê (óêàçàòåëåé) ïîëåé |
12 | tablePrimaryKey = field_tmp->name(); // äåëàåì íàøå åäèíñòâåííîå ïîëå ïåðâè÷íûì êëþ÷îì |
12 | tablePrimaryKey = field_tmp->name(); // äåëàåì íàøå åäèíñòâåííîå ïîëå ïåðâè÷íûì êëþ÷îì |
13 | tablePrimaryKeyIndex = 0; |
13 | tablePrimaryKeyIndex = 0; |
14 | tableEngine = tr("MyISAM"); |
14 | tableEngine = tr("MyISAM"); |
15 | tableCharacterSet = tr("cp1251"); |
15 | tableCharacterSet = tr("cp1251"); |
- | 16 | SqlTable::createSqlString(); |
|
16 | //delete field_tmp;
|
17 | //delete field_tmp;
|
17 | }
|
18 | }
|
18 | 19 | ||
19 | /***************************************************************************************
|
20 | /***************************************************************************************
|
20 | ** ôóíêöèÿ ïðèñâàèâàåò èìÿ òàáëèöå, íîâîå èìÿ ïåðåäàåòñÿ â ïàðàìåòðå ôóíêöèè tname
|
21 | ** ôóíêöèÿ ïðèñâàèâàåò èìÿ òàáëèöå, íîâîå èìÿ ïåðåäàåòñÿ â ïàðàìåòðå ôóíêöèè tname
|
21 | **
|
22 | **
|
22 | **
|
23 | **
|
23 | ***************************************************************************************/
|
24 | ***************************************************************************************/
|
24 | 25 | ||
25 | 26 | ||
26 | void SqlTable::setName(QString tname){ |
27 | void SqlTable::setName(QString tname){ |
27 | SqlTable::tableName = tname; |
28 | SqlTable::tableName = tname; |
28 | SqlTable::createSqlString(); |
29 | SqlTable::createSqlString(); |
29 | }
|
30 | }
|
30 | 31 | ||
31 | /***************************************************************************************
|
32 | /***************************************************************************************
|
32 | ** ôóíêöèÿ âîçâðàùàåò èìÿ òàáëèöû
|
33 | ** ôóíêöèÿ âîçâðàùàåò èìÿ òàáëèöû
|
33 | **
|
34 | **
|
34 | **
|
35 | **
|
35 | ***************************************************************************************/
|
36 | ***************************************************************************************/
|
36 | 37 | ||
37 | 38 | ||
38 | QString SqlTable::name(){ |
39 | QString SqlTable::name(){ |
39 | 40 | ||
40 | return SqlTable::tableName; |
41 | return SqlTable::tableName; |
41 | }
|
42 | }
|
42 | 43 | ||
43 | 44 | ||
44 | /***************************************************************************************
|
45 | /***************************************************************************************
|
45 | ** ôóíêöèÿ âîçâðàùàåò ñïèñîê óêàçàòåëåé íà ïîëÿ òàáëèöû
|
46 | ** ôóíêöèÿ âîçâðàùàåò ñïèñîê óêàçàòåëåé íà ïîëÿ òàáëèöû
|
46 | **
|
47 | **
|
47 | **
|
48 | **
|
48 | ***************************************************************************************/
|
49 | ***************************************************************************************/
|
49 | 50 | ||
50 | QList<TableField*> SqlTable::fields(){ |
51 | QList<TableField*> SqlTable::fields(){ |
51 | 52 | ||
52 | return SqlTable::tableFields; |
53 | return SqlTable::tableFields; |
53 | }
|
54 | }
|
54 | 55 | ||
55 | 56 | ||
56 | /***************************************************************************************
|
57 | /***************************************************************************************
|
57 | ** ôóíêöèÿ óñòàíàâëèâàåò ïåðâè÷íûì êëþ÷îì ïîëå,
|
58 | ** ôóíêöèÿ óñòàíàâëèâàåò ïåðâè÷íûì êëþ÷îì ïîëå,
|
58 | ** èìåíÿ êîòîðîãî ñîâïàäàåò ñ ïåðåäàâàåìûì ïàðàìåòðîì fieldName
|
59 | ** èìåíÿ êîòîðîãî ñîâïàäàåò ñ ïåðåäàâàåìûì ïàðàìåòðîì fieldName
|
59 | ** Âîçâðàùàåò true, åñëè îïðåðàöèÿ ïðîøëà óñïåøíî
|
60 | ** Âîçâðàùàåò true, åñëè îïðåðàöèÿ ïðîøëà óñïåøíî
|
60 | ** Èíà÷å - âîçâðàùàåò false è ïîìåùàåò ïîÿñíåíèå ê ñëó÷èâøåéñÿ îøèáêå â ïåðåìåííóþ lastError
|
61 | ** Èíà÷å - âîçâðàùàåò false è ïîìåùàåò ïîÿñíåíèå ê ñëó÷èâøåéñÿ îøèáêå â ïåðåìåííóþ lastError
|
61 | **
|
62 | **
|
62 | **
|
63 | **
|
63 | ***************************************************************************************/
|
64 | ***************************************************************************************/
|
64 | 65 | ||
65 | 66 | ||
66 | 67 | ||
67 | bool SqlTable::setPrimaryKey(QString fieldName){ |
68 | bool SqlTable::setPrimaryKey(QString fieldName){ |
68 | 69 | ||
69 | if (tableFields.isEmpty()) { // åñëè ñïèñîê ïîëåé ïóñò |
70 | if (tableFields.isEmpty()) { // åñëè ñïèñîê ïîëåé ïóñò |
70 | SqlTable::tableLastError = tr("Table does not contain fields!"); // âûäàåì îøèáêó |
71 | SqlTable::tableLastError = tr("Table does not contain fields!"); // âûäàåì îøèáêó |
71 | return false; |
72 | return false; |
72 | }
|
73 | }
|
73 | for (int i = 0; i < tableFields.size(); ++i){ |
74 | for (int i = 0; i < tableFields.size(); ++i){ |
74 | if (tableFields.at(i)->name() == fieldName){ // íàøëè ïîëå ñ íóæíûì èìåíåì |
75 | if (tableFields.at(i)->name() == fieldName){ // íàøëè ïîëå ñ íóæíûì èìåíåì |
75 | SqlTable::tablePrimaryKeyIndex = i; // ïðèñâàèâàåì èäåêñó êëþ÷åâîãî ïîëÿ íîâîå çíà÷åíèå |
76 | SqlTable::tablePrimaryKeyIndex = i; // ïðèñâàèâàåì èäåêñó êëþ÷åâîãî ïîëÿ íîâîå çíà÷åíèå |
76 | SqlTable::tablePrimaryKey = tableFields.at(i)->name(); // òàêæå ïðèñâàèâàåì íîâîå çíà÷åíèå ïåðåìåííîé, ñîäåðæàùåé èìÿ êëþ÷åâîãî ïîëÿ |
77 | SqlTable::tablePrimaryKey = tableFields.at(i)->name(); // òàêæå ïðèñâàèâàåì íîâîå çíà÷åíèå ïåðåìåííîé, ñîäåðæàùåé èìÿ êëþ÷åâîãî ïîëÿ |
77 | SqlTable::createSqlString(); // îáíîâëÿåì sql-ñòðîêó çàïðîñà |
78 | SqlTable::createSqlString(); // îáíîâëÿåì sql-ñòðîêó çàïðîñà |
78 | return true; |
79 | return true; |
79 | }
|
80 | }
|
80 | }
|
81 | }
|
81 | SqlTable::tableLastError = tr("In the table there is no field with that name!"); // íå íàøëè ïîëÿ ñ òàêèì èìåíåì, |
82 | SqlTable::tableLastError = tr("In the table there is no field with that name!"); // íå íàøëè ïîëÿ ñ òàêèì èìåíåì, |
82 | return false; // âûäàåì îøèáêó |
83 | return false; // âûäàåì îøèáêó |
83 | }
|
84 | }
|
84 | 85 | ||
85 | 86 | ||
86 | /***************************************************************************************
|
87 | /***************************************************************************************
|
87 | ** ôóíêöèÿ âîçâðàùàåèò ïîÿñíèòåëüíûé òåêñò ïîñëåäíåé îøèáêè,
|
88 | ** ôóíêöèÿ âîçâðàùàåèò ïîÿñíèòåëüíûé òåêñò ïîñëåäíåé îøèáêè,
|
88 | ** êîòîðàÿ âîçíèêëà ïðè âûçîâå ìåòîäîâ êëàññà
|
89 | ** êîòîðàÿ âîçíèêëà ïðè âûçîâå ìåòîäîâ êëàññà
|
89 | **
|
90 | **
|
90 | ***************************************************************************************/
|
91 | ***************************************************************************************/
|
91 | 92 | ||
92 | QString SqlTable::lastError(){ |
93 | QString SqlTable::lastError(){ |
93 | return SqlTable::tableLastError; |
94 | return SqlTable::tableLastError; |
94 | }
|
95 | }
|
95 | 96 | ||
96 | 97 | ||
97 | 98 | ||
98 | /***************************************************************************************
|
99 | /***************************************************************************************
|
99 | ** ôóíêöèÿ âîçâðàùàåò èìÿ ïîëÿ,
|
100 | ** ôóíêöèÿ âîçâðàùàåò èìÿ ïîëÿ,
|
100 | ** êîòîðîå ÿâëÿåòñÿ ïåðâè÷íûì êëþ÷îì
|
101 | ** êîòîðîå ÿâëÿåòñÿ ïåðâè÷íûì êëþ÷îì
|
101 | **
|
102 | **
|
102 | ***************************************************************************************/
|
103 | ***************************************************************************************/
|
103 | 104 | ||
104 | QString SqlTable::primaryKey(){ |
105 | QString SqlTable::primaryKey(){ |
105 | return SqlTable::tablePrimaryKey; |
106 | return SqlTable::tablePrimaryKey; |
106 | }
|
107 | }
|
107 | 108 | ||
108 | /***************************************************************************************
|
109 | /***************************************************************************************
|
109 | ** ôóíêöèÿ ãåíåðèðóåò ñòðîêó Sql-çàïðîñà,
|
110 | ** ôóíêöèÿ ãåíåðèðóåò ñòðîêó Sql-çàïðîñà,
|
110 | ** êîòîðàÿ ñîçäàåò â áàçå äàííûõ ñîîòâåòñòâóþùe òàáëèöó
|
111 | ** êîòîðàÿ ñîçäàåò â áàçå äàííûõ ñîîòâåòñòâóþùe òàáëèöó
|
111 | **
|
112 | **
|
112 | ***************************************************************************************/
|
113 | ***************************************************************************************/
|
113 | 114 | ||
114 | bool SqlTable::createSqlString(){ |
115 | bool SqlTable::createSqlString(){ |
115 | QString sql_str;
|
116 | QString sql_str;
|
116 | int i = 0; |
117 | int i = 0; |
117 | if (tableFields.isEmpty()) { // åñëè ñïèñîê ïîëåé ïóñò |
118 | if (tableFields.isEmpty()) { // åñëè ñïèñîê ïîëåé ïóñò |
118 | SqlTable::tableLastError = tr("Table does not contain fields!"); // âûäàåì îøèáêó |
119 | SqlTable::tableLastError = tr("Table does not contain fields!"); // âûäàåì îøèáêó |
119 | return false; |
120 | return false; |
120 | }
|
121 | }
|
121 | sql_str = tr("CREATE TABLE `"); |
122 | sql_str = tr("CREATE TABLE `"); |
122 | sql_str.append( SqlTable::tableName); |
123 | sql_str.append( SqlTable::tableName); |
123 | sql_str.append(tr("` ( ")); |
124 | sql_str.append(tr("` ( ")); |
124 | 125 | ||
125 | for (i; i < (tableFields.size()-1); ++i){ // îáðàáîòàåì âñå ïîëÿ, êðîìå ïîñëåäíåãî |
126 | for (i; i < (tableFields.size()-1); ++i){ // îáðàáîòàåì âñå ïîëÿ, êðîìå ïîñëåäíåãî |
126 | sql_str.append(tableFields.at(i)->sqlString()); |
127 | sql_str.append(tableFields.at(i)->sqlString()); |
127 | sql_str.append(tr(", ")); |
128 | sql_str.append(tr(", ")); |
128 | }
|
129 | }
|
129 | sql_str.append(tableFields.at(i)->sqlString()); // ïîñëåäíåå ïîëå |
130 | sql_str.append(tableFields.at(i)->sqlString()); // ïîñëåäíåå ïîëå |
130 | sql_str.append(tr(" ")); // ïîñëå ïîñëåäíåãî ïîëÿ çàïÿòóþ ïîêà íå ñòàâèì |
131 | sql_str.append(tr(" ")); // ïîñëå ïîñëåäíåãî ïîëÿ çàïÿòóþ ïîêà íå ñòàâèì |
131 | 132 | ||
132 | if (SqlTable::tablePrimaryKey != tr("")) { // åñëè åñòü ïåðâè÷íûé êëþ÷, |
133 | if (SqlTable::tablePrimaryKey != tr("")) { // åñëè åñòü ïåðâè÷íûé êëþ÷, |
133 | sql_str.append(tr(", ")); // òî ñòàâèì çàïÿòóþ |
134 | sql_str.append(tr(", ")); // òî ñòàâèì çàïÿòóþ |
134 | sql_str.append(tr("PRIMARY KEY (`")); |
135 | sql_str.append(tr("PRIMARY KEY (`")); |
135 | sql_str.append(SqlTable::tablePrimaryKey); |
136 | sql_str.append(SqlTable::tablePrimaryKey); |
136 | sql_str.append(tr("`) ) ")); |
137 | sql_str.append(tr("`) ) ")); |
137 | }
|
138 | }
|
138 | else sql_str.append(tr(" ) ")); |
139 | else sql_str.append(tr(" ) ")); |
139 | if (SqlTable::tableEngine != tr("")) { |
140 | if (SqlTable::tableEngine != tr("")) { |
140 | sql_str.append(tr("ENGINE=")); |
141 | sql_str.append(tr("ENGINE=")); |
141 | sql_str.append(SqlTable::tableEngine); |
142 | sql_str.append(SqlTable::tableEngine); |
142 | sql_str.append(tr(" ")); |
143 | sql_str.append(tr(" ")); |
143 | }
|
144 | }
|
144 | if (SqlTable::tableCharacterSet != tr("")){ |
145 | if (SqlTable::tableCharacterSet != tr("")){ |
145 | sql_str.append(tr("DEFAULT CHARSET=")); |
146 | sql_str.append(tr("DEFAULT CHARSET=")); |
146 | sql_str.append(SqlTable::tableCharacterSet); |
147 | sql_str.append(SqlTable::tableCharacterSet); |
147 | 148 | ||
148 | }
|
149 | }
|
149 | SqlTable::SqlString = sql_str; |
150 | SqlTable::SqlString = sql_str; |
150 | return true; |
151 | return true; |
151 | 152 | ||
152 | }
|
153 | }
|
153 | 154 | ||
154 | /***************************************************************************************
|
155 | /***************************************************************************************
|
155 | ** ôóíêöèÿ âîçâðàùàåò ñòðîêó Sql-çàïðîñà, êîòîðàÿ ñîçäàåò â áàçå äàííûõ ñîîòâåòñòâóþùóþ òàáëèöó
|
156 | ** ôóíêöèÿ âîçâðàùàåò ñòðîêó Sql-çàïðîñà, êîòîðàÿ ñîçäàåò â áàçå äàííûõ ñîîòâåòñòâóþùóþ òàáëèöó
|
156 | **
|
157 | **
|
157 | **
|
158 | **
|
158 | ***************************************************************************************/
|
159 | ***************************************************************************************/
|
159 | 160 | ||
160 | 161 | ||
161 | QString SqlTable::sqlString(){ |
162 | QString SqlTable::sqlString(){ |
162 | return SqlTable::SqlString; |
163 | return SqlTable::SqlString; |
163 | 164 | ||
164 | }
|
165 | }
|
165 | 166 | ||
166 | 167 | ||
167 | void SqlTable::append(TableField* newfield){ // äîáàâëÿåò â êîíåö ñïèñêà (óêàçàòåëåé) ïîëåé òàáëèöû íîàîå ïîëå, ïåðåäàâàåìîå ÷åðåç ïàðàìåòð newfield (óêàçàòåëü) |
168 | void SqlTable::append(TableField* newfield){ // äîáàâëÿåò â êîíåö ñïèñêà (óêàçàòåëåé) ïîëåé òàáëèöû íîàîå ïîëå, ïåðåäàâàåìîå ÷åðåç ïàðàìåòð newfield (óêàçàòåëü) |
168 | SqlTable::tableFields.append(newfield); |
169 | SqlTable::tableFields.append(newfield); |
169 | SqlTable::createSqlString(); |
170 | SqlTable::createSqlString(); |
170 | }
|
171 | }
|
171 | 172 |