Main Page | Class List | File List | Class Members

mimcppapi.h

00001 // MIMCPPAPI.H
00002 //
00003 // Copyright (c) 2004-2005 Mimer Information Technology AB. All rights reserved.
00004 //
00005 
00101 #ifndef __MIMCPPAPI_H__
00102 #define __MIMCPPAPI_H__
00103 
00104 #include <e32std.h>
00105 #include <s32strm.h>
00106 #include <bamdesca.h>
00107 
00108 const TInt KMimerMaxDatabaseName=128;
00109 const TInt KMimerMaxUserName=128;
00110 const TInt KMimerMaxPassword=18;
00111 
00112 enum TMimerErrorCodes {
00113   KErrMimerNoCommandText=-25001,
00114   KErrMimerInvalidBooleanValue=-25002,
00115   KErrMimerTooMuchParameterData=-25003,
00116   KErrMimerNotYetImplemented=-25004,
00117   KErrMimerBase=-0,
00118   KErrMimerInvalidNumericValue=-125,
00119   KErrMimerInvalidColumnNumber=-127,
00120   KErrMimerIntervalNotSingleField=-206,
00121   KErrMimerSIntervalNotSingleField=-207,
00122   KErrMimerInvalidIntervalValue=-208,
00123   KErrMimerInvalidTimeValue=-136000000,
00124   KErrMimerRestrictedDataTypeAttributeViolation=-165,
00125 };
00126 
00127 class RMimerCommand;
00128 class _RMimerCommand;
00129 
00130 class _RMimerDatabase;
00131 
00166 class RMimerDatabase {
00167 public:
00168   RMimerDatabase();
00169   ~RMimerDatabase();
00170 
00199   IMPORT_C void OpenL(const TDesC& aConnectionString);
00200 
00213   IMPORT_C void OpenL(const TDesC& aDatabaseName,const TDesC& aUserName,const TDesC& aPassword);
00214 
00221   IMPORT_C void Close();
00222 
00231   IMPORT_C void BeginTransaction();
00232 
00243   IMPORT_C void CommitL();
00244 
00250   IMPORT_C void RollbackL();
00251 
00260   IMPORT_C TInt GetLastError(TDes& aErrorText);
00261   
00268   IMPORT_C TInt GetLastError();
00269 
00275   IMPORT_C TBool IsOpen();
00276 private:
00277   _RMimerDatabase* internals;
00278 
00279   friend class RMimerCommand;
00280 };
00281 
00282 
00293 class RMimerMetaData {
00294  public:
00299   enum TTypes {
00300     ECharacter=1,           
00301     EChar=1,                
00302     ENumeric=2,             
00303     EDecimal=3,             
00304     EInteger=4,             
00305     ESmallint=5,            
00306     EFloat=6,               
00307     EReal=7,                
00308     EDouble=8,              
00309     ECharacterVarying=12,   
00310     EVarchar=12,            
00311     EBoolean=16,
00312     EBigint=25,             
00313     EBinaryLargeObject=30,  
00314     EBlob=30,               
00315     ECharacterLargeObject=40,
00316     EClob=40,               
00317     EDate=91,               
00318     ETime=92,               
00319     ETimestamp=93,          
00320     EIntervalYear=101,      
00321     EIntervalMonth=102,     
00322     EIntervalDay=103,       
00323     EIntervalHour=104,      
00324     EIntervalMinute=105,    
00325     EIntervalSecond=106,    
00326     EIntervalYearToMonth=107,       
00327     EIntervalDayToHour=108,         
00328     EIntervalDayToMinute=109,       
00329     EIntervalDayToSecond=110,       
00330     EIntervalHourToMinute=111,      
00331     EIntervalHourToSecond=112,      
00332     EIntervalMinuteToSecond=113,    
00333     EMimerNationalCharacter=-8,     
00334     EMimerNchar=-8,                 
00335     EMimerNationalCharacterVarying=-9,            
00336     EMimerNvarchar=-9,                            
00337     EMimerNationalCharacterLargeObject=-10,       
00338     EMimerNclob=-10                               
00339   };
00340 
00347   enum TParamMode {
00348       EParamIn=0x1,       
00349       EParamOut=0x2,      
00350       EParamInOut=0x3     
00351   };
00352 
00353   RMimerMetaData();
00354 
00359   IMPORT_C TInt GetColumnCount() const;
00360 
00375   IMPORT_C TInt GetColumnDisplaySize(TInt aColNo);
00376 
00387   IMPORT_C enum TTypes GetColumnType(TInt aColNo) const;
00388 
00398   IMPORT_C TBufC<50> GetColumnTypeName(TInt aColNo);
00399   
00416   IMPORT_C TInt GetColumnPrecision(TInt aColNo);
00417 
00427   IMPORT_C TInt GetColumnScale(TInt aColNo);
00428 
00446   IMPORT_C TDesC* GetColumnNameLC(TInt aColNo);
00447 
00454   IMPORT_C TBool IsColumnNullable(TInt aColNo);
00455 
00462   IMPORT_C TBool IsColumnReadOnly(TInt aColNo);
00463   
00468   IMPORT_C TInt GetParameterCount() const;
00469 
00476   IMPORT_C enum TParamMode GetParameterMode(TInt aParNo);
00477 
00492   IMPORT_C TInt GetParameterDisplaySize(TInt aParNo);
00493 
00504   IMPORT_C enum TTypes GetParameterType(TInt aParNo) const;
00505 
00515   IMPORT_C TBufC<50> GetParameterTypeName(TInt aParNo);
00516 
00533   IMPORT_C TInt GetParameterPrecision(TInt aParNo);
00534 
00544   IMPORT_C TInt GetParameterScale(TInt aParNo);
00545 
00552   IMPORT_C TInt IsParameterNullable(TInt aParNo);
00553 
00554  protected:
00555  private:
00556   RMimerMetaData(RMimerCommand *command);
00557   RMimerCommand *command;
00558   friend class RMimerResultSet;
00559   friend class RMimerParameterData;
00560   friend class RMimerCommand;
00561 };
00562 
00571 class RMimerParameterData {
00572 public:
00573   RMimerParameterData();
00574 
00575   RMimerParameterData(RMimerCommand *);
00576   ~RMimerParameterData();
00577 
00586 #ifdef _UNICODE
00587   inline void GetDesL(TInt aParNo, TDes& aDes) { GetDes16L(aParNo,aDes); }
00588 #else
00589   inline void GetDesL(TInt aParNo, TDes& aDes) { GetDes8L(aParNo,aDes); }
00590 #endif
00591 
00598   IMPORT_C void GetDes8L(TInt aParNo, TDes8& aDes);
00599 
00606   IMPORT_C void GetDes16L(TInt aParNo, TDes16& aDes);
00607 
00618   IMPORT_C TBool GetBooleanL(TInt aParNo);
00619 
00629   IMPORT_C TReal32 GetReal32L(TInt aParNo);
00630 
00640   IMPORT_C TReal GetRealL(TInt aParNo);
00641 
00648   IMPORT_C TInt GetIntL(TInt aParNo);
00649 
00656   IMPORT_C TUint GetUintL(TInt aParNo);
00657 
00664   IMPORT_C TInt64 GetInt64L(TInt aParNo);
00665 
00683   IMPORT_C TTime GetTimeL(TInt aParNo);
00684 
00699   IMPORT_C TTimeIntervalMicroSeconds GetIntervalMicroSecondsL(TInt aParNo);
00700 
00715   IMPORT_C TTimeIntervalSeconds GetIntervalSecondsL(TInt aParNo);
00716 
00731   IMPORT_C TTimeIntervalMinutes GetIntervalMinutesL(TInt aParNo);
00732 
00747   IMPORT_C TTimeIntervalHours GetIntervalHoursL(TInt aParNo);
00748 
00763   IMPORT_C TTimeIntervalDays GetIntervalDaysL(TInt aParNo);
00764 
00776   IMPORT_C TTimeIntervalMonths GetIntervalMonthsL(TInt aParNo);
00777 
00789   IMPORT_C TTimeIntervalYears GetIntervalYearsL(TInt aParNo);
00790 
00800   IMPORT_C TInt GetLastError(TDes* aErrorText);
00801 
00807   IMPORT_C RMimerMetaData GetMetaDataL();
00808 protected:
00809 private:
00810   RMimerCommand *command;  
00811 };
00812 
00818 class RMimerResultSet : public MDesCArray {
00819 public:
00820   RMimerResultSet();
00821   ~RMimerResultSet();
00822 
00828   IMPORT_C TBool NextL();
00829 
00836   IMPORT_C TBool PreviousL();
00837 
00844   IMPORT_C TBool FirstL();
00845 
00852   IMPORT_C TBool LastL();
00853 
00860   IMPORT_C TBool IsNull(TInt aColNo);
00861 
00865   IMPORT_C void Close();
00866 
00873 #ifdef _UNICODE
00874   inline void GetDesL(TInt aColNo, TDes& aDes) { GetDes16L(aColNo,aDes); }
00875 #else
00876   inline void GetDesL(TInt aColNo, TDes& aDes) { GetDes8L(aColNo,aDes); }
00877 #endif
00878 
00885   IMPORT_C void GetDes8L(TInt aColNo, TDes8& aDes);
00886 
00893   IMPORT_C void GetDes16L(TInt aColNo, TDes16& aDes);
00894 
00895 #ifdef _UNICODE
00896   inline HBufC* GetDesCL(TInt aColNo) { return GetDesC16L(aColNo); }
00897 #else
00898   inline HBufC* GetDesCL(TInt aColNo) { return GetDesC8L(aColNo); }
00899 #endif
00900   IMPORT_C HBufC8* GetDesC8L(TInt aColNo);
00901   IMPORT_C HBufC16* GetDesC16L(TInt aColNo);
00902 
00926   IMPORT_C TBool GetBooleanL(TInt aColNo);
00927 
00938   IMPORT_C TReal32 GetReal32L(TInt aColNo);
00939 
00950   IMPORT_C TReal GetRealL(TInt aColNo);
00951 
00959   IMPORT_C TInt GetIntL(TInt aColNo);
00960 
00968   IMPORT_C TUint GetUintL(TInt aColNo);
00969 
00977   IMPORT_C TInt64 GetInt64L(TInt aColNo);
00978 
00996   IMPORT_C TTime GetTimeL(TInt aColNo);
00997 
01012   IMPORT_C TTimeIntervalMicroSeconds GetIntervalMicroSecondsL(TInt aColNo);
01013 
01028   IMPORT_C TTimeIntervalSeconds GetIntervalSecondsL(TInt aColNo);
01029 
01044   IMPORT_C TTimeIntervalMinutes GetIntervalMinutesL(TInt aColNo);
01045 
01060   IMPORT_C TTimeIntervalHours GetIntervalHoursL(TInt aColNo);
01061 
01076   IMPORT_C TTimeIntervalDays GetIntervalDaysL(TInt aColNo);
01077 
01089   IMPORT_C TTimeIntervalMonths GetIntervalMonthsL(TInt aColNo);
01090 
01102   IMPORT_C TTimeIntervalYears GetIntervalYearsL(TInt aColNo);
01103 
01113   IMPORT_C TInt GetDiagnostics(TDes* aErrorText);
01114 
01120   IMPORT_C RMimerMetaData GetMetaDataL();
01121 
01139   IMPORT_C RReadStream* GetBinaryStreamLC(TInt aColNo);
01140 
01141 public:
01142   IMPORT_C virtual TInt MdcaCount() const;
01143   IMPORT_C virtual TPtrC MdcaPoint(TInt aIndex) const;
01144 protected:
01145   RMimerResultSet(RMimerCommand*);
01146   RMimerCommand* command;
01147   RMimerMetaData metadata;
01148   
01149   TInt curpos;
01150   friend class _RMimerCommand;
01151 private:
01152 };
01153 
01167 class RMimerCommand {
01168 public:
01169   RMimerCommand();
01170   ~RMimerCommand();
01171   
01177   enum TQueryOptions {
01178     EForwardOnly = 0x0,      
01179     EScrollable = 0x1,       
01180     ECloseAtCommit = 0x0,    
01181     EHoldOverCommit = 0x2,   
01182     EReadOnly = 0x0,         
01183     EUpdatable = 0x4         
01184   };
01185 
01186 
01190   enum TStatementType {
01191       EQuery = 1,         
01192       ENonQuery = 2,      
01193       EProcedure = 3      
01194   };
01195 
01211   IMPORT_C void CreateL(RMimerDatabase& aMimerDb,const enum TQueryOptions aQueryOptions=EForwardOnly);
01212 
01248   IMPORT_C void CreateL(RMimerDatabase& aMimerDb,const TDesC& aSQL,const enum TQueryOptions aQueryOptions=EForwardOnly);
01249 
01261   IMPORT_C RMimerParameterData ExecuteProcedureL();
01262 
01275   IMPORT_C TInt ExecuteNonQueryL();
01276 
01293   IMPORT_C RMimerResultSet ExecuteQueryL();
01294 
01300   IMPORT_C void Close();
01301 
01302 
01310   IMPORT_C void Cancel();
01311 
01321   IMPORT_C TInt GetLastError(TDes& aErrorText);
01322 
01329   IMPORT_C TInt GetLastError();
01330 
01352   IMPORT_C int PrepareL();
01353 
01361   IMPORT_C void SetCommandTextL(const TDesC& aSQL);
01362 
01369   IMPORT_C void SetParameterL(TInt aParNo,TInt aValue);
01370 
01377   IMPORT_C void SetParameterL(TInt aParNo,TInt64 aValue);
01378 
01385   IMPORT_C void SetParameterL(TInt aParNo,TTime aValue);
01386 
01393   IMPORT_C void SetParameterL(TInt aParNo,TReal aValue);
01394 
01401   IMPORT_C void SetParameterL(TInt aParNo,TReal32 aValue);
01402 
01409   IMPORT_C void SetParameterL(TInt aParNo,TUint aValue);
01410 
01411 #ifdef NOTYET
01412 
01418   IMPORT_C void SetParameterL(TInt aParNo,RWriteStream aValue);
01419 #endif
01420 
01427   IMPORT_C void SetParameterL(TInt aParNo,TDesC& aValue);
01428 
01429 #ifdef NOTYET
01430 
01436   IMPORT_C void SetParameterL(TInt aParNo,TTimeIntervalYears aValue);
01437 
01444   IMPORT_C void SetParameterL(TInt aParNo,TTimeIntervalMonths aValue);
01445 
01452   IMPORT_C void SetParameterL(TInt aParNo,TTimeIntervalDays aValue);
01453 
01460   IMPORT_C void SetParameterL(TInt aParNo,TTimeIntervalHours aValue);
01461 
01468   IMPORT_C void SetParameterL(TInt aParNo,TTimeIntervalMinutes aValue);
01469 
01476   IMPORT_C void SetParameterL(TInt aParNo,TTimeIntervalSeconds aValue);
01477 #endif
01478 
01484   IMPORT_C TBool ExecuteL();
01485 
01494   IMPORT_C RMimerResultSet GetResultSet();
01495 
01505   IMPORT_C TInt GetUpdateCount();
01506 
01514   IMPORT_C RMimerMetaData GetMetaDataL();
01515 
01516 private:
01517   _RMimerCommand* internals;
01518   RMimerMetaData metadata;
01519 
01520   friend class RMimerParameterData;
01521   friend class RMimerResultSet;
01522   friend class RMimerMetaData;
01523 };
01524 
01525 #endif
01526 
01527 
01528 
01529 
01530 
01531 
01532 

Submit a comment or suggestion Version 9.2.5b of Mimer C++ API for Symbian OS
Copyright Mimer Information Technology AB, Box 1713, SE-751 47 UPPSALA, Sweden. All Rights Reserved.