00001 #line 1 "C:\\SAPDevelop\\DEV\\develop\\sys\\src\\SAPDB\\Interfaces\\SQLDBC\\SQLDBC.h"
00002
00027 #ifndef SQLDBC_H
00028 #define SQLDBC_H
00029
00036 #ifdef SQLDBC_FEATURE_TRACEOPTION_OFF
00037 #undef SQLDBC_FEATURE_TRACEOPTION
00038 #else
00039 #define SQLDBC_FEATURE_TRACEOPTION
00040 #endif
00041
00047 #ifdef SQLDBC_FEATURE_PROFILE_OFF
00048 #undef SQLDBC_FEATURE_PROFILE
00049 #else
00050 #define SQLDBC_FEATURE_PROFILE
00051 #endif
00052
00059 #ifdef SQLDBC_FEATURE_DECIMAL_OFF
00060 #undef SQLDBC_FEATURE_DECIMAL
00061 #else
00062 #ifndef SQLDBC_FEATURE_DECIMAL
00063 #define SQLDBC_FEATURE_DECIMAL
00064 #endif
00065 #endif
00066
00072 #ifdef SQLDBC_FEATURE_OMS_ASCII_OFF
00073 #undef SQLDBC_FEATURE_OMS_ASCII
00074 #else
00075 #ifndef SQLDBC_FEATURE_OMS_ASCII
00076 #define SQLDBC_FEATURE_OMS_ASCII
00077 #endif
00078 #endif
00079
00085 #ifdef SQLDBC_RESULTSET_ROWWISE_OFF
00086 #undef SQLDBC_FEATURE_RESULTSET_ROWWISE
00087 #else
00088 #define SQLDBC_FEATURE_RESULTSET_ROWWISE
00089 #endif
00090
00097 #ifdef SQLDBC_CONNECTION_FEATURES_OFF
00098 #undef SQLDBC_FEATURE_CONNECTION_FEATURES
00099 #else
00100 #define SQLDBC_FEATURE_CONNECTION_FEATURES
00101 #endif
00102
00103
00104
00105
00106 #ifdef SQLDBC_FEATURE_STATEMENT_GETCONNECTION_OFF
00107 #undef SQLDBC_FEATURE_STATEMENT_GETCONNECTION
00108 #else
00109 #define SQLDBC_FEATURE_STATEMENT_GETCONNECTION
00110 #endif
00111
00116 #ifdef SQLDBC_FEATURE_METADATA_SCHEMATABLE_OFF
00117 #undef SQLDBC_FEATURE_METADATA_SCHEMATABLE
00118 #else
00119 #define SQLDBC_FEATURE_METADATA_SCHEMATABLE
00120 #endif
00121
00126 #ifdef SQLDBC_FEATURE_METADATA_COLUMNLABEL_OFF
00127 #undef SQLDBC_FEATURE_METADATA_COLUMNLABEL
00128 #else
00129 #define SQLDBC_FEATURE_METADATA_COLUMNLABEL
00130 #endif
00131
00135 #ifdef SQLDBC_FEATURE_LOB_KEEPALIVE_OFF
00136 #undef SQLDBC_FEATURE_LOB_KEEPALIVE
00137 #else
00138 #define SQLDBC_FEATURE_LOB_KEEPALIVE
00139 #endif
00140
00141 #include "SQLDBC_Types.h"
00142
00143 #ifdef IFR_NAMESPACE
00144 namespace IFR_NAMESPACE {
00145 #endif
00146 class IFR_Environment;
00147 class IFR_Connection;
00148 class IFR_ConnectProperties;
00149 class IFR_ConnectionItem;
00150 class IFR_ErrorHndl;
00151 class IFR_Statement;
00152 class IFR_PreparedStmt;
00153 class IFR_SQLWarning;
00154 class IFR_ResultSet;
00155 class IFR_RowSet;
00156 class IFR_ParameterMetaData;
00157 class IFR_ResultSetMetaData;
00158 class IFR_LOB;
00159 class IFR_Profile;
00160 #ifdef IFR_NAMESPACE
00161 };
00162 using namespace IFR_NAMESPACE;
00163 #endif
00164 class SAPDBMem_IRawAllocator;
00165
00166
00167
00168
00169
00170
00171 #ifdef __hpux
00172 #ifdef __ia64
00173 #pragma diag_suppress 2815
00174 #endif
00175 #endif
00176
00180 static const char* const SQLDBCHeaderVersion = "SQLDBC.H 7.7.4 BUILD 008-000-000-000";
00181
00182
00183
00184
00185
00186
00187
00188
00189
00190
00191 #ifdef SQLDBC_RUNTIME_IN_NAMESPACE
00192 namespace SQLDBC {
00193 class SQLDBC_IRuntime;
00194 };
00195 #else
00196 class SQLDBC_IRuntime;
00197 #endif
00198
00199 #ifdef WIN32
00200 #ifndef SQLDBC_FOR_KERNEL
00201 #define SQLDBC_DLLEXPORT __declspec(dllexport)
00202 #else
00203 #define SQLDBC_DLLEXPORT
00204 #endif
00205 #else
00206 #define SQLDBC_DLLEXPORT
00207 #endif
00208
00209 namespace SQLDBC {
00210 class SQLDBC_Statement;
00211 class SQLDBC_ConnectProperties;
00212 class SQLDBC_Connection;
00213
00217 class SQLDBC_ErrorHndl
00218 {
00219 public:
00225 SQLDBC_DLLEXPORT
00226 SQLDBC_ErrorHndl();
00227
00231 SQLDBC_DLLEXPORT
00232 const SQLDBC_Int4 getErrorCode() const;
00233
00237 SQLDBC_DLLEXPORT
00238 const char* getSQLState() const;
00239
00244 SQLDBC_DLLEXPORT
00245 const char *getErrorText() const;
00246
00254 SQLDBC_DLLEXPORT
00255 operator SQLDBC_Bool () const;
00256
00257 private:
00258 friend class SQLDBC_ConnectionItem;
00259 friend struct SQLDBC_ConnectionItemStorage;
00260 friend class SQLDBC_Connection;
00261
00267 SQLDBC_ErrorHndl(IFR_ErrorHndl* error);
00268
00273 void setMemoryAllocationFailed();
00274
00275
00279 IFR_ErrorHndl *m_error;
00280 };
00281
00290 class SQLDBC_SQLWarning
00291 {
00292 public:
00297 SQLDBC_DLLEXPORT
00298 SQLDBC_SQLWarning* getNextWarning() const;
00299
00303 SQLDBC_DLLEXPORT
00304 SQLDBC_SQLWarningCode getWarningCode() const;
00305
00306 private:
00307 friend class SQLDBC_ConnectionItem;
00308 friend struct SQLDBC_ConnectionItemStorage;
00314 SQLDBC_SQLWarning(IFR_SQLWarning* warning);
00315 IFR_SQLWarning *m_warning;
00316 };
00317
00318 struct SQLDBC_ConnectionItemStorage;
00319
00330 class SQLDBC_ConnectionItem
00331 {
00332 public:
00333
00343 SQLDBC_DLLEXPORT
00344 SQLDBC_ErrorHndl &error();
00345
00349 SQLDBC_DLLEXPORT
00350 void clearError();
00351
00360 SQLDBC_DLLEXPORT
00361 SQLDBC_SQLWarning* warning();
00362
00366 SQLDBC_DLLEXPORT
00367 void clearWarnings();
00368
00369 private:
00370 friend class SQLDBC_Environment;
00371 friend class SQLDBC_Connection;
00372 friend class SQLDBC_Statement;
00373 friend class SQLDBC_PreparedStatement;
00374 friend class SQLDBC_ResultSet;
00375 friend class SQLDBC_RowSet;
00376 friend class SQLDBC_UpdatableRowSet;
00377 friend struct SQLDBC_StatementStorage;
00378 friend struct SQLDBC_EnvironmentItemStorage;
00379
00380 SQLDBC_ConnectionItem(IFR_ConnectionItem *item, SQLDBC_Bool isCreatedForSQLDBC_Connection, SQLDBC_Connection* self);
00381
00382 ~SQLDBC_ConnectionItem();
00383
00384 SQLDBC_ConnectionItemStorage *m_citem;
00385 };
00386
00390 class SQLDBC_LOB
00391 {
00392 public:
00404 SQLDBC_DLLEXPORT SQLDBC_Retcode putData(void *paramAddr, SQLDBC_Length *paramLengthIndicator);
00405
00409 SQLDBC_DLLEXPORT SQLDBC_Retcode close();
00410
00411
00448 SQLDBC_DLLEXPORT SQLDBC_Retcode getData(void *paramAddr,
00449 SQLDBC_Length *LengthIndicator,
00450 const SQLDBC_Length Size,
00451 const SQLDBC_Bool Terminate=SQLDBC_TRUE);
00452
00492
00493 SQLDBC_DLLEXPORT SQLDBC_Retcode getData(void *paramAddr,
00494 SQLDBC_Length *LengthIndicator,
00495 const SQLDBC_Length Size,
00496 const SQLDBC_Length position,
00497 const SQLDBC_Bool Terminate=SQLDBC_TRUE);
00498
00506 SQLDBC_DLLEXPORT SQLDBC_Length getLength();
00507
00513 SQLDBC_DLLEXPORT SQLDBC_Length getPosition();
00514
00515
00525 SQLDBC_DLLEXPORT SQLDBC_Length getPreferredDataSize();
00526
00527 #ifdef SQLDBC_FEATURE_LOB_KEEPALIVE
00528
00542 SQLDBC_DLLEXPORT SQLDBC_Retcode setKeepAlive(SQLDBC_Bool keepalive);
00543 #endif
00544 private:
00545 friend class SQLDBC77_Extension;
00546 SQLDBC_Retcode _setKeepAlive(SQLDBC_Bool keepalive);
00547 IFR_LOB *m_lobdata;
00548 IFR_ConnectionItem *m_citem;
00549 };
00550
00555 class SQLDBC_ParameterMetaData
00556 {
00557 public:
00558
00559 #ifndef __cplusplus
00560 typedef
00561 #endif
00562 enum ParameterNullBehavior {
00566 parameterNoNulls = 0,
00567
00571 parameterNullable = 1,
00572
00576 parameterNullableUnknown = 2
00577 }
00578 #ifndef __cplusplus
00579 ParameterNullBehavior
00580 #endif
00581 ;
00582
00583 #ifndef __cplusplus
00584 typedef
00585 #endif
00586 enum ParameterMode {
00587
00591 parameterModeUnknown = 0,
00592
00596 parameterModeIn = 1,
00597
00601 parameterModeInOut = 2,
00602
00606 parameterModeOut = 4
00607 }
00608 #ifndef __cplusplus
00609 ParameterMode
00610 #endif
00611 ;
00612
00619 SQLDBC_DLLEXPORT
00620 SQLDBC_Int2 getParameterCount();
00621
00641 SQLDBC_DLLEXPORT
00642 SQLDBC_Retcode getParameterName(SQLDBC_Int2 param,
00643 char *buffer,
00644 const SQLDBC_StringEncoding encoding,
00645 const SQLDBC_Length bufferSize,
00646 SQLDBC_Length *bufferLength) const;
00647
00654 SQLDBC_DLLEXPORT
00655 SQLDBC_SQLType getParameterType(SQLDBC_Int2 param);
00656
00667 SQLDBC_DLLEXPORT
00668 ParameterMode getParameterMode(SQLDBC_Int2 param);
00669
00680 SQLDBC_DLLEXPORT
00681 SQLDBC_Int4 getParameterLength(SQLDBC_Int2 param);
00682
00697 SQLDBC_DLLEXPORT
00698 SQLDBC_Int4 getPrecision(SQLDBC_Int2 param);
00699
00712 SQLDBC_DLLEXPORT
00713 SQLDBC_Int4 getScale(SQLDBC_Int2 param);
00714
00725 SQLDBC_DLLEXPORT
00726 SQLDBC_Int4 getPhysicalLength(SQLDBC_Int2 param);
00727
00739 SQLDBC_DLLEXPORT
00740 ParameterNullBehavior isNullable(SQLDBC_Int2 param);
00741
00742 private:
00743 friend class SQLDBC_PreparedStatement;
00744 friend struct SQLDBC_PreparedStatementStorage;
00745 SQLDBC_ParameterMetaData(IFR_ParameterMetaData *metadata);
00746 IFR_ParameterMetaData *m_metadata;
00747 };
00748
00753 class SQLDBC_ResultSetMetaData
00754 {
00755 public:
00756 #ifndef __cplusplus
00757 typedef
00758 #endif
00759 enum ColumnNullBehavior {
00763 columnNoNulls = 0,
00764
00768 columnNullable = 1,
00769
00773 columnNullableUnknown = 2
00774 }
00775 #ifndef __cplusplus
00776 ColumnNullBehavior
00777 #endif
00778 ;
00784 SQLDBC_DLLEXPORT
00785 SQLDBC_Int2 getColumnCount();
00786
00787
00788 #ifdef SQLDBC_FEATURE_METADATA_SCHEMATABLE
00789
00809 SQLDBC_DLLEXPORT
00810 SQLDBC_Retcode getSchemaName(SQLDBC_Int2 column,
00811 char *buffer,
00812 const SQLDBC_StringEncoding encoding,
00813 const SQLDBC_Length bufferSize,
00814 SQLDBC_Length *bufferLength) const;
00815
00816
00836 SQLDBC_DLLEXPORT
00837 SQLDBC_Retcode getTableName(SQLDBC_Int2 column,
00838 char *buffer,
00839 const SQLDBC_StringEncoding encoding,
00840 const SQLDBC_Length bufferSize,
00841 SQLDBC_Length *bufferLength) const;
00842
00843
00844 #endif
00845
00865 SQLDBC_DLLEXPORT
00866 SQLDBC_Retcode getColumnName(SQLDBC_Int2 column,
00867 char *buffer,
00868 const SQLDBC_StringEncoding encoding,
00869 const SQLDBC_Length bufferSize,
00870 SQLDBC_Length *bufferLength) const;
00871
00872 #ifdef SQLDBC_FEATURE_METADATA_COLUMNLABEL
00873
00894 SQLDBC_DLLEXPORT
00895 SQLDBC_Retcode getColumnLabel(SQLDBC_Int2 column,
00896 char *buffer,
00897 const SQLDBC_StringEncoding encoding,
00898 const SQLDBC_Length bufferSize,
00899 SQLDBC_Length *bufferLength) const;
00900
00901 #endif
00902
00911 SQLDBC_DLLEXPORT
00912 SQLDBC_SQLType getColumnType(SQLDBC_Int2 column);
00913
00922 SQLDBC_DLLEXPORT
00923 SQLDBC_Int4 getColumnLength(SQLDBC_Int2 column);
00924
00938 SQLDBC_DLLEXPORT
00939 SQLDBC_Int4 getPrecision(SQLDBC_Int2 column);
00940
00953 SQLDBC_DLLEXPORT
00954 SQLDBC_Int4 getScale(SQLDBC_Int2 column);
00955
00965 SQLDBC_DLLEXPORT
00966 SQLDBC_Int4 getPhysicalLength(SQLDBC_Int2 column);
00967
00978 SQLDBC_DLLEXPORT
00979 ColumnNullBehavior isNullable(SQLDBC_Int2 column);
00980
00990 SQLDBC_DLLEXPORT
00991 SQLDBC_Bool isWritable(SQLDBC_Int2 column);
00992
00993 private:
00994 friend class SQLDBC_PreparedStatement;
00995 friend class SQLDBC_ResultSet;
00996 friend struct SQLDBC_ResultSetStorage;
00997 friend struct SQLDBC_PreparedStatementStorage;
00998 friend class SQLDBC77_Extension;
00999 SQLDBC_Retcode _getColumnLabel(SQLDBC_Int2 column,
01000 char *buffer,
01001 const SQLDBC_StringEncoding encoding,
01002 const SQLDBC_Length bufferSize,
01003 SQLDBC_Length *bufferLength) const;
01004 SQLDBC_Retcode _getTableName(SQLDBC_Int2 column,
01005 char *buffer,
01006 const SQLDBC_StringEncoding encoding,
01007 const SQLDBC_Length bufferSize,
01008 SQLDBC_Length *bufferLength) const;
01009 SQLDBC_Retcode _getSchemaName(SQLDBC_Int2 column,
01010 char *buffer,
01011 const SQLDBC_StringEncoding encoding,
01012 const SQLDBC_Length bufferSize,
01013 SQLDBC_Length *bufferLength) const;
01014 SQLDBC_ResultSetMetaData(IFR_ResultSetMetaData *metadata);
01015 IFR_ResultSetMetaData *m_metadata;
01016 };
01017
01029 class SQLDBC_RowSet
01030 : public SQLDBC_ConnectionItem
01031 {
01032 public:
01033
01043 SQLDBC_DLLEXPORT
01044 SQLDBC_Retcode setPos(SQLDBC_UInt4 pos);
01045
01052 SQLDBC_DLLEXPORT
01053 SQLDBC_Retcode fetch();
01054
01061 SQLDBC_DLLEXPORT
01062 const SQLDBC_Int4 getRowsAffected() const;
01063
01075 SQLDBC_DLLEXPORT
01076 const SQLDBC_Int4 *getRowStatus() const;
01077
01129 SQLDBC_DLLEXPORT
01130 SQLDBC_Retcode getObject(const SQLDBC_Int4 Index,
01131 const SQLDBC_HostType Type,
01132 void *paramAddr,
01133 SQLDBC_Length *LengthIndicator,
01134 const SQLDBC_Length Size,
01135 const SQLDBC_Bool Terminate=SQLDBC_TRUE);
01136
01191
01192 SQLDBC_DLLEXPORT
01193 SQLDBC_Retcode getObject(const SQLDBC_Int4 Index,
01194 const SQLDBC_HostType Type,
01195 void *paramAddr,
01196 SQLDBC_Length *LengthIndicator,
01197 const SQLDBC_Length Size,
01198 SQLDBC_Length StartPos,
01199 const SQLDBC_Bool Terminate=SQLDBC_TRUE);
01200
01201 protected:
01202 friend class SQLDBC_ResultSet;
01203 friend struct SQLDBC_ResultSetStorage;
01204 SQLDBC_RowSet(IFR_ResultSet *resultset);
01205 };
01206
01222 class SQLDBC_UpdatableRowSet
01223 : public SQLDBC_RowSet
01224 {
01225 public:
01226
01234 SQLDBC_DLLEXPORT
01235 SQLDBC_Retcode insertAllRows();
01236
01242 SQLDBC_DLLEXPORT
01243 SQLDBC_Retcode insertOneRow();
01244
01251 SQLDBC_DLLEXPORT
01252 SQLDBC_Retcode insertRow(SQLDBC_UInt4 position);
01253
01254
01263 SQLDBC_DLLEXPORT
01264 SQLDBC_Retcode updateRow(SQLDBC_UInt4 position);
01265 SQLDBC_DLLEXPORT
01266 SQLDBC_Retcode updateRow(int position);
01267
01275 SQLDBC_DLLEXPORT
01276 SQLDBC_Retcode deleteRow(SQLDBC_UInt4 position);
01277 SQLDBC_DLLEXPORT
01278 SQLDBC_Retcode deleteRow(int position);
01279
01300 SQLDBC_DLLEXPORT
01301 SQLDBC_Retcode nextParameter(SQLDBC_Int2& paramIndex, void*& paramAddr);
01302
01323 SQLDBC_DLLEXPORT
01324 SQLDBC_Retcode nextParameterByIndex(SQLDBC_Int2& paramIndex, void*& paramAddr);
01325
01326
01339 SQLDBC_DLLEXPORT
01340 SQLDBC_Retcode putData(void *paramAddr, SQLDBC_Length *paramLengthIndicator);
01341
01342
01343 private:
01344 friend struct SQLDBC_ResultSetStorage;
01345 SQLDBC_UpdatableRowSet(IFR_ResultSet *resultset);
01346 };
01347
01348 struct SQLDBC_ResultSetStorage;
01349
01433 class SQLDBC_ResultSet
01434 : public SQLDBC_ConnectionItem
01435 {
01436 public:
01437
01446 SQLDBC_DLLEXPORT
01447 SQLDBC_ResultSetMetaData* getResultSetMetaData();
01448
01453 SQLDBC_DLLEXPORT
01454 const SQLDBC_Int4 getResultCount () const;
01455
01495 SQLDBC_DLLEXPORT
01496 SQLDBC_Retcode bindColumn (const SQLDBC_UInt4 Index,
01497 const SQLDBC_HostType Type,
01498 void *paramAddr,
01499 SQLDBC_Length *LengthIndicator,
01500 const SQLDBC_Length Size,
01501 const SQLDBC_Bool Terminate=SQLDBC_TRUE);
01502
01544
01545 SQLDBC_DLLEXPORT
01546 SQLDBC_Retcode bindColumn (const SQLDBC_UInt4 Index,
01547 const SQLDBC_HostType Type,
01548 void *paramAddr,
01549 SQLDBC_Length *LengthIndicator,
01550 SQLDBC_Length *PositionIndicator,
01551 const SQLDBC_Length Size,
01552 const SQLDBC_Bool Terminate=SQLDBC_TRUE);
01553
01554
01572 SQLDBC_DLLEXPORT
01573 SQLDBC_Retcode setBindingType(SQLDBC_size_t size);
01574
01581 SQLDBC_DLLEXPORT
01582 SQLDBC_Retcode clearColumns();
01583
01595 SQLDBC_DLLEXPORT
01596 void setFetchSize(SQLDBC_Int2 fetchsize);
01597
01603 SQLDBC_DLLEXPORT
01604 void setRowSetSize (SQLDBC_UInt4 rowsetsize);
01605
01611 SQLDBC_DLLEXPORT
01612 const SQLDBC_UInt4 getRowSetSize () const;
01613
01620 SQLDBC_DLLEXPORT
01621 SQLDBC_RowSet *getRowSet ();
01622
01629 SQLDBC_DLLEXPORT
01630 SQLDBC_UpdatableRowSet *getUpdatableRowSet ();
01631
01637 SQLDBC_DLLEXPORT
01638 SQLDBC_Statement *getStatement();
01639
01644 SQLDBC_DLLEXPORT
01645 SQLDBC_Bool isUpdatable();
01646
01657 SQLDBC_DLLEXPORT
01658 SQLDBC_Retcode first();
01659
01675 SQLDBC_DLLEXPORT
01676 SQLDBC_Retcode next();
01677
01687 SQLDBC_DLLEXPORT
01688 SQLDBC_Retcode previous();
01689
01699 SQLDBC_DLLEXPORT
01700 SQLDBC_Retcode last();
01701
01730 SQLDBC_DLLEXPORT
01731 SQLDBC_Retcode absolute (int row);
01732
01754 SQLDBC_DLLEXPORT
01755 SQLDBC_Retcode relative(int relativePos);
01756
01760 SQLDBC_DLLEXPORT
01761 void close();
01762
01769 SQLDBC_DLLEXPORT
01770 const SQLDBC_UInt4 getRowNumber() const;
01771
01823 SQLDBC_DLLEXPORT
01824 SQLDBC_Retcode getObject(const SQLDBC_Int4 Index,
01825 const SQLDBC_HostType Type,
01826 void *paramAddr,
01827 SQLDBC_Length *LengthIndicator,
01828 const SQLDBC_Length Size,
01829 const SQLDBC_Bool Terminate=SQLDBC_TRUE);
01830
01831
01886
01887 SQLDBC_DLLEXPORT
01888 SQLDBC_Retcode getObject(const SQLDBC_Int4 Index,
01889 const SQLDBC_HostType Type,
01890 void *paramAddr,
01891 SQLDBC_Length *LengthIndicator,
01892 const SQLDBC_Length Size,
01893 SQLDBC_Length StartPos,
01894 const SQLDBC_Bool Terminate=SQLDBC_TRUE);
01895
01896 private:
01897 friend class SQLDBC_Statement;
01898 friend struct SQLDBC_StatementStorage;
01899
01903 SQLDBC_ResultSet(SQLDBC_Statement* statement,
01904 IFR_ResultSet *resultset);
01908 ~SQLDBC_ResultSet();
01909
01910 SQLDBC_ResultSetStorage *m_cresult;
01911 };
01912
01913 struct SQLDBC_StatementStorage;
01914
01989 class SQLDBC_Statement
01990 : public SQLDBC_ConnectionItem
01991 {
01992 public:
02009 SQLDBC_DLLEXPORT
02010 SQLDBC_Retcode execute(const char *sql,
02011 const SQLDBC_Length sqlLength,
02012 const SQLDBC_StringEncoding encoding);
02013
02029
02030 SQLDBC_DLLEXPORT
02031 SQLDBC_Retcode execute(const char *sql,
02032 const SQLDBC_StringEncoding encoding);
02033
02046
02047 SQLDBC_DLLEXPORT
02048 SQLDBC_Retcode execute(const char *sql);
02049
02063 SQLDBC_DLLEXPORT
02064 void setResultSetFetchSize(SQLDBC_Int2 rows);
02065
02078 SQLDBC_DLLEXPORT
02079 void setMaxRows(SQLDBC_UInt4 rows);
02080
02089 SQLDBC_DLLEXPORT
02090 const SQLDBC_UInt4 getMaxRows() const;
02091
02099 SQLDBC_DLLEXPORT
02100 SQLDBC_ResultSet *getResultSet();
02101
02115 SQLDBC_DLLEXPORT
02116 void setCursorName(const char *buffer,
02117 SQLDBC_Length bufferLength,
02118 const SQLDBC_StringEncoding encoding);
02119
02136 SQLDBC_DLLEXPORT
02137 SQLDBC_Retcode setCommandInfo(const char *buffer,
02138 SQLDBC_Length bufferLength,
02139 SQLDBC_Int4 lineNumber);
02162 SQLDBC_DLLEXPORT
02163 SQLDBC_Retcode getCursorName(char *buffer,
02164 const SQLDBC_StringEncoding encoding,
02165 const SQLDBC_Length bufferSize,
02166 SQLDBC_Length *bufferLength) const;
02167
02186 SQLDBC_DLLEXPORT
02187 SQLDBC_Retcode getTableName(char *buffer,
02188 const SQLDBC_StringEncoding encoding,
02189 const SQLDBC_Length bufferSize,
02190 SQLDBC_Length *bufferLength) const;
02191
02205 SQLDBC_DLLEXPORT
02206 SQLDBC_Bool isQuery() const;
02207
02217 SQLDBC_DLLEXPORT
02218 SQLDBC_Int4 getKernelVersion() const;
02219
02220
02230 SQLDBC_DLLEXPORT
02231 const SQLDBC_Int4 getRowsAffected() const;
02232
02233 enum ResultSetType {
02234 FORWARD_ONLY = 1,
02235 SCROLL_SENSITIVE = 2,
02236 SCROLL_INSENSITIVE = 3
02237 };
02238
02258 SQLDBC_DLLEXPORT
02259 void setResultSetType (ResultSetType type );
02260
02273 SQLDBC_DLLEXPORT
02274 const ResultSetType getResultSetType() const;
02275
02276 enum ConcurrencyType {
02277 CONCUR_UPDATABLE = 10,
02278 CONCUR_READ_ONLY = 11
02279 };
02280
02294 SQLDBC_DLLEXPORT
02295 void setResultSetConcurrencyType (ConcurrencyType type);
02296
02297 enum HoldabilityType {
02298 CURSOR_HOLD_OVER_COMMIT = 20,
02299 CURSOR_CLOSE_ON_COMMIT = 21
02300 };
02301
02311 SQLDBC_DLLEXPORT
02312 const ConcurrencyType getResultSetConcurrencyType() const;
02313
02322 SQLDBC_DLLEXPORT
02323 const SQLDBC_Int4 *getRowStatus() const;
02324
02330 SQLDBC_DLLEXPORT
02331 const SQLDBC_UInt4 getBatchSize() const;
02332
02343 SQLDBC_DLLEXPORT
02344 const SQLDBC_Retcode addBatch(const char *sql,
02345 SQLDBC_Length sqlLength,
02346 SQLDBC_StringEncoding encoding);
02347
02354
02355 SQLDBC_DLLEXPORT
02356 const SQLDBC_Retcode addBatch(const char *sql,
02357 SQLDBC_StringEncoding encoding);
02358
02365
02366 SQLDBC_DLLEXPORT
02367 const SQLDBC_Retcode addBatch(const char *sql);
02368
02375 SQLDBC_DLLEXPORT
02376 const SQLDBC_Retcode executeBatch();
02377
02381 SQLDBC_DLLEXPORT
02382 void clearBatch();
02383
02384 #ifdef SQLDBC_FEATURE_STATEMENT_GETCONNECTION
02385
02389 SQLDBC_DLLEXPORT
02390 SQLDBC_Connection *getConnection();
02391
02392 #endif
02393
02407 SQLDBC_DLLEXPORT
02408 SQLDBC_Retcode getLastInsertedKey(SQLDBC_Int4 tag,
02409 SQLDBC_HostType type,
02410 void *paramAddr,
02411 SQLDBC_Length *lengthIndicator,
02412 SQLDBC_Length size,
02413 SQLDBC_Bool terminate=SQLDBC_TRUE);
02414
02415
02416 protected:
02420 void clearResultSet();
02421
02422
02423 private:
02424 friend struct SQLDBC_ConnectionItemStorageForConnection;
02425 friend class SQLDBC_Connection;
02426 friend class SQLDBC_PreparedStatement;
02427 friend class SQLDBC77_Extension;
02428 SQLDBC_Connection *_getConnection();
02434 SQLDBC_Statement(IFR_Statement *stmt);
02439 SQLDBC_Statement(IFR_PreparedStmt *stmt);
02440 ~SQLDBC_Statement();
02441 SQLDBC_StatementStorage *m_cstmt;
02442 };
02443
02444 struct SQLDBC_PreparedStatementStorage;
02445
02607 class SQLDBC_PreparedStatement
02608 : public SQLDBC_Statement
02609 {
02610 public:
02619 SQLDBC_DLLEXPORT
02620 SQLDBC_Retcode prepare(const char *sql,
02621 const SQLDBC_Length sqlLength,
02622 const SQLDBC_StringEncoding encoding);
02623
02635
02636 SQLDBC_DLLEXPORT
02637 SQLDBC_Retcode prepare(const char *sql,
02638 const SQLDBC_StringEncoding encoding);
02639
02648
02649 SQLDBC_DLLEXPORT
02650 SQLDBC_Retcode prepare(const char *sql);
02651
02664
02665 SQLDBC_DLLEXPORT
02666 SQLDBC_Retcode execute();
02667
02677 SQLDBC_DLLEXPORT
02678 SQLDBC_ParameterMetaData* getParameterMetaData();
02679
02701 SQLDBC_DLLEXPORT
02702 SQLDBC_ResultSetMetaData* getResultSetMetaData();
02703
02711 SQLDBC_DLLEXPORT
02712 SQLDBC_Retcode setBatchSize(SQLDBC_UInt4 rowarraysize);
02713
02725 SQLDBC_DLLEXPORT
02726 SQLDBC_UInt4 getPreferredBatchSize();
02727
02728
02740 SQLDBC_DLLEXPORT
02741 SQLDBC_Retcode clearParameters();
02742
02743
02788 SQLDBC_DLLEXPORT
02789 SQLDBC_Retcode bindParameter (const SQLDBC_UInt2 Index,
02790 const SQLDBC_HostType Type,
02791 void *paramAddr,
02792 SQLDBC_Length *LengthIndicator,
02793 const SQLDBC_Length Size,
02794 const SQLDBC_Bool Terminate=SQLDBC_TRUE);
02795
02843 SQLDBC_DLLEXPORT
02844 SQLDBC_Retcode bindParameterAddr(const SQLDBC_UInt2 Index,
02845 const SQLDBC_HostType Type,
02846 void *paramAddr,
02847 SQLDBC_Length *LengthIndicator,
02848 const SQLDBC_Length Size,
02849 const SQLDBC_Bool Terminate=SQLDBC_TRUE);
02850
02867 SQLDBC_DLLEXPORT
02868 SQLDBC_Retcode setBindingType(SQLDBC_size_t size);
02869
02890 SQLDBC_DLLEXPORT
02891 SQLDBC_Retcode nextParameter(SQLDBC_Int2& paramIndex, void*& paramAddr);
02892
02913 SQLDBC_DLLEXPORT
02914 SQLDBC_Retcode nextParameterByIndex(SQLDBC_Int2& paramIndex, void*& paramAddr);
02915
02916
02929 SQLDBC_DLLEXPORT
02930 SQLDBC_Retcode putData(void *paramAddr, SQLDBC_Length *paramLengthIndicator);
02931
02979 SQLDBC_DLLEXPORT
02980 SQLDBC_Retcode getObject(const SQLDBC_Int4 Index,
02981 const SQLDBC_HostType Type,
02982 void *paramAddr,
02983 SQLDBC_Length *LengthIndicator,
02984 const SQLDBC_Length Size,
02985 const SQLDBC_Bool Terminate=SQLDBC_TRUE);
02986
02987
03038
03039 SQLDBC_DLLEXPORT
03040 SQLDBC_Retcode getObject(const SQLDBC_Int4 Index,
03041 const SQLDBC_HostType Type,
03042 void *paramAddr,
03043 SQLDBC_Length *LengthIndicator,
03044 const SQLDBC_Length Size,
03045 SQLDBC_Length StartPos,
03046 const SQLDBC_Bool Terminate=SQLDBC_TRUE);
03047
03048
03049 private:
03050 friend class SQLDBC_Connection;
03051 friend struct SQLDBC_ConnectionItemStorageForConnection;
03060 SQLDBC_PreparedStatement(IFR_PreparedStmt *stmt);
03061 ~SQLDBC_PreparedStatement();
03062 SQLDBC_PreparedStatementStorage *m_pcstmt;
03063 };
03064
03293 class SQLDBC_ConnectProperties
03294 {
03295 public:
03300 SQLDBC_DLLEXPORT
03301 SQLDBC_ConnectProperties();
03302
03307 SQLDBC_DLLEXPORT
03308 SQLDBC_ConnectProperties(const SQLDBC_ConnectProperties& copy);
03309
03316 SQLDBC_ConnectProperties(SAPDBMem_IRawAllocator& allocator);
03317
03321 SQLDBC_DLLEXPORT
03322 ~SQLDBC_ConnectProperties();
03323
03324
03330 SQLDBC_DLLEXPORT
03331 void setProperty(const char *key, const char *value);
03332
03339 SQLDBC_DLLEXPORT
03340 const char *getProperty(const char *key, const char *defaultvalue=0) const;
03341
03342 private:
03343 friend class SQLDBC_Connection;
03344 friend class SQLDBC_Environment;
03345 IFR_ConnectProperties *m_prop;
03346 };
03347
03348
03359 class SQLDBC_Connection
03360 : public SQLDBC_ConnectionItem
03361 {
03362 public:
03386 SQLDBC_DLLEXPORT
03387 SQLDBC_Retcode connect(const char *connectURL,
03388 SQLDBC_Length connectURLLength,
03389 const char *connectCommand,
03390 SQLDBC_Length connectCommandLength,
03391 SQLDBC_StringEncoding connectCommandEncoding,
03392 SQLDBC_ConnectProperties& connectProperties);
03393
03415 SQLDBC_DLLEXPORT
03416 SQLDBC_Retcode connect(const char *servernode,
03417 SQLDBC_Length servernodeLength,
03418 const char *serverdb,
03419 SQLDBC_Length serverdbLength,
03420 const char *username,
03421 SQLDBC_Length usernameLength,
03422 const char *password,
03423 SQLDBC_Length passwordLength,
03424 const SQLDBC_StringEncoding userpwdEncoding);
03425
03446 SQLDBC_DLLEXPORT
03447 SQLDBC_Retcode connect(const char *servernode,
03448 const char *serverdb,
03449 const char *username,
03450 const char *password,
03451 const SQLDBC_StringEncoding userpwdEncoding);
03452
03467 SQLDBC_DLLEXPORT
03468 SQLDBC_Retcode connect(const char *servernode,
03469 const char *serverdb,
03470 const char *username,
03471 const char *password);
03472
03504 SQLDBC_DLLEXPORT
03505 SQLDBC_Retcode connect(const char* servernode,
03506 SQLDBC_Length servernodeLength,
03507 const char* serverdb,
03508 SQLDBC_Length serverdbLength,
03509 const char* username,
03510 SQLDBC_Length usernameLength,
03511 const char* password,
03512 SQLDBC_Length passwordLength,
03513 const SQLDBC_StringEncoding userpwdEncoding,
03514 const SQLDBC_ConnectProperties& properties);
03515
03537
03538 SQLDBC_DLLEXPORT
03539 SQLDBC_Retcode connect(const char* servernode,
03540 const char* serverdb,
03541 const char* username,
03542 const char* password,
03543 const SQLDBC_StringEncoding userpwdEncoding,
03544 const SQLDBC_ConnectProperties& properties);
03545
03561
03562 SQLDBC_DLLEXPORT
03563 SQLDBC_Retcode connect(const char* servernode,
03564 const char* serverdb,
03565 const char* username,
03566 const char* password,
03567 const SQLDBC_ConnectProperties& properties);
03568
03569
03581 SQLDBC_DLLEXPORT
03582 SQLDBC_Retcode connect();
03583
03596
03597 SQLDBC_DLLEXPORT
03598 SQLDBC_Retcode connect(const SQLDBC_ConnectProperties& properties);
03599
03600
03601 #ifdef SQLDBC_FEATURE_CONNECTION_FEATURES
03602
03615
03616
03617 SQLDBC_DLLEXPORT
03618 SQLDBC_Retcode getConnectionFeatures(SQLDBC_ConnectProperties& properties);
03619 #endif
03620
03633 SQLDBC_DLLEXPORT
03634 SQLDBC_Statement *createStatement();
03635
03644 SQLDBC_DLLEXPORT
03645 SQLDBC_PreparedStatement *createPreparedStatement();
03646
03656 SQLDBC_DLLEXPORT
03657 SQLDBC_Retcode commit();
03658
03663 SQLDBC_DLLEXPORT
03664 SQLDBC_Retcode rollback();
03665
03670 SQLDBC_DLLEXPORT
03671 void releaseStatement(SQLDBC_Statement *stmt);
03672
03677
03678 SQLDBC_DLLEXPORT
03679 void releaseStatement(SQLDBC_PreparedStatement *stmt);
03680
03695 SQLDBC_DLLEXPORT
03696 SQLDBC_Retcode cancel();
03697
03711 SQLDBC_DLLEXPORT
03712 SQLDBC_Retcode close();
03713
03714
03728 SQLDBC_DLLEXPORT
03729 SQLDBC_Retcode commitWorkRelease();
03730
03731
03747 SQLDBC_DLLEXPORT
03748 SQLDBC_Retcode disconnect();
03749
03750
03756 SQLDBC_DLLEXPORT
03757 void setAutoCommit(SQLDBC_Bool autocommit);
03758
03765 SQLDBC_DLLEXPORT
03766 SQLDBC_Bool getAutoCommit() const;
03767
03777 SQLDBC_DLLEXPORT
03778 void setSQLMode(SQLDBC_SQLMode sqlmode);
03779
03790 SQLDBC_DLLEXPORT
03791 SQLDBC_Retcode setTransactionIsolation(SQLDBC_Int4 isolationlevel);
03792
03799 SQLDBC_DLLEXPORT
03800 SQLDBC_Int4 getTransactionIsolation() const;
03801
03809 SQLDBC_DLLEXPORT
03810 SQLDBC_Bool isConnected() const;
03811
03824 SQLDBC_DLLEXPORT
03825 SQLDBC_Int4 getKernelVersion() const;
03826
03832 SQLDBC_DLLEXPORT
03833 SQLDBC_Bool isUnicodeDatabase() const;
03834
03839 SQLDBC_DLLEXPORT
03840 SQLDBC_DateTimeFormat::Format getDateTimeFormat() const;
03841
03842 private:
03843 friend class SQLDBC_Environment;
03844 friend class SQLDBC77_Extension;
03845 SQLDBC_Retcode _getConnectionFeatures(SQLDBC_ConnectProperties& properties);
03852 SQLDBC_Connection(IFR_Connection *conn);
03853 };
03854
03855
03856 #ifdef SQLDBC_FEATURE_PROFILE
03857
03874 class SQLDBC_Profile
03875 {
03876 public:
03877
03881 SQLDBC_DLLEXPORT
03882 void resetCounters();
03883
03887 SQLDBC_DLLEXPORT
03888 void collectCounters();
03889
03896 SQLDBC_DLLEXPORT
03897 SQLDBC_UInt8 getCounter(SQLDBC_ProfileCountValues counter);
03898
03899 private:
03900 friend class SQLDBC_Environment;
03901 friend struct SQLDBC_EnvironmentItemStorage;
03902 SQLDBC_Profile(IFR_Profile *profile);
03903 IFR_Profile *m_profile;
03904 };
03905 #endif
03906
03907 struct SQLDBC_EnvironmentItemStorage;
03908
03913 class SQLDBC_Environment
03914 {
03915 public:
03923 SQLDBC_DLLEXPORT
03924 SQLDBC_Environment(SQLDBC_IRuntime* runtime);
03925
03929 SQLDBC_DLLEXPORT
03930 ~SQLDBC_Environment();
03931
03937 SQLDBC_DLLEXPORT
03938 SQLDBC_Connection *createConnection() const;
03939
03945 SQLDBC_DLLEXPORT
03946 SQLDBC_Connection *createConnection(SAPDBMem_IRawAllocator& allocator) const;
03947
03953 SQLDBC_DLLEXPORT
03954 void releaseConnection(SQLDBC_Connection *connection) const;
03955
03969 SQLDBC_DLLEXPORT
03970 const char *getLibraryVersion();
03971
03981 SQLDBC_DLLEXPORT
03982 inline const char *getSDKVersion()
03983 const
03984 {
03985 return SQLDBCHeaderVersion;
03986 };
03987
03991 SQLDBC_DLLEXPORT SAPDBMem_IRawAllocator& getAllocator();
03992
03993 #ifdef SQLDBC_FEATURE_TRACEOPTION
03994
04063 SQLDBC_DLLEXPORT
04064 void setTraceOptions(const SQLDBC_ConnectProperties& traceoptions);
04065
04072 SQLDBC_DLLEXPORT
04073 void getTraceOptions(SQLDBC_ConnectProperties& traceoptions);
04074 #endif
04075
04076 #ifdef SQLDBC_FEATURE_PROFILE
04077
04082 SQLDBC_DLLEXPORT
04083 SQLDBC_Profile* getProfile();
04084
04085 #endif
04086 private:
04087 SQLDBC_EnvironmentItemStorage *m_eitem;
04088 };
04089
04099 SQLDBC_DLLEXPORT SQLDBC_IRuntime* GetClientRuntime(char *errorText, const SQLDBC_Int4 errorTextSize);
04100
04110 SQLDBC_DLLEXPORT SQLDBC_IRuntime* GetSingleThreadClientRuntime(char *errorText, const SQLDBC_Int4 errorTextSize);
04111 }
04112
04113
04114 #endif