00001 00002 /* Description: State Transition Functions. 00003 States which are maintained by DriverManager is 00004 not used. Implementation of DriverManager would use them. 00005 00006 */ 00007 00008 #include "odbcCommon.h" 00009 00010 // Related to Environment Handle 00011 //------------------------------ 00012 SQLRETURN CSqlOdbcEnv::chkStateForSQLFreeHandle( void ) 00013 { 00014 switch( state_ ) 00015 { 00016 case E0: 00017 case E1: break; 00018 case E2: err_.set( ERROR_FUNCSEQ ); 00019 return( SQL_ERROR ); 00020 } 00021 return( SQL_SUCCESS ); 00022 } 00023 SQLRETURN CSqlOdbcEnv::chkStateForSQLSetEnvAttr( void ) 00024 { 00025 switch( state_ ) 00026 { 00027 case E0: 00028 case E1: break; 00029 case E2: err_.set( ERROR_ATTR_CANNOT_SET ); 00030 return( SQL_ERROR ); 00031 } 00032 return( SQL_SUCCESS ); 00033 } 00034 00035 // Related to Connection Handle 00036 //------------------------------ 00037 SQLRETURN CSqlOdbcDbc::chkStateForSQLFreeHandle( void ) 00038 { 00039 switch( state_ ) 00040 { 00041 case C0: 00042 case C1: 00043 case C2: break; 00044 case C3: 00045 case C4: 00046 case C5: 00047 case C6: err_.set( ERROR_FUNCSEQ ); 00048 return( SQL_ERROR ); 00049 } 00050 return( SQL_SUCCESS ); 00051 } 00052 SQLRETURN CSqlOdbcDbc::chkStateForSQLConnect( void ) 00053 { 00054 switch( state_ ) 00055 { 00056 case C0: 00057 case C1: 00058 case C2: break; 00059 case C3: 00060 case C4: 00061 case C5: 00062 case C6: err_.set( ERROR_CONNINUSE ); 00063 return( SQL_ERROR ); 00064 } 00065 return( SQL_SUCCESS ); 00066 } 00067 SQLRETURN CSqlOdbcDbc::chkStateForSQLDisconnect( void ) 00068 { 00069 switch( state_ ) 00070 { 00071 case C0: 00072 case C1: 00073 case C2: err_.set( ERROR_CONNOTOPEN ); 00074 return( SQL_ERROR ); 00075 case C3: 00076 case C4: 00077 case C5: break; 00078 case C6: err_.set( ERROR_INVTRANSTATE ); 00079 return( SQL_ERROR ); 00080 } 00081 return( SQL_SUCCESS ); 00082 } 00083 SQLRETURN CSqlOdbcDbc::chkStateForSQLEndTran( void ) 00084 { 00085 switch( state_ ) 00086 { 00087 case C0: 00088 case C1: 00089 case C2: 00090 case C3: err_.set( ERROR_NOTOPENED ); 00091 return( SQL_ERROR ); 00092 case C4: 00093 case C5: 00094 case C6: break; 00095 } 00096 return( SQL_SUCCESS ); 00097 } 00098 SQLRETURN CSqlOdbcDbc::chkStateForSQLSetConnectAttr( void ) 00099 { 00100 switch( state_ ) 00101 { 00102 case C0: 00103 case C1: 00104 case C2: 00105 case C3: 00106 case C4: 00107 case C5: break; 00108 case C6: err_.set( ERROR_FUNCSEQ ); 00109 return( SQL_ERROR ); 00110 } 00111 return( SQL_SUCCESS ); 00112 } 00113 00114 // Related to Statement Handle 00115 //------------------------------ 00116 SQLRETURN CSqlOdbcStmt::chkStateForSQLFreeHandle( void ) 00117 { 00118 switch( state_ ) 00119 { 00120 case S0: 00121 case S1: 00122 case S2: 00123 case S3: 00124 case S4: 00125 case S5: 00126 case S6: 00127 case S7: break; 00128 case S8: 00129 case S9: 00130 case S10: 00131 case S11: 00132 case S12: err_.set( ERROR_FUNCSEQ ); 00133 return( SQL_ERROR ); 00134 } 00135 return( SQL_SUCCESS ); 00136 } 00137 SQLRETURN CSqlOdbcStmt::chkStateForSQLFreeStmt( void ) 00138 { 00139 switch( state_ ) 00140 { 00141 case S0: 00142 case S1: 00143 case S2: 00144 case S3: 00145 case S4: 00146 case S5: 00147 case S6: 00148 case S7: break; 00149 case S8: 00150 case S9: 00151 case S10: 00152 case S11: 00153 case S12: err_.set( ERROR_FUNCSEQ ); 00154 return( SQL_ERROR ); 00155 } 00156 return( SQL_SUCCESS ); 00157 } 00158 SQLRETURN CSqlOdbcStmt::chkStateForSQLBindCol( void ) 00159 { 00160 switch( state_ ) 00161 { 00162 case S0: 00163 case S1: 00164 case S2: 00165 case S3: 00166 case S4: 00167 case S5: 00168 case S6: 00169 case S7: break; 00170 case S8: 00171 case S9: 00172 case S10: 00173 case S11: 00174 case S12: err_.set( ERROR_FUNCSEQ ); 00175 return( SQL_ERROR ); 00176 } 00177 return( SQL_SUCCESS ); 00178 } 00179 SQLRETURN CSqlOdbcStmt::chkStateForSQLBindParameter( void ) 00180 { 00181 switch( state_ ) 00182 { 00183 case S0: 00184 case S1: 00185 case S2: 00186 case S3: 00187 case S4: 00188 case S5: 00189 case S6: 00190 case S7: break; 00191 case S8: 00192 case S9: 00193 case S10: 00194 case S11: 00195 case S12: err_.set( ERROR_FUNCSEQ ); 00196 return( SQL_ERROR ); 00197 } 00198 return( SQL_SUCCESS ); 00199 } 00200 SQLRETURN CSqlOdbcStmt::chkStateForSQLPrepare( void ) 00201 { 00202 switch( state_ ) 00203 { 00204 case S0: 00205 case S1: 00206 case S2: 00207 case S3: 00208 case S4: break; 00209 00210 case S5: 00211 case S6: 00212 case S7: err_.set( ERROR_INVCURSTATE ); 00213 return( SQL_ERROR ); 00214 case S8: 00215 case S9: 00216 case S10: 00217 case S11: 00218 case S12: err_.set( ERROR_FUNCSEQ ); 00219 return( SQL_ERROR ); 00220 } 00221 return( SQL_SUCCESS ); 00222 } 00223 SQLRETURN CSqlOdbcStmt::chkStateForSQLExecute( void ) 00224 { 00225 switch( state_ ) 00226 { 00227 case S2: 00228 case S3: 00229 case S4: break; 00230 00231 case S5: 00232 case S6: 00233 case S7: err_.set( ERROR_INVCURSTATE ); 00234 return( SQL_ERROR ); 00235 00236 case S0: 00237 case S1: 00238 case S8: 00239 case S9: 00240 case S10: 00241 case S11: 00242 case S12: err_.set( ERROR_FUNCSEQ ); 00243 return( SQL_ERROR ); 00244 } 00245 return( SQL_SUCCESS ); 00246 } 00247 SQLRETURN CSqlOdbcStmt::chkStateForSQLExecDirect( void ) 00248 { 00249 switch( state_ ) 00250 { 00251 case S0: 00252 case S1: 00253 case S2: 00254 case S3: 00255 case S4: break; 00256 00257 case S5: 00258 case S6: 00259 case S7: err_.set( ERROR_INVCURSTATE ); 00260 return( SQL_ERROR ); 00261 00262 case S8: 00263 case S9: 00264 case S10: 00265 case S11: 00266 case S12: err_.set( ERROR_FUNCSEQ ); 00267 return( SQL_ERROR ); 00268 } 00269 return( SQL_SUCCESS ); 00270 } 00271 SQLRETURN CSqlOdbcStmt::chkStateForSQLFetch( void ) 00272 { 00273 switch( state_ ) 00274 { 00275 case S0: 00276 case S1: 00277 case S2: 00278 case S3: err_.set( ERROR_NOT_PREPAREDSTMT ); 00279 return( SQL_ERROR ); 00280 case S4: err_.set( ERROR_INVCURSTATE ); 00281 return( SQL_ERROR ); 00282 case S5: 00283 case S6: 00284 case S7: break; 00285 00286 case S8: 00287 case S9: 00288 case S10: 00289 case S11: 00290 case S12: err_.set( ERROR_FUNCSEQ ); 00291 return( SQL_ERROR ); 00292 } 00293 return( SQL_SUCCESS ); 00294 } 00295 SQLRETURN CSqlOdbcStmt::chkStateForSQLCloseCursor( void ) 00296 { 00297 switch( state_ ) 00298 { 00299 case S0: 00300 case S1: 00301 case S2: 00302 case S3: 00303 case S4: err_.set( ERROR_INVCURSTATE ); 00304 return( SQL_ERROR ); 00305 case S5: 00306 case S6: 00307 case S7: break; 00308 case S8: 00309 case S9: 00310 case S10: 00311 case S11: 00312 case S12: err_.set( ERROR_FUNCSEQ ); 00313 return( SQL_ERROR ); 00314 } 00315 return( SQL_SUCCESS ); 00316 } 00317 SQLRETURN CSqlOdbcStmt::chkStateForSQLGetCursorName( void ) 00318 { 00319 switch( state_ ) 00320 { 00321 case S0: 00322 case S1: 00323 case S2: 00324 case S3: 00325 case S4: 00326 case S5: 00327 case S6: 00328 case S7: break; 00329 00330 case S8: 00331 case S9: 00332 case S10: 00333 case S11: 00334 case S12: err_.set( ERROR_FUNCSEQ ); 00335 return( SQL_ERROR ); 00336 } 00337 return( SQL_SUCCESS ); 00338 } 00339 SQLRETURN CSqlOdbcStmt::chkStateForSQLSetCursorName( void ) 00340 { 00341 switch( state_ ) 00342 { 00343 case S0: 00344 case S1: 00345 case S2: 00346 case S3: break; 00347 00348 case S4: 00349 case S5: 00350 case S6: 00351 case S7: 00352 case S8: err_.set( ERROR_INVCURSTATE ); 00353 return( SQL_ERROR ); 00354 case S9: 00355 case S10: 00356 case S11: 00357 case S12: err_.set( ERROR_FUNCSEQ ); 00358 return( SQL_ERROR ); 00359 } 00360 return( SQL_SUCCESS ); 00361 } 00362 SQLRETURN CSqlOdbcStmt::chkStateForSQLNumResultCols( void ) 00363 { 00364 switch( state_ ) 00365 { 00366 case S2: 00367 case S3: 00368 case S4: 00369 case S5: 00370 case S6: 00371 case S7: break; 00372 00373 case S0: 00374 case S1: 00375 00376 case S8: 00377 case S9: 00378 case S10: 00379 case S11: 00380 case S12: err_.set( ERROR_FUNCSEQ ); 00381 return( SQL_ERROR ); 00382 } 00383 return( SQL_SUCCESS ); 00384 } 00385 SQLRETURN CSqlOdbcStmt::chkStateForSQLRowCount( void ) 00386 { 00387 switch( state_ ) 00388 { 00389 case S4: 00390 case S5: 00391 case S6: break; 00392 00393 case S0: 00394 case S1: 00395 case S2: 00396 case S3: 00397 00398 case S7: 00399 case S8: 00400 case S9: 00401 case S10: 00402 case S11: 00403 case S12: err_.set( ERROR_FUNCSEQ ); 00404 return( SQL_ERROR ); 00405 } 00406 return( SQL_SUCCESS ); 00407 } 00408 SQLRETURN CSqlOdbcStmt::chkStateForSQLDescribeCol( void ) 00409 { 00410 switch( state_ ) 00411 { 00412 case S4: err_.set( ERROR_INVCURSTATE ); 00413 return( SQL_ERROR ); 00414 00415 case S3: 00416 case S5: 00417 case S6: 00418 case S7: break; 00419 00420 case S0: 00421 case S1: 00422 case S2: 00423 00424 case S8: 00425 case S9: 00426 case S10: 00427 case S11: 00428 case S12: err_.set( ERROR_FUNCSEQ ); 00429 return( SQL_ERROR ); 00430 } 00431 return( SQL_SUCCESS ); 00432 } 00433 SQLRETURN CSqlOdbcStmt::chkStateForSQLNumParams(void ) 00434 { 00435 switch( state_ ) 00436 { 00437 00438 case S0: err_.set(ERROR_INVCURSTATE ); 00439 return( SQL_ERROR ); 00440 case S2: 00441 case S3: 00442 case S4: 00443 case S5: 00444 case S6: 00445 case S7: break; 00446 case S1: 00447 case S8: 00448 case S9: 00449 case S10: 00450 case S11: 00451 case S12: err_.set( ERROR_FUNCSEQ ); 00452 return( SQL_ERROR ); 00453 } 00454 return( SQL_SUCCESS ); 00455 } 00456 00457 SQLRETURN CSqlOdbcStmt::chkStateForSQLDescribeParam(void) 00458 { 00459 switch( state_ ) 00460 { 00461 case S2: 00462 case S3:break; 00463 case S0: 00464 case S1: 00465 case S5: 00466 case S6: 00467 case S7: 00468 case S8: 00469 case S9: 00470 case S10: 00471 case S11: 00472 case S12: err_.set( ERROR_FUNCSEQ ); 00473 return( SQL_ERROR ); 00474 } 00475 return( SQL_SUCCESS ); 00476 }