7,8 → 7,12 |
tableName = tname; |
field_tmp = new TableField("ID", this); // ïðè ñîçäàíèè òàáëèöû äîáàâèì ïîëå "ID" (ñ÷åò÷èê) |
field_tmp->setType(tr("INT(10)")); |
field_tmp->setAutoIncrement(true); |
tableFields.append(field_tmp); // äîáàâëÿåì íîâîå ïîëå (óêàçàòåëü) â ñïèñîê (óêàçàòåëåé) ïîëåé |
primaryKey = field_tmp->name(); // äåëàåì íàøå åäèíñòâåííîå ïîëå ïåðâè÷íûì êëþ÷îì |
tablePrimaryKey = field_tmp->name(); // äåëàåì íàøå åäèíñòâåííîå ïîëå ïåðâè÷íûì êëþ÷îì |
tablePrimaryKeyIndex = 0; |
tableEngine = tr("MyISAM"); |
tableCharacterSet = tr("cp1251"); |
//delete field_tmp; |
} |
|
21,6 → 25,7 |
|
void SqlTable::setName(QString tname){ |
SqlTable::tableName = tname; |
SqlTable::createSqlString(); |
} |
|
/*************************************************************************************** |
46,3 → 51,120 |
|
return SqlTable::tableFields; |
} |
|
|
/*************************************************************************************** |
** ôóíêöèÿ óñòàíàâëèâàåò ïåðâè÷íûì êëþ÷îì ïîëå, |
** èìåíÿ êîòîðîãî ñîâïàäàåò ñ ïåðåäàâàåìûì ïàðàìåòðîì fieldName |
** Âîçâðàùàåò true, åñëè îïðåðàöèÿ ïðîøëà óñïåøíî |
** Èíà÷å - âîçâðàùàåò false è ïîìåùàåò ïîÿñíåíèå ê ñëó÷èâøåéñÿ îøèáêå â ïåðåìåííóþ lastError |
** |
** |
***************************************************************************************/ |
|
|
|
bool SqlTable::setPrimaryKey(QString fieldName){ |
|
if (tableFields.isEmpty()) { // åñëè ñïèñîê ïîëåé ïóñò |
SqlTable::tableLastError = tr("Table does not contain fields!"); // âûäàåì îøèáêó |
return false; |
} |
for (int i = 0; i < tableFields.size(); ++i){ |
if (tableFields.at(i)->name() == fieldName){ // íàøëè ïîëå ñ íóæíûì èìåíåì |
SqlTable::tablePrimaryKeyIndex = i; // ïðèñâàèâàåì èäåêñó êëþ÷åâîãî ïîëÿ íîâîå çíà÷åíèå |
SqlTable::tablePrimaryKey = tableFields.at(i)->name(); // òàêæå ïðèñâàèâàåì íîâîå çíà÷åíèå ïåðåìåííîé, ñîäåðæàùåé èìÿ êëþ÷åâîãî ïîëÿ |
SqlTable::createSqlString(); // îáíîâëÿåì sql-ñòðîêó çàïðîñà |
return true; |
} |
} |
SqlTable::tableLastError = tr("In the table there is no field with that name!"); // íå íàøëè ïîëÿ ñ òàêèì èìåíåì, |
return false; // âûäàåì îøèáêó |
} |
|
|
/*************************************************************************************** |
** ôóíêöèÿ âîçâðàùàåèò ïîÿñíèòåëüíûé òåêñò ïîñëåäíåé îøèáêè, |
** êîòîðàÿ âîçíèêëà ïðè âûçîâå ìåòîäîâ êëàññà |
** |
***************************************************************************************/ |
|
QString SqlTable::lastError(){ |
return SqlTable::tableLastError; |
} |
|
|
|
/*************************************************************************************** |
** ôóíêöèÿ âîçâðàùàåò èìÿ ïîëÿ, |
** êîòîðîå ÿâëÿåòñÿ ïåðâè÷íûì êëþ÷îì |
** |
***************************************************************************************/ |
|
QString SqlTable::primaryKey(){ |
return SqlTable::tablePrimaryKey; |
} |
|
/*************************************************************************************** |
** ôóíêöèÿ ãåíåðèðóåò ñòðîêó Sql-çàïðîñà, |
** êîòîðàÿ ñîçäàåò â áàçå äàííûõ ñîîòâåòñòâóþùe òàáëèöó |
** |
***************************************************************************************/ |
|
bool SqlTable::createSqlString(){ |
QString sql_str; |
int i = 0; |
if (tableFields.isEmpty()) { // åñëè ñïèñîê ïîëåé ïóñò |
SqlTable::tableLastError = tr("Table does not contain fields!"); // âûäàåì îøèáêó |
return false; |
} |
sql_str = tr("CREATE TABLE `"); |
sql_str.append( SqlTable::tableName); |
sql_str.append(tr("` ( ")); |
|
for (i; i < (tableFields.size()-1); ++i){ // îáðàáîòàåì âñå ïîëÿ, êðîìå ïîñëåäíåãî |
sql_str.append(tableFields.at(i)->sqlString()); |
sql_str.append(tr(", ")); |
} |
sql_str.append(tableFields.at(i)->sqlString()); // ïîñëåäíåå ïîëå |
sql_str.append(tr(" ")); // ïîñëå ïîñëåäíåãî ïîëÿ çàïÿòóþ ïîêà íå ñòàâèì |
|
if (SqlTable::tablePrimaryKey != tr("")) { // åñëè åñòü ïåðâè÷íûé êëþ÷, |
sql_str.append(tr(", ")); // òî ñòàâèì çàïÿòóþ |
sql_str.append(tr("PRIMARY KEY (`")); |
sql_str.append(SqlTable::tablePrimaryKey); |
sql_str.append(tr("`) ) ")); |
} |
else sql_str.append(tr(" ) ")); |
if (SqlTable::tableEngine != tr("")) { |
sql_str.append(tr("ENGINE=")); |
sql_str.append(SqlTable::tableEngine); |
sql_str.append(tr(" ")); |
} |
if (SqlTable::tableCharacterSet != tr("")){ |
sql_str.append(tr("DEFAULT CHARSET=")); |
sql_str.append(SqlTable::tableCharacterSet); |
|
} |
SqlTable::SqlString = sql_str; |
return true; |
|
} |
|
/*************************************************************************************** |
** ôóíêöèÿ âîçâðàùàåò ñòðîêó Sql-çàïðîñà, êîòîðàÿ ñîçäàåò â áàçå äàííûõ ñîîòâåòñòâóþùóþ òàáëèöó |
** |
** |
***************************************************************************************/ |
|
|
QString SqlTable::sqlString(){ |
return SqlTable::SqlString; |
|
} |
|
|
void SqlTable::append(TableField* newfield){ // äîáàâëÿåò â êîíåö ñïèñêà (óêàçàòåëåé) ïîëåé òàáëèöû íîàîå ïîëå, ïåðåäàâàåìîå ÷åðåç ïàðàìåòð newfield (óêàçàòåëü) |
SqlTable::tableFields.append(newfield); |
SqlTable::createSqlString(); |
} |