Хранилища Subversion OpenInventory

Редакция

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