00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037 #include <stdio.h>
00038
00039 #include "ksm/ksm.h"
00040 #include "ksm/database_statement.h"
00041 #include "ksm/string_util.h"
00042 #include "ksm/string_util2.h"
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063 char* DqsInit(const char* table)
00064 {
00065 char* query;
00066
00067 query = StrStrdup("SELECT * FROM ");
00068 StrAppend(&query, table);
00069
00070 return query;
00071 }
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092 char* DqsCountInit(const char* table)
00093 {
00094 char* query;
00095
00096 query = StrStrdup("SELECT COUNT(*) FROM ");
00097 StrAppend(&query, table);
00098
00099 return query;
00100 }
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112
00113
00114
00115
00116
00117
00118
00119 char* DqsSpecifyInit(const char* table, const char* fields)
00120 {
00121 char* query;
00122 char* query1;
00123
00124 query = StrStrdup("SELECT ");
00125 StrAppend(&query, fields);
00126 query1 = StrStrdup(" FROM ");
00127 StrAppend(&query, query1);
00128 StrAppend(&query, table);
00129 StrFree(query1);
00130 return query;
00131 }
00132
00133
00134
00135
00136
00137
00138
00139
00140
00141
00142
00143
00144
00145
00146
00147
00148
00149 static void DqsAppendComparison(char** query, DQS_COMPARISON compare)
00150 {
00151 switch (compare) {
00152 case DQS_COMPARE_LT:
00153 StrAppend(query, " < ");
00154 break;
00155
00156 case DQS_COMPARE_LE:
00157 StrAppend(query, " <= ");
00158 break;
00159
00160 case DQS_COMPARE_EQ:
00161 StrAppend(query, " = ");
00162 break;
00163
00164 case DQS_COMPARE_NE:
00165 StrAppend(query, " != ");
00166 break;
00167
00168 case DQS_COMPARE_GE:
00169 StrAppend(query, " >= ");
00170 break;
00171
00172 case DQS_COMPARE_GT:
00173 StrAppend(query, " > ");
00174 break;
00175
00176 case DQS_COMPARE_IN:
00177 StrAppend(query, " IN ");
00178 break;
00179
00180 case DQS_COMPARE_NOT_IN:
00181 StrAppend(query, " NOT IN ");
00182 break;
00183
00184 case DQS_COMPARE_IS:
00185 StrAppend(query, " IS ");
00186 break;
00187
00188 default:
00189 StrAppend(query, " ?? ");
00190 }
00191
00192 return;
00193 }
00194
00195
00196
00197
00198
00199
00200
00201
00202
00203
00204
00205
00206
00207
00208
00209
00210
00211
00212
00213
00214
00215
00216
00217
00218
00219
00220
00221
00222
00223
00224
00225
00226 void DqsConditionInt(char** query, const char* field, DQS_COMPARISON compare,
00227 int value, int index)
00228 {
00229 char stringval[KSM_INT_STR_SIZE];
00230
00231 StrAppend(query, (index == 0) ? " WHERE " : " AND ");
00232 StrAppend(query, field);
00233 DqsAppendComparison(query, compare);
00234 snprintf(stringval, KSM_INT_STR_SIZE, "%d", value);
00235 StrAppend(query, stringval);
00236
00237 return;
00238 }
00239
00240 void DqsConditionString(char** query, const char* field, DQS_COMPARISON compare,
00241 const char* value, int index)
00242 {
00243 StrAppend(query, (index == 0) ? " WHERE " : " AND ");
00244 StrAppend(query, field);
00245 DqsAppendComparison(query, compare);
00246 StrAppend(query, "\"");
00247 StrAppend(query, value);
00248 StrAppend(query, "\"");
00249
00250 return;
00251 }
00252
00253 void DqsConditionKeyword(char** query, const char* field,
00254 DQS_COMPARISON compare, const char* value, int index)
00255 {
00256 StrAppend(query, (index == 0) ? " WHERE " : " AND ");
00257 StrAppend(query, field);
00258 DqsAppendComparison(query, compare);
00259 StrAppend(query, value);
00260
00261 return;
00262 }
00263
00264
00265
00266
00267
00268
00269
00270
00271
00272
00273
00274
00275
00276
00277
00278
00279 void DqsOrderBy(char** query, const char* field)
00280 {
00281 StrAppend(query, " ORDER BY ");
00282 StrAppend(query, field);
00283
00284 return;
00285 }
00286
00287
00288
00289
00290
00291
00292
00293
00294
00295
00296
00297
00298
00299
00300
00301 void DqsEnd(char** query)
00302 {
00303
00304 (void)query;
00305 return;
00306 }
00307
00308
00309
00310
00311
00312
00313
00314
00315
00316
00317
00318
00319
00320
00321
00322 void DqsFree(char* query)
00323 {
00324 if (query) {
00325 StrFree(query);
00326 }
00327
00328 return;
00329 }