Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Related Pages  

SQLDBC.h

Go to the documentation of this file.
00001 
00037 #ifndef SQLDBC_H
00038 #define SQLDBC_H
00039 
00040 #include "SQLDBC_Types.h" /* no check */
00041 
00042 class IFR_Environment;
00043 class IFR_Connection;
00044 class IFR_ConnectProperties;
00045 class IFR_ConnectionItem;
00046 class IFR_ErrorHndl;
00047 class IFR_Statement;
00048 class IFR_PreparedStmt;
00049 class IFR_SQLWarning;
00050 class IFR_ResultSet;
00051 class IFR_RowSet;
00052 class IFR_ParameterMetaData;
00053 class IFR_ResultSetMetaData;
00054 
00055 class SQLDBC_IRuntime;
00056 class SAPDBMem_IRawAllocator;
00057 
00058 
00062 static const char* SQLDBCHeaderVersion = "SQLDBC.H  7.4.4    BUILD 003-000-000-000";
00063 
00064 #ifdef WIN32 
00065 #define SQLDBC_DLLEXPORT __declspec(dllexport)
00066 #else
00067 #define SQLDBC_DLLEXPORT
00068 #endif
00069 
00070 namespace SQLDBC {
00071 
00072 class SQLDBC_Statement;
00073 
00077 class SQLDBC_ErrorHndl 
00078 {
00079 public:
00085   SQLDBC_DLLEXPORT
00086   SQLDBC_ErrorHndl();
00087   
00091   SQLDBC_DLLEXPORT
00092   const SQLDBC_Int4 getErrorCode() const;
00093   
00097   SQLDBC_DLLEXPORT
00098   const char* getSQLState() const;
00099   
00104   SQLDBC_DLLEXPORT
00105   const char *getErrorText() const;
00106   
00114   SQLDBC_DLLEXPORT
00115   operator SQLDBC_Bool () const; 
00116   
00117 private:
00118   friend class SQLDBC_ConnectionItem;
00119   friend struct SQLDBC_ConnectionItemStorage;
00125   SQLDBC_ErrorHndl(IFR_ErrorHndl* error);
00126   
00130   IFR_ErrorHndl *m_error;
00131 };
00132 
00141 class SQLDBC_SQLWarning
00142 {
00143 public:
00148   SQLDBC_DLLEXPORT
00149   SQLDBC_SQLWarning* getNextWarning() const;
00150     
00154   SQLDBC_DLLEXPORT
00155   SQLDBC_SQLWarningCode getWarningCode() const;
00156   
00157 private:
00158   friend class SQLDBC_ConnectionItem;
00159   friend struct SQLDBC_ConnectionItemStorage;
00165   SQLDBC_SQLWarning(IFR_SQLWarning* warning);
00166   IFR_SQLWarning    *m_warning; 
00167 };
00168 
00169 struct SQLDBC_ConnectionItemStorage;
00170 
00181 class SQLDBC_ConnectionItem
00182 {
00183 public:
00184 
00189     SQLDBC_DLLEXPORT
00190     SQLDBC_ErrorHndl &error(); 
00191 
00195     SQLDBC_DLLEXPORT
00196     void clearError();
00197 
00203     SQLDBC_DLLEXPORT
00204     SQLDBC_SQLWarning* warning();
00205     
00209     SQLDBC_DLLEXPORT
00210     void clearWarnings();
00211 
00212 private:
00213     friend class SQLDBC_Environment;
00214     friend class SQLDBC_Connection;
00215     friend class SQLDBC_Statement;
00216     friend class SQLDBC_PreparedStatement;
00217     friend class SQLDBC_ResultSet;
00218     friend class SQLDBC_RowSet;
00219     
00220     SQLDBC_ConnectionItem(IFR_ConnectionItem *item);
00221 
00222     ~SQLDBC_ConnectionItem();
00223     
00224     SQLDBC_ConnectionItemStorage *m_citem;
00225 };
00226 
00231 class SQLDBC_ParameterMetaData
00232 {
00233 public:
00234    
00235   enum ParameterNullBehavior { 
00239     parameterNoNulls = 0,
00240   
00244     parameterNullable = 1,
00245   
00249     parameterNullableUnknown = 2
00250   };
00251 
00252   enum ParameterMode { 
00253   
00257     parameterModeUnknown = 0,
00258 
00262     parameterModeIn = 1,
00263 
00267     parameterModeInOut = 2,
00268 
00272     parameterModeOut = 4
00273   };  
00274   
00281   SQLDBC_DLLEXPORT
00282   SQLDBC_Int2 getParameterCount();
00283     
00301   SQLDBC_DLLEXPORT
00302   SQLDBC_Retcode getParameterName(SQLDBC_Int2    param, 
00303                                   char *buffer,
00304                                   const SQLDBC_StringEncoding encoding,
00305                                   const SQLDBC_Length  bufferSize,
00306                                   SQLDBC_Length *bufferLength) const;
00307   
00314   SQLDBC_DLLEXPORT
00315   SQLDBC_SQLType getParameterType(SQLDBC_Int2 param);
00316   
00327   SQLDBC_DLLEXPORT
00328   ParameterMode getParameterMode(SQLDBC_Int2 param);
00329   
00340   SQLDBC_DLLEXPORT
00341   SQLDBC_Int4 getParameterLength(SQLDBC_Int2 param);
00342 
00357   SQLDBC_DLLEXPORT
00358   SQLDBC_Int4 getPrecision(SQLDBC_Int2 param);
00359   
00372   SQLDBC_DLLEXPORT
00373   SQLDBC_Int4 getScale(SQLDBC_Int2 param);
00374   
00385   SQLDBC_DLLEXPORT
00386   SQLDBC_Int4 getPhysicalLength(SQLDBC_Int2 param);
00387   
00399   SQLDBC_DLLEXPORT
00400   ParameterNullBehavior isNullable(SQLDBC_Int2 param);
00401   
00402 private:
00403   friend class SQLDBC_PreparedStatement;
00404   friend struct SQLDBC_PreparedStatementStorage;
00405   SQLDBC_ParameterMetaData(IFR_ParameterMetaData *metadata);  
00406   IFR_ParameterMetaData *m_metadata;
00407 };
00408 
00413 class SQLDBC_ResultSetMetaData
00414 {
00415 public:
00416   enum ColumnNullBehavior {
00420     columnNoNulls = 0,
00421 
00425     columnNullable = 1,
00426      
00430     columnNullableUnknown = 2
00431   };
00437   SQLDBC_DLLEXPORT
00438   SQLDBC_Int2 getColumnCount();
00439     
00459   SQLDBC_DLLEXPORT
00460   SQLDBC_Retcode getColumnName(SQLDBC_Int2 column, 
00461                                  char *buffer,
00462                                  const SQLDBC_StringEncoding encoding,
00463                                  const SQLDBC_Length  bufferSize,
00464                                  SQLDBC_Length *bufferLength) const;
00465        
00474   SQLDBC_DLLEXPORT
00475   SQLDBC_SQLType getColumnType(SQLDBC_Int2 column);
00476 
00485   SQLDBC_DLLEXPORT
00486   SQLDBC_Int4 getColumnLength(SQLDBC_Int2 column);
00487 
00501   SQLDBC_DLLEXPORT
00502   SQLDBC_Int4 getPrecision(SQLDBC_Int2 column);
00503    
00516   SQLDBC_DLLEXPORT
00517   SQLDBC_Int4 getScale(SQLDBC_Int2 column);
00518 
00529   SQLDBC_DLLEXPORT
00530   SQLDBC_Int4 getPhysicalLength(SQLDBC_Int2 column);
00531 
00543   SQLDBC_DLLEXPORT
00544   ColumnNullBehavior isNullable(SQLDBC_Int2 column);
00545   
00555   SQLDBC_DLLEXPORT
00556   SQLDBC_Bool isWritable(SQLDBC_Int2 column);
00557     
00558 private:
00559   friend class SQLDBC_PreparedStatement;
00560   friend class SQLDBC_ResultSet;
00561   friend struct SQLDBC_ResultSetStorage;
00562   friend struct SQLDBC_PreparedStatementStorage;
00563   SQLDBC_ResultSetMetaData(IFR_ResultSetMetaData *metadata);  
00564   IFR_ResultSetMetaData *m_metadata;
00565 };
00566 
00578 class SQLDBC_RowSet 
00579   : public SQLDBC_ConnectionItem
00580 {
00581 public:
00582   
00592   SQLDBC_DLLEXPORT
00593   SQLDBC_Retcode setPos(SQLDBC_UInt4 pos);
00594   
00601   SQLDBC_DLLEXPORT
00602   SQLDBC_Retcode fetch();
00603 
00610   SQLDBC_DLLEXPORT
00611   const SQLDBC_Int4 getRowsAffected() const;
00612   
00657   SQLDBC_DLLEXPORT
00658   SQLDBC_Retcode getObject(const SQLDBC_Int4     Index, 
00659                            const SQLDBC_HostType Type, 
00660                            void                 *paramAddr, 
00661                            SQLDBC_Length        *LengthIndicator,
00662                            const SQLDBC_Length   Size,
00663                            const SQLDBC_Bool     Terminate=SQLDBC_TRUE);
00664 
00665 private:
00666   friend class SQLDBC_ResultSet;
00667   friend struct SQLDBC_ResultSetStorage;
00668   SQLDBC_RowSet(IFR_ResultSet *resultset);
00669 };
00670 
00671 struct SQLDBC_ResultSetStorage;
00672 
00755 class SQLDBC_ResultSet 
00756   : public SQLDBC_ConnectionItem
00757 {
00758 public:
00759 
00768   SQLDBC_DLLEXPORT
00769   SQLDBC_ResultSetMetaData* getResultSetMetaData();
00770 
00775   SQLDBC_DLLEXPORT
00776   const SQLDBC_UInt4 getResultCount () const;
00777 
00816   SQLDBC_DLLEXPORT
00817   SQLDBC_Retcode bindColumn (const SQLDBC_UInt4    Index, 
00818                              const SQLDBC_HostType Type, 
00819                              void                 *paramAddr,
00820                              SQLDBC_Length        *LengthIndicator,
00821                              const SQLDBC_Length   Size,
00822                              const SQLDBC_Bool     Terminate=SQLDBC_TRUE);
00823 
00833    SQLDBC_DLLEXPORT
00834    void setFetchSize(SQLDBC_Int2 fetchsize);
00835 
00841   SQLDBC_DLLEXPORT
00842   void setRowSetSize (SQLDBC_UInt4 rowsetsize);
00843 
00849   SQLDBC_DLLEXPORT
00850   const SQLDBC_UInt4 getRowSetSize () const;
00851 
00858   SQLDBC_DLLEXPORT
00859   SQLDBC_RowSet *getRowSet ();
00860 
00866   SQLDBC_DLLEXPORT
00867   SQLDBC_Statement *getStatement();
00868     
00869 
00880   SQLDBC_DLLEXPORT
00881   SQLDBC_Retcode first();
00882 
00898   SQLDBC_DLLEXPORT
00899   SQLDBC_Retcode next();
00900 
00910   SQLDBC_DLLEXPORT
00911   SQLDBC_Retcode previous();
00912 
00922   SQLDBC_DLLEXPORT
00923   SQLDBC_Retcode last();
00924 
00953   SQLDBC_DLLEXPORT
00954   SQLDBC_Retcode absolute (int row);
00955 
00977   SQLDBC_DLLEXPORT
00978   SQLDBC_Retcode relative(int relativePos);
00979 
00983   SQLDBC_DLLEXPORT
00984   void close();
00985 
00992   SQLDBC_DLLEXPORT
00993   const SQLDBC_UInt4 getRowNumber() const;
00994   
01035   SQLDBC_DLLEXPORT
01036   SQLDBC_Retcode getObject(const SQLDBC_Int4     Index, 
01037                            const SQLDBC_HostType Type, 
01038                            void                 *paramAddr, 
01039                            SQLDBC_Length        *LengthIndicator,
01040                            const SQLDBC_Length   Size,
01041                            const SQLDBC_Bool     Terminate=SQLDBC_TRUE);
01042 
01043 private:
01044   friend class SQLDBC_Statement;
01045   friend struct SQLDBC_StatementStorage;
01046 
01050   SQLDBC_ResultSet(SQLDBC_Statement* statement,
01051                    IFR_ResultSet *resultset);  
01055   ~SQLDBC_ResultSet();  
01056 
01057   SQLDBC_ResultSetStorage *m_cresult;
01058 };
01059 
01060 struct SQLDBC_StatementStorage;
01061 
01137 class SQLDBC_Statement 
01138   : public SQLDBC_ConnectionItem
01139 {
01140 public:
01157   SQLDBC_DLLEXPORT
01158   SQLDBC_Retcode execute(const char *sql, 
01159                          const SQLDBC_Length sqlLength, 
01160                          const SQLDBC_StringEncoding encoding);
01161 
01177   SQLDBC_DLLEXPORT
01178   SQLDBC_Retcode execute(const char *sql, 
01179                          const SQLDBC_StringEncoding encoding);
01180 
01193   SQLDBC_DLLEXPORT
01194   SQLDBC_Retcode execute(const char *sql);
01195   
01209   SQLDBC_DLLEXPORT
01210   void setResultSetFetchSize(SQLDBC_Int2 rows);
01211   
01224   SQLDBC_DLLEXPORT
01225   void setMaxRows(SQLDBC_UInt4 rows);
01226 
01235   SQLDBC_DLLEXPORT
01236   const SQLDBC_UInt4 getMaxRows() const;
01244   SQLDBC_DLLEXPORT
01245   SQLDBC_ResultSet *getResultSet();
01246 
01260   SQLDBC_DLLEXPORT
01261   void setCursorName(const char    *buffer,
01262                      SQLDBC_Length  bufferLength,
01263                      const SQLDBC_StringEncoding encoding);
01264   
01287   SQLDBC_DLLEXPORT
01288   SQLDBC_Retcode getCursorName(char         *buffer,
01289                                const SQLDBC_StringEncoding encoding,
01290                                const SQLDBC_Length bufferSize, 
01291                                SQLDBC_Length *bufferLength) const;
01292   
01308   SQLDBC_DLLEXPORT
01309   SQLDBC_Retcode getTableName(char          *buffer,
01310                               const SQLDBC_StringEncoding encoding,
01311                               const SQLDBC_Length  bufferSize,
01312                               SQLDBC_Length *bufferLength) const; 
01313   
01327   SQLDBC_DLLEXPORT
01328   void setQueryTimeout(int seconds);
01329 
01343   SQLDBC_DLLEXPORT
01344   SQLDBC_Bool isQuery() const;
01345     
01355   SQLDBC_DLLEXPORT
01356   const SQLDBC_Int4 getRowsAffected() const;
01357   
01358   enum ResultSetType {
01359     FORWARD_ONLY = 1, 
01360     SCROLL_SENSITIVE = 2, 
01361     SCROLL_INSENSITIVE = 3 
01362   };
01363 
01382   SQLDBC_DLLEXPORT
01383   void setResultSetType (ResultSetType type );
01384   
01395   SQLDBC_DLLEXPORT
01396   const ResultSetType getResultSetType() const;
01397     
01398   enum ConcurrencyType {
01399     CONCUR_UPDATABLE = 10, 
01400     CONCUR_READ_ONLY = 11  
01401   };
01402 
01416   SQLDBC_DLLEXPORT
01417   void setResultSetConcurrencyType (ConcurrencyType type);
01418   
01419   enum HoldabilityType {
01420     CURSOR_HOLD_OVER_COMMIT = 20, 
01421     CURSOR_CLOSE_ON_COMMIT = 21   
01422   };
01423 
01424 
01433     SQLDBC_DLLEXPORT
01434     const SQLDBC_Int4 *getRowStatus() const;
01435 
01441     SQLDBC_DLLEXPORT
01442     const SQLDBC_UInt4 getBatchSize() const;
01443 
01454     SQLDBC_DLLEXPORT
01455     const SQLDBC_Retcode addBatch(const char *sql, 
01456                                   SQLDBC_Length sqlLength, 
01457                                   SQLDBC_StringEncoding encoding);
01458     
01465     SQLDBC_DLLEXPORT
01466     const SQLDBC_Retcode addBatch(const char *sql, 
01467                                   SQLDBC_StringEncoding encoding);
01474     SQLDBC_DLLEXPORT
01475     const SQLDBC_Retcode addBatch(const char *sql);
01476     
01481     SQLDBC_DLLEXPORT
01482     const SQLDBC_Retcode executeBatch();
01483 
01487     SQLDBC_DLLEXPORT
01488     void clearBatch();
01489     
01490 protected:
01494     void clearResultSet();
01495     
01496 private:
01497   friend class SQLDBC_Connection;
01498   friend class SQLDBC_PreparedStatement;
01504   SQLDBC_Statement(IFR_Statement *stmt);  
01505   ~SQLDBC_Statement();  
01506   SQLDBC_StatementStorage *m_cstmt;
01507 };
01508 
01509 struct SQLDBC_PreparedStatementStorage;
01510 
01577 class SQLDBC_PreparedStatement 
01578     : public SQLDBC_Statement 
01579 {
01580 public:
01589   SQLDBC_DLLEXPORT
01590   SQLDBC_Retcode prepare(const char *sql, 
01591                          const SQLDBC_Length sqlLength, 
01592                          const SQLDBC_StringEncoding encoding);
01593 
01605   SQLDBC_DLLEXPORT
01606   SQLDBC_Retcode prepare(const char *sql, 
01607                          const SQLDBC_StringEncoding encoding);
01608 
01617   SQLDBC_DLLEXPORT
01618   SQLDBC_Retcode prepare(const char *sql);
01619 
01632   SQLDBC_DLLEXPORT
01633   SQLDBC_Retcode execute();
01634 
01644   SQLDBC_DLLEXPORT
01645   SQLDBC_ParameterMetaData* getParameterMetaData();
01646 
01668   SQLDBC_DLLEXPORT
01669   SQLDBC_ResultSetMetaData* getResultSetMetaData();
01670     
01677   SQLDBC_DLLEXPORT
01678   SQLDBC_Retcode setBatchSize(SQLDBC_UInt4 rowarraysize);
01679             
01718   SQLDBC_DLLEXPORT
01719   SQLDBC_Retcode bindParameter (const SQLDBC_UInt2     Index,
01720                                 const SQLDBC_HostType  Type,
01721                                 void                  *paramAddr,
01722                                 SQLDBC_Length         *LengthIndicator,
01723                                 const SQLDBC_Length    Size,
01724                                 const SQLDBC_Bool      Terminate=SQLDBC_TRUE);
01725 
01768   SQLDBC_DLLEXPORT
01769   SQLDBC_Retcode bindParameterAddr(const SQLDBC_UInt2    Index,
01770                                    const SQLDBC_HostType Type,
01771                                    void                 *paramAddr,
01772                                    SQLDBC_Length        *LengthIndicator,
01773                                    const SQLDBC_Length   Size,
01774                                    const SQLDBC_Bool     Terminate=SQLDBC_TRUE);
01775     
01792   SQLDBC_DLLEXPORT
01793   SQLDBC_Retcode setBindingType(SQLDBC_size_t size);
01794 
01812   SQLDBC_DLLEXPORT
01813   SQLDBC_Retcode nextParameter(SQLDBC_Int2& paramIndex, void*& paramAddr);
01814 
01827   SQLDBC_DLLEXPORT
01828   SQLDBC_Retcode putData(void *paramAddr, SQLDBC_Length  *paramLengthIndicator);
01829 
01830 private:
01831   friend class SQLDBC_Connection;
01840   SQLDBC_PreparedStatement(IFR_PreparedStmt *stmt);
01841   ~SQLDBC_PreparedStatement();
01842   SQLDBC_PreparedStatementStorage *m_cstmt;
01843 };
01844 
01917 class SQLDBC_ConnectProperties
01918 {
01919 public:
01924   SQLDBC_DLLEXPORT
01925   SQLDBC_ConnectProperties();
01926 
01931   SQLDBC_DLLEXPORT
01932   SQLDBC_ConnectProperties(const SQLDBC_ConnectProperties& copy);
01933 
01937   SQLDBC_DLLEXPORT
01938   ~SQLDBC_ConnectProperties();
01939     
01945   SQLDBC_DLLEXPORT
01946   void setProperty(const char *key, const char *value);
01947     
01954   SQLDBC_DLLEXPORT
01955   const char *getProperty(const char *key, const char *defaultvalue=0) const;
01956 
01957 private:
01958   friend class SQLDBC_Connection;
01959   IFR_ConnectProperties *m_prop;
01960 };
01961 
01962 
01973 class SQLDBC_Connection 
01974   : public SQLDBC_ConnectionItem
01975 {
01976 public:
02000   SQLDBC_DLLEXPORT
02001   SQLDBC_Retcode connect(const char *connectURL,
02002                          SQLDBC_Length connectURLLength,
02003                          const char *connectCommand,
02004                          SQLDBC_Length connectCommandLength,
02005                          SQLDBC_StringEncoding connectCommandEncoding,
02006                          SQLDBC_ConnectProperties& connectProperties);
02007 
02029   SQLDBC_DLLEXPORT
02030   SQLDBC_Retcode connect(const char *servernode, 
02031                          SQLDBC_Length servernodeLength,
02032                          const char *serverdb, 
02033                          SQLDBC_Length serverdbLength,
02034                          const char *username, 
02035                          SQLDBC_Length usernameLength,
02036                          const char *password,
02037                          SQLDBC_Length passwordLength,
02038                          const SQLDBC_StringEncoding userpwdEncoding);
02039 
02060   SQLDBC_DLLEXPORT
02061   SQLDBC_Retcode connect(const char *servernode, 
02062                          const char *serverdb, 
02063                          const char *username, 
02064                          const char *password,
02065                          const SQLDBC_StringEncoding userpwdEncoding);
02066 
02081   SQLDBC_DLLEXPORT
02082   SQLDBC_Retcode connect(const char *servernode, 
02083                          const char *serverdb, 
02084                          const char *username, 
02085                          const char *password);
02086   
02118   SQLDBC_DLLEXPORT
02119   SQLDBC_Retcode connect(const char* servernode,
02120                          SQLDBC_Length servernodeLength,
02121                          const char* serverdb,
02122                          SQLDBC_Length serverdbLength,
02123                          const char* username,
02124                          SQLDBC_Length usernameLength,
02125                          const char* password,
02126                          SQLDBC_Length passwordLength,
02127                          const SQLDBC_StringEncoding userpwdEncoding,
02128                          const SQLDBC_ConnectProperties& properties);
02129     
02151   SQLDBC_DLLEXPORT
02152   SQLDBC_Retcode connect(const char* servernode,
02153                          const char* serverdb,
02154                          const char* username,
02155                          const char* password,
02156                          const SQLDBC_StringEncoding userpwdEncoding,
02157                          const SQLDBC_ConnectProperties& properties);
02158 
02174   SQLDBC_DLLEXPORT
02175   SQLDBC_Retcode connect(const char* servernode,
02176                          const char* serverdb,
02177                          const char* username,
02178                          const char* password,
02179                          const SQLDBC_ConnectProperties& properties);
02180 
02192   SQLDBC_DLLEXPORT
02193   SQLDBC_Retcode connect();
02194 
02207   SQLDBC_DLLEXPORT
02208   SQLDBC_Statement *createStatement();
02209     
02218   SQLDBC_DLLEXPORT
02219   SQLDBC_PreparedStatement *createPreparedStatement();
02220     
02230   SQLDBC_DLLEXPORT
02231   SQLDBC_Retcode commit();
02232 
02237   SQLDBC_DLLEXPORT
02238   SQLDBC_Retcode rollback();
02239 
02244   SQLDBC_DLLEXPORT
02245   void releaseStatement(SQLDBC_Statement *stmt);
02246   
02251   SQLDBC_DLLEXPORT
02252   void releaseStatement(SQLDBC_PreparedStatement *stmt);
02253 
02260   SQLDBC_DLLEXPORT
02261   SQLDBC_Retcode cancel();
02262 
02270   SQLDBC_DLLEXPORT
02271   void close();
02272 
02278   SQLDBC_DLLEXPORT
02279   void setAutoCommit(SQLDBC_Bool autocommit);
02280     
02287   SQLDBC_DLLEXPORT
02288   SQLDBC_Bool getAutoCommit() const;
02289 
02299   SQLDBC_DLLEXPORT
02300   void setSQLMode(SQLDBC_SQLMode sqlmode);  
02301 
02312   SQLDBC_DLLEXPORT
02313   SQLDBC_Retcode setTransactionIsolation(SQLDBC_Int4 isolationlevel);
02314     
02321   SQLDBC_DLLEXPORT
02322   SQLDBC_Int4 getTransactionIsolation() const;
02323     
02331   SQLDBC_DLLEXPORT
02332   SQLDBC_Bool isConnected() const;
02333 
02346   SQLDBC_DLLEXPORT
02347   SQLDBC_Int4 getKernelVersion() const;
02348     
02354   SQLDBC_DLLEXPORT
02355   SQLDBC_Bool isUnicodeDatabase() const;
02356 
02361   SQLDBC_DLLEXPORT
02362   SQLDBC_DateTimeFormat::Format getDateTimeFormat() const;
02363 
02364 private:
02365   friend class SQLDBC_Environment;
02372   SQLDBC_Connection(IFR_Connection *conn);
02373 };
02374 
02379 class SQLDBC_Environment
02380 {
02381 public:
02389   SQLDBC_DLLEXPORT SQLDBC_Environment(SQLDBC_IRuntime* runtime);
02390     
02394   SQLDBC_DLLEXPORT
02395   ~SQLDBC_Environment();
02396     
02402   SQLDBC_DLLEXPORT
02403   SQLDBC_Connection *createConnection() const;
02404 
02410   SQLDBC_DLLEXPORT
02411   SQLDBC_Connection *createConnection(SAPDBMem_IRawAllocator& allocator) const;
02412     
02418   SQLDBC_DLLEXPORT
02419   void releaseConnection(SQLDBC_Connection *connection) const;
02420 
02434   SQLDBC_DLLEXPORT
02435   const char *getLibraryVersion();
02436 
02446   SQLDBC_DLLEXPORT
02447   const char *getSDKVersion() const {
02448     return SQLDBCHeaderVersion;
02449   };
02450 
02454     SQLDBC_DLLEXPORT SAPDBMem_IRawAllocator&  getAllocator();
02455 
02456 private:
02457     IFR_Environment *m_env;
02458 };
02459 
02469 SQLDBC_DLLEXPORT SQLDBC_IRuntime *GetClientRuntime(char *errorText, const SQLDBC_Int4 errorTextSize);
02470 
02471 } // namespace SQLDBC
02472 
02473 #endif //SQLDBC_H