00001
00002
00003
00004
00005 #ifndef _ODBC_STMT_H_
00006 #define _ODBC_STMT_H_
00007
00008
00009 typedef enum
00010 {
00011 S0,
00012 S1,
00013 S2,
00014 S3,
00015 S4,
00016 S5,
00017 S6,
00018 S7,
00019 S8,
00020 S9,
00021 S10,
00022 S11,
00023 S12
00024 } StmtState_t ;
00025
00026 class CSqlOdbcStmt
00027 {
00028 CSqlOdbcStmt( void );
00029
00030 public:
00031
00032 int handleType_;
00033 CSqlOdbcError err_;
00034
00035 CSqlOdbcDbc *parentDbc_;
00036 StmtState_t state_;
00037 SQLCHAR cursorName_[ SQL_MAX_CURSOR_NAME_LEN ];
00038 int rowsAffected_;
00039 bool isPrepared_;
00040
00041 SQLUINTEGER fetchMode_;
00042
00043
00044 bool isParamBound_;
00045 CSqlOdbcDescList ard_;
00046
00047
00048 CSqlOdbcDescList ird_;
00049
00050
00051 CSqlOdbcDescList apd_;
00052
00053
00054 CSqlOdbcDescList ipd_;
00055
00056
00057 AbsSqlStatement *fsqlStmt_;
00058
00059
00060
00061
00062
00063
00064 SQLRETURN chkStateForSQLFreeHandle( void );
00065 SQLRETURN chkStateForSQLFreeStmt( void );
00066 SQLRETURN chkStateForSQLBindCol( void );
00067 SQLRETURN chkStateForSQLBindParameter( void );
00068
00069 SQLRETURN chkStateForSQLPrepare( void );
00070 SQLRETURN chkStateForSQLExecute( void );
00071 SQLRETURN chkStateForSQLExecDirect( void );
00072 SQLRETURN chkStateForSQLFetch( void );
00073 SQLRETURN chkStateForSQLCloseCursor( void );
00074
00075 SQLRETURN chkStateForSQLNumParams( void );
00076 SQLRETURN chkStateForSQLNumResultCols( void );
00077 SQLRETURN chkStateForSQLRowCount( void );
00078 SQLRETURN chkStateForSQLDescribeCol( void );
00079 SQLRETURN chkStateForSQLDescribeParam(void);
00080
00081 SQLRETURN chkStateForSQLSetCursorName( void );
00082 SQLRETURN chkStateForSQLGetCursorName( void );
00083
00084
00085
00086 static SQLRETURN SQLAllocHandle(
00087 SQLHANDLE inputHandle,
00088 SQLHANDLE *outputHandle );
00089
00090 static SQLRETURN SQLFreeHandle(
00091 SQLHANDLE inputHandle);
00092
00093 SQLRETURN SQLFreeStmt(
00094 SQLUSMALLINT option);
00095
00096 SQLRETURN SQLBindCol(
00097 SQLUSMALLINT columnNumber,
00098 SQLSMALLINT targetType,
00099 SQLPOINTER targetValue,
00100 SQLINTEGER bufferLength,
00101 SQLINTEGER *ind);
00102
00103 SQLRETURN SQLBindParameter(
00104 SQLUSMALLINT parameterNumber,
00105 SQLSMALLINT inputOutputType,
00106 SQLSMALLINT valueType,
00107 SQLSMALLINT parameterType,
00108 SQLUINTEGER lengthPrecision,
00109 SQLSMALLINT parameterScale,
00110 SQLPOINTER parameterValue,
00111 SQLINTEGER bufferLength,
00112 SQLINTEGER *ind);
00113
00114 SQLRETURN SQLPrepare(
00115 SQLCHAR *statementText,
00116 SQLINTEGER textLength);
00117
00118 SQLRETURN SQLExecute( void );
00119
00120 SQLRETURN SQLExecDirect(
00121 SQLCHAR *statementText,
00122 SQLINTEGER textLength);
00123
00124 SQLRETURN SQLSetStmtAttr(
00125 SQLINTEGER Option,
00126 SQLPOINTER Value,
00127 SQLINTEGER stringLength);
00128
00129 SQLRETURN SQLFetch();
00130
00131 SQLRETURN SQLCloseCursor();
00132
00133 SQLRETURN SQLSetCursorName(
00134 SQLCHAR *cursorName,
00135 SQLSMALLINT nameLength);
00136
00137 SQLRETURN SQLGetCursorName(
00138 SQLCHAR *cursorName,
00139 SQLSMALLINT bufferLength,
00140 SQLSMALLINT *nameLength);
00141
00142 SQLRETURN SQLNumResultCols(
00143 SQLSMALLINT *columnCount);
00144
00145 SQLRETURN SQLRowCount(
00146 SQLINTEGER *rowCount);
00147
00148 SQLRETURN SQLDescribeCol(
00149 SQLUSMALLINT columnNumber,
00150 SQLCHAR *columnName,
00151 SQLSMALLINT bufferLength,
00152 SQLSMALLINT *nameLength,
00153 SQLSMALLINT *dataType,
00154 SQLUINTEGER *columnSize,
00155 SQLSMALLINT *decimalDigits,
00156 SQLSMALLINT *nullable);
00157
00158 SQLRETURN SQLColAttribute(
00159 SQLUSMALLINT columnNumber,
00160 SQLUSMALLINT fieldIdentifier,
00161 SQLPOINTER characterAttributePtr,
00162 SQLSMALLINT bufferLength,
00163 SQLSMALLINT *stringLengthPtr,
00164 SQLPOINTER numericAttributePtr);
00165
00166 SQLRETURN SQLNumParams(
00167 SQLSMALLINT * ParameterCountPtr);
00168
00169 SQLRETURN SQLDescribeParam(
00170 SQLUSMALLINT paramNumber,
00171 SQLSMALLINT * dataType,
00172 SQLUINTEGER * paramSize,
00173 SQLSMALLINT * decimalDigits,
00174 SQLSMALLINT * isNullable);
00175
00176
00177 void resetStmt( void );
00178 };
00179
00180 #endif // _ODBC_STMT_H_