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