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