Хранилища Subversion OpenInventory

Редакция

Редакция 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
}