00001
00002
00003
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