/trunk/ClassEditor/classeditor.ui |
---|
40,6 → 40,42 |
<string>TextLabel</string> |
</property> |
</widget> |
<widget class="QLabel" name="label_3"> |
<property name="geometry"> |
<rect> |
<x>10</x> |
<y>110</y> |
<width>581</width> |
<height>21</height> |
</rect> |
</property> |
<property name="text"> |
<string>TextLabel</string> |
</property> |
</widget> |
<widget class="QLabel" name="label_4"> |
<property name="geometry"> |
<rect> |
<x>10</x> |
<y>130</y> |
<width>581</width> |
<height>21</height> |
</rect> |
</property> |
<property name="text"> |
<string>TextLabel</string> |
</property> |
</widget> |
<widget class="QLineEdit" name="lineEdit"> |
<property name="geometry"> |
<rect> |
<x>10</x> |
<y>160</y> |
<width>581</width> |
<height>31</height> |
</rect> |
</property> |
</widget> |
</widget> |
<widget class="QMenuBar" name="menuBar"> |
<property name="geometry"> |
/trunk/ClassEditor/sqltable.cpp |
---|
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(); |
} |
/trunk/ClassEditor/tablefield.cpp |
---|
21,6 → 21,7 |
defaultValue = fdefaultValue; |
notNull = false; // ïî óìîë÷àíèþ äàííûå â ïîëå ìîãóò îòñóòñòâîâàòü (áûòü NULL) |
characterSet = ""; // êîäèðîâêà ïî óìîë÷àíèþ (íå óêàçûâàòü êîäèðîâêó) |
autoIncrement = false; // ñäåëàåì íàøå ïîëå àâòîèíêåìåíòíûì |
createSqlString(); // ñôîðìèðóåì ñòðîêó Sql-çàïðîñà, êîòîðàÿ ñîçäàåò â áàçå äàííûõ ñîîòâåòñòâóþùåå ïîëå |
} |
81,9 → 82,9 |
void TableField::createSqlString(){ |
QString str_tmp = ""; |
str_tmp.append(tr("'")); |
str_tmp.append(tr("`")); |
str_tmp.append(fieldName); |
str_tmp.append(tr("' ")); |
str_tmp.append(tr("` ")); |
str_tmp.append(fieldType); |
//str_tmp.append(tr(" ")); |
if (characterSet !="") { |
96,6 → 97,10 |
str_tmp.append(defaultValue); |
str_tmp.append(tr("'"));} |
if (TableField::autoIncrement) { |
str_tmp.append(tr(" ")); |
str_tmp.append(tr("AUTO_INCREMENT")); |
} |
TableField::SqlString = str_tmp; |
} |
110,3 → 115,14 |
TableField::createSqlString(); |
} |
void TableField::setAutoIncrement(bool autoInc){ |
TableField::autoIncrement = autoInc; |
TableField::createSqlString(); |
} |
bool TableField::isAutoIncrement(){ |
return TableField::autoIncrement; |
} |
/trunk/ClassEditor/classeditor.cpp |
---|
15,10 → 15,23 |
table = new SqlTable (tr("NewTable"), this); |
table->setName(tr("NewTable")); |
table->fields().at(0)->setNotNull(true); |
if (!(table->setPrimaryKey(tr("ID")))) { |
ui->label_3->setText(table->lastError()); |
} |
else ui->label_3->setText(table->primaryKey()); |
table->append(field); |
field = new TableField(tr("Êîìïüþòåðû"), this); |
field->setNotNull(true); |
field->setDefaultValue(tr("êîìïüþòåð")); |
table->append(field); |
ui->label_2->setText(table->name()); |
ui->label->setText(table->fields().at(0)->sqlString()); |
ui->label_4->setText(table->sqlString()); |
ui->lineEdit->insert(table->sqlString()); |
} |
ClassEditor::~ClassEditor() |
/trunk/ClassEditor/sqltable.h |
---|
16,17 → 16,26 |
void setName(QString tname); // ôóíêöèÿ ïðèñâàèâàåò èìÿ òàáëèöå, èìå ïåðåäàåòñÿ â ïàðàìåòðå ôóíêöèè tname |
QString name(); // ôóíêöèÿ áåç ïàðàìåòðîâ âîçâðàùàåò èìÿ òàáëèöû |
QList<TableField*> fields(); // âîçâðàùàåò ñïèñîê óêàçàòåëåé íà ïîëÿ òàáëèöû |
bool setPrimaryKey(QString fieldName); // ôóíêöèÿ óñòàíàâëèâàåò ïåðâè÷íûì êëþ÷îì ïîëå, èìåíÿ êîòîðîãî ñîâïàäàåò ñ ïåðåäàâàåìûì ïàðàìåòðîì fieldName |
QString lastError(); // ôóíêöèÿ âîçâðàùàåèò ïîÿñíèòåëüíûé òåêñò ïîñëåäíåé îøèáêè, êîòîðàÿ âîçíèêëà ïðè âûçîâå ìåòîäîâ êëàññà |
QString primaryKey(); // ôóíêöèÿ âîçâðàùàåò èìÿ ïîëÿ, êîòîðîå ÿâëÿåòñÿ ïåðâè÷íûì êëþ÷îì |
QString sqlString(); // ôóíêöèÿ ãåíåðèðóåò ñòðîêó Sql-çàïðîñà, êîòîðàÿ ñîçäàåò â áàçå äàííûõ ñîîòâåòñòâóþùóþ òàáëèöó |
void append(TableField* newfield); // äîáàâëÿåò â êîíåö ñïèñêà (óêàçàòåëåé) ïîëåé òàáëèöû íîàîå ïîëå, ïåðåäàâàåìîå ÷åðåç ïàðàìåòð newfield (óêàçàòåëü) |
private: |
QString tableName; // èìÿ òàáëèöû |
QString SqlString; // ñòðîêà Sql-çàïðîñà äëÿ ñîçäàíèÿ òàáëèöû â áàçå äàííûõ |
QString characterSet; // ïåðåìåííàÿ ñîäåðæèò êîäèðîâêó, â êîòîðîé õðàíÿòüñÿ òåêñòîâûå äàííûå |
QString primaryKey; // èìÿ ïîëÿ, ÿâëÿþùåãîñÿ ïåðâè÷íûì êëþ÷îì òàáëèöû |
int primaryKeyIndex; // ïîðÿäêîâûé íîìåð ïîëÿ (â ñïèñêå ïîëåé fields), êîòîðîå ÿâëÿåòñÿ ïåðâè÷íûì êëþ÷îì òàáëèöû |
QString tableCharacterSet; // ïåðåìåííàÿ ñîäåðæèò êîäèðîâêó, â êîòîðîé õðàíÿòüñÿ òåêñòîâûå äàííûå |
QString tablePrimaryKey; // èìÿ ïîëÿ, ÿâëÿþùåãîñÿ ïåðâè÷íûì êëþ÷îì òàáëèöû |
QString tableEngine; // äâèæåê òàáëèöû |
int tablePrimaryKeyIndex; // ïîðÿäêîâûé íîìåð ïîëÿ (â ñïèñêå ïîëåé fields), êîòîðîå ÿâëÿåòñÿ ïåðâè÷íûì êëþ÷îì òàáëèöû |
QList<TableField*> tableFields; // â ýòîì ñïèñêå íàõîäòñÿ âñå ïîëÿ òàáëèöû |
TableField *field_tmp; |
QString tableLastError; // ñòðîêà ñîäåðæèò ïîÿñíèòåëüíûé òåêñò ïîñëåäíåé îøèáêè, êîòîðàÿ âîçíèêëà ïðè âûçîâå ìåòîäîâ êëàññà |
bool createSqlString(); // ôóíêöèÿ ãåíåðèðóåò ñòðîêó Sql-çàïðîñà, êîòîðàÿ ñîçäàåò â áàçå äàííûõ ñîîòâåòñòâóþùe òàáëèöó |
protected: |
}; |
/trunk/ClassEditor/tablefield.h |
---|
40,6 → 40,7 |
QString defaultValue; // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ |
QString characterSet; // ïåðåìåííàÿ ñîäåðæèò êîäèðîâêó, â êîòîðîé õðàíÿòüñÿ òåêñòîâûå äàííûå |
bool notNull; // ôëàã, óêàçûâàþùèé, ÷òî õðàíèìîå â ïîëå çíà÷åíèå íå ìîæåò áûòü ïóñòûì (NULL) |
bool autoIncrement; // ôëàã, óêàçûâàþùèé, ÷òî ïîëå ÿâëÿåòñÿ àâòîèíêåìåíòíûì |
QString SqlString; // ñêòîêà Sql-çàïðîñà äëÿ ñîçäàíèÿ ïîëÿ â áàçå äàííûõ |
void createSqlString(); // ôóíêöèÿ ãåíåðèðóåò ñòðîêó Sql-çàïðîñà, êîòîðàÿ ñîçäàåò â áàçå äàííûõ ñîîòâåòñòâóþùåå ïîëå |
protected: |
47,6 → 48,9 |
public: |
void setName(QString name); |
void setType(QString ftype); |
void setAutoIncrement(bool autoInc); // óñòàíàâëèâàåì ôëàã, óêàçûâàþùèé, ÷òî ïîëå ÿâëÿåòñÿ àâòîèíêåìåíòíûì |
bool isAutoIncrement(); // óñòàíàâëèâàåì ôëàã, óêàçûâàþùèé, ÿâëÿåòñÿ ëè ïîëå àâòîèíêåìåíòíûì |
QString name(); |
QString type(); |
bool isNotNull(); |