Хранилища Subversion OpenInventory

Редакция

Редакция 38 | К новейшей редакции | Содержимое файла | Сравнить с предыдущей | Последнее изменение | Открыть журнал | RSS

Редакция Автор № строки Строка
33 pingvin 1
#include "sqltable.h"
2
 
38 pingvin 3
SqlTable::SqlTable(QString tname, QObject *parent) :
37 pingvin 4
   QObject(parent)
33 pingvin 5
{
38 pingvin 6
 
37 pingvin 7
    tableName = tname;
38 pingvin 8
    field_tmp = new TableField("ID", this); //      "ID" ()
9
    field_tmp->setType(tr("INT(10)"));
39 pingvin 10
    field_tmp->setAutoIncrement(true);
38 pingvin 11
    tableFields.append(field_tmp); //    ()   () 
39 pingvin 12
    tablePrimaryKey = field_tmp->name(); //      
13
    tablePrimaryKeyIndex = 0;
14
    tableEngine = tr("MyISAM");
15
    tableCharacterSet = tr("cp1251");
37 pingvin 16
    //delete field_tmp;
33 pingvin 17
}
37 pingvin 18
 
38 pingvin 19
/***************************************************************************************
20
**    ,       tname
21
**
22
**
23
***************************************************************************************/
37 pingvin 24
 
38 pingvin 25
 
37 pingvin 26
void SqlTable::setName(QString tname){
27
    SqlTable::tableName = tname;
39 pingvin 28
    SqlTable::createSqlString();
37 pingvin 29
}
30
 
38 pingvin 31
/***************************************************************************************
32
**    
33
**
34
**
35
***************************************************************************************/
36
 
37
 
38
QString SqlTable::name(){
39
 
40
    return SqlTable::tableName;
41
}
42
 
43
 
44
/***************************************************************************************
45
**       
46
**
47
**
48
***************************************************************************************/
49
 
50
QList<TableField*> SqlTable::fields(){
51
 
52
    return SqlTable::tableFields;
53
}
39 pingvin 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
}