00001
00041 #if !defined(O3DBI_O3DBISTATEMENT_H)
00042 #define O3DBI_O3DBISTATEMENT_H
00043
00044 #include "O3DBIObject.h"
00045 #include "O3DBIDatabase.h"
00046 #include "O3DBIRecordSet.h"
00047
00052 class O3DBIStatement : public O3DBIObject
00053 {
00054
00055 public:
00059 O3DBIStatement();
00065 O3DBIStatement(PC_TCHAR pchStmnt);
00070 O3DBIStatement(const O3DBIStatement& other);
00074 virtual ~O3DBIStatement();
00075
00076
00077 public:
00082 O3DBIStatement& operator=(const O3DBIStatement& other);
00089 O3DBIStatement& operator=(PC_TCHAR pchStmnt);
00096 bool operator==(const O3DBIStatement& other) const;
00103 void SetStatement(PC_TCHAR pchStmnt);
00108 PC_TCHAR GetStatement(void) const;
00109
00117 void SetBindVariable(PC_TCHAR pchPlaceholderName, int iValue);
00126 void SetBindVariable(PC_TCHAR pchPlaceholderName, unsigned int uValue);
00135 void SetBindVariable(PC_TCHAR pchPlaceholderName, long lValue);
00144 void SetBindVariable(PC_TCHAR pchPlaceholderName, unsigned long ulValue);
00154 void SetBindVariable(PC_TCHAR pchPlaceholderName, float fValue);
00165 void SetBindVariable(PC_TCHAR pchPlaceholderName, double dValue);
00175 void SetBindVariable(PC_TCHAR pchPlaceholderName, const TO3DBIString& strValue);
00184 void SetBindVariable(PC_TCHAR pchPlaceholderName, PC_TCHAR pchValue);
00194 void SetBindVariable(PC_TCHAR pchPlaceholderName, const O3DBIDate& dtValue);
00204 void SetBindVariable(PC_TCHAR pchPlaceholderName, const O3DBITimestamp& tsValue);
00214 void SetBindVariable(PC_TCHAR pchPlaceholderName, const O3DBIClob& value);
00224 void SetBindVariable(PC_TCHAR pchPlaceholderName, const O3DBIBlob& value);
00234 void SetBindVariable(PC_TCHAR pchPlaceholderName, const O3DBIBfile& value);
00244 void SetBindVariable(PC_TCHAR pchPlaceholderName, const O3DBIXml& value);
00245
00252 void SetBindVariable(TO3DBIBinderPos position, int iValue);
00260 void SetBindVariable(TO3DBIBinderPos position, unsigned int uValue);
00268 void SetBindVariable(TO3DBIBinderPos position, long lValue);
00276 void SetBindVariable(TO3DBIBinderPos position, unsigned long ulValue);
00285 void SetBindVariable(TO3DBIBinderPos position, float fValue);
00295 void SetBindVariable(TO3DBIBinderPos position, double dValue);
00304 void SetBindVariable(TO3DBIBinderPos position, const TO3DBIString& strValue);
00312 void SetBindVariable(TO3DBIBinderPos position, PC_TCHAR pchValue);
00321 void SetBindVariable(TO3DBIBinderPos position, const O3DBIDate& dtValue);
00330 void SetBindVariable(TO3DBIBinderPos position, const O3DBITimestamp& tsValue);
00339 void SetBindVariable(TO3DBIBinderPos position, const O3DBIClob& value);
00348 void SetBindVariable(TO3DBIBinderPos position, const O3DBIBlob& value);
00357 void SetBindVariable(TO3DBIBinderPos position, const O3DBIBfile& value);
00366 void SetBindVariable(TO3DBIBinderPos position, const O3DBIXml& value);
00377 void DefineResultType(TO3DBIColumnPos position, const O3DBIDataField& field);
00378
00385 TO3DBIResult Execute(O3DBIDatabase& db, O3DBIRecordSet& recordset);
00396 TO3DBIResult ExecuteAsync(O3DBIDatabase& db, O3DBIRecordSet& recordset);
00403 bool IsStillExecuting(void);
00408 bool Terminate(void);
00409 virtual TO3DBIString ToString(void) const;
00410
00411
00412 protected:
00413 bool AllocateAndSetStmnt(PC_TCHAR pchStmnt);
00414 void AllocateStmntHandle(void);
00415 void PrepareStatement(void);
00416 void BindInputParams(void);
00417 void DefineOutputParams(void);
00418 void PreBindCheck(PC_TCHAR pchPlaceholderName) const;
00419
00420 protected:
00421 P_TCHAR _pchStmnt;
00422 TOCIStatementHandle _hStmnt;
00423 };
00424
00425 #endif // !defined(O3DBI_O3DBISTATEMENT_H)