--- a/installationservices/swcomponentregistry/inc_private/scrdatabase.h Tue Aug 31 15:21:33 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,310 +0,0 @@
-/*
-* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of the License "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-* SCR Data Layer API which performs all interaction with the underlying database.
-*
-*/
-
-
-/**
- @file
- @internalComponent
- @released
-*/
-
-#ifndef SCRSCRDATABASE_H
-#define SCRSCRDATABASE_H
-
-#include <e32base.h>
-#include <f32file.h>
-
-namespace Usif
- {
- // Forward declarations
- class CDatabaseImplementation;
- class CStatementImplementation;
- class CStatement;
-
- NONSHARABLE_CLASS(CDatabase) : public CBase
- /**
- This class provides the means to connect the SCR database and execute all SQL statements.
- It is intended to be used as a singleton instance by the SCR sessions.
- */
- {
- friend class CStatement; // CStatement class needs to access CheckSqlErrCodeL
- public:
- /**
- Creates a new database object with an handle to the given database file.
-
- @param aDatabaseFile The database file handle.
- @param aJournalNameZ The journal file handle.
- @leave KErrNotFound The file opened is not a database file.
- @leave KErrUnknown The database file is missing.
- @leave KErrCorrupt The database disk image is malformed.
- @leave KErrNoMemory An attempt to allocate memory has failed.
- @leave KErrInUse The database file is locked by another thread.
- @leave KErrAccessDenied Unable to open the database file. Access permission may be denied.
- @leave Or other system wide error codes
- */
- IMPORT_C static CDatabase* NewL(RFile& aDatabaseFile, RFile& aJournalFile);
-
- /**
- Creates a new database object with an handle to the given database file and leaves
- the newly created object on the cleanup stack.
-
- @param aDatabaseFile The database file handle.
- @param aJournalNameZ The journal file handle.
- @see CDatabase::NewL
- */
- IMPORT_C static CDatabase* NewLC(RFile& aDatabaseFile, RFile& aJournalFile);
-
- /**
- Destructor. The handle to the database file is closed.
- */
- IMPORT_C ~CDatabase();
-
- /**
- Prepares the provided SQL statement for execution and returns
- the prepared statement object which can be executed later.
-
- The SQL statement must contain a single statement and end with semicolon(;).
-
- @param aStatementStr The satement which will be prepared.
- @return A pointer to the statement object which has got a handle to the result rows set.
- The returned object is left on the cleanup stack.
- @leave KErrNotFound The database file could not be opened for some reason OR the table
- or the requested record could not be found OR the database is empty.
- @leave KErrCorrupt The database schema has changed.
- @leave KErrNoMemory An attempt to allocate memory has failed OR some kind of disk I/O
- operation couldn't be performed (probably no space left on the disk)
- OR the database is too big (larger than 2GB in size).
- @leave KErrInUse A table in the database is locked.
- @leave KErrOverflow Too much data(probably more than 1 megabyte in a single row).
- @leave KErrCancel The operation in progress has been terminated externally.
- @leave KErrNotSupported The library has been used incorrectly,
- @leave KErrAbort Abort due to constraint violation.
- @leave KErrArgument This error value indicates that there was an error in the SQL
- statement that was passed into. Data type mismatch may have been
- occurred OR the provided SQL was badly constructed OR contains
- more than one statement.
- @leave KErrUnknown An internal error in the underlaying database engine occurred.
- @leave KErrGeneral An unspecified error ocurred in the database engine.
- */
- IMPORT_C CStatement* PrepareStatementLC(const TDesC& aStatementStr);
-
- /**
- @return The row id of the most recent successful insert into the database from this connection.
- @leave KErrNotFound If no successful inserts have ever occurred on this database connection.
- */
- IMPORT_C TInt LastInsertedIdL();
-
- private:
- CDatabase();
- void ConstructL(RFile& aDatabaseFile, RFile& aJournalFile);
- void CheckSqlErrCodeL(TInt aErr);
-
- private:
- CDatabaseImplementation* iDbImpl; ///< Pointer to the database implementation object.
- };
-
-
-
- NONSHARABLE_CLASS(CStatement) : public CBase
- /**
- An instance of this class is used to execute all types of SQL statements with or without
- parameters.
- */
- {
- friend class CDatabase; // Only CDatabase can construct an object of this class.
- public:
- IMPORT_C ~CStatement();
-
- /**
- If the SQL statement being executed returns any data, this function makes
- a new row of data ready for processing. The values may be accessed using
- the column access functions (@see CStatement::StrColumnL and @see CStatement::IntColumnL).
-
- When this function is called again to retrieve the next row of data, the previous row data
- is not accessible any more.
-
- If the caller wants to close the statement before retrieving all the rows, it needs to
- just destroy the CStatement object.
-
- @return Returns EFalse if no more rows are available.
- @leave Leaves with one of the error codes listed in @see CDatabase::PerformStatementLC
- */
- IMPORT_C TBool ProcessNextRowL();
-
- /**
- Eexecutes the prepared SQL statement. This function is appropriate to execute
- SQL statements which do NOT return a result row set (e.g. INSERT and UPDATE).
- If the SQL satetement contains parameters, the prepared statement can be bound
- and executed many times.
-
- @param aStatement The satement which will be executed.
- @leave Leaves with one of the leave codes given in @see CStatement::PrepareStatementLC.
- */
- IMPORT_C void ExecuteStatementL();
-
- /**
- Sets the parameter given with the index value to the specified 32-bit integer value.
- A parameter value can be set:
- - immediately after this object has been created
- - after a call to @see CStatement::Reset
- @param aParameterIndex The index value identifying the parameter; the first parameter
- has an index of 1.
- @param The 32-bit integer value to be assigned to the parameter.
- @leave Leaves with one of the error codes listed in @see CDatabase::PerformStatementLC
- */
- IMPORT_C void BindIntL(TInt aParameterIndex, TInt aParameterValue);
-
- /**
- Sets the parameter given with the index value to the specified 64-bit integer value.
- A parameter value can be set:
- - immediately after this object has been created
- - after a call to @see CStatement::Reset
- @param aParameterIndex The index value identifying the parameter; the first parameter
- has an index of 1.
- @param The 64-bit integer value to be assigned to the parameter.
- @leave Leaves with one of the error codes listed in @see CDatabase::PerformStatementLC
- */
- IMPORT_C void BindInt64L(TInt aParameterIndex, TInt64 aParameterValue);
-
- /**
- Sets the parameter given with the index value to the specified 16-bit descriptor.
- A parameter value can be set:
- - immediately after this object has been created
- - after a call to @see CStatement::Reset
- @param aParameterIndex The index value identifying the parameter; the first parameter
- has an index of 1.
- @param aParameterStr The 16-bit descriptor whose content is to be assigned to the parameter.
- @leave KErrArgument If the input string's length is more than 512 characters
- @leave Leaves with one of the error codes listed in @see CDatabase::PerformStatementLC
- */
- IMPORT_C void BindStrL(TInt aParameterIndex, const TDesC &aParameterStr);
-
- /**
- Sets the parameter given with the index value to the specified 8-bit descriptor.
- A parameter value can be set:
- - immediately after this object has been created
- - after a call to @see CStatement::Reset
- @param aParameterIndex The index value identifying the parameter; the first parameter
- has an index of 1.
- @param aParameterStr The 8-bit descriptor whose content is to be assigned to the parameter.
- @leave KErrArgument If the input string's length is more than 512 characters
- @leave Leaves with one of the error codes listed in @see CDatabase::PerformStatementLC
- */
- IMPORT_C void BindBinaryL(TInt aParameterIndex, const TDesC8 &aParameterStr);
-
- /**
- Sets the parameter given with the index value to the specified 8-bit descriptor.
- A parameter value can be set:
- - immediately after this object has been created
- - after a call to @see CStatement::Reset
-
- @param aParameterIndex The index value identifying the parameter; the first parameter
- has an index of 1.
- @param aParameterStr The 8-bit descriptor whose content is to be assigned to the parameter.
- @param aCustomLength The maximum characters allowed
-
- @leave KErrArgument If the input string's length is more than aCustomLength
- @leave Leaves with one of the error codes listed in @see CDatabase::PerformStatementLC
- */
- IMPORT_C void BindBinaryL(TInt aParameterIndex, const TDesC8 &aParameterStr, TUint aCustomLength);
-
- /**
- Retrieves the value of a string column. The caller must know the string column index.
- In addition, the caller must make the copy if they want to process multiple rows at once.
-
- @param aColIdx The index of the column in the result set.
- @return The string value of the column given.
- @leave KErrArgument The supplied column index is not valid or its type is not string.
- @leave Or one of the error codes listed in @see CDatabase::PerformStatementLC
- */
- IMPORT_C TPtrC StrColumnL(TInt aColIdx) const;
-
- /**
- Retrieves the value of a raw binary data column. The caller must know the column index.
- In addition, the caller must make the copy if they want to process multiple rows at once.
-
- @param aColIdx The index of the column in the result set.
- @return The binary value of the column given.
- @leave KErrArgument The supplied column index is not valid or its type is not string.
- @leave Or one of the error codes listed in @see CDatabase::PerformStatementLC
- */
- IMPORT_C TPtrC8 BinaryColumnL(TInt aColIdx) const;
-
- /**
- Retrieves the value of a integer column. The caller must know the integer column index.
- The return value is 64-bit integer.
-
- @param aColIdx The index of the column in the result set.
- @return The integer value of the column given.
- @leave KErrArgument The supplied column index is not valid or its type is not integer.
- @leave Or one of the error codes listed in @see CDatabase::PerformStatementLC
- */
- IMPORT_C TInt64 Int64ColumnL(TInt aColIdx) const;
-
- /**
- Retrieves the value of an integer column. The caller must know the integer column index.
- The return value is 32-bit integer.
-
- @param aColIdx The index of the column in the result set.
- @return The integer value of the column given.
- @leave KErrArgument The supplied column index is not valid or its type is not integer.
- @leave Or one of the error codes listed in @see CDatabase::PerformStatementLC
- */
- IMPORT_C TInt IntColumnL(TInt aColIdx) const;
-
- /**
- Resets this SQL statement object to its initial state and makes it ready to be executed again.
- Any SQL statement parameters that had values bound to them, retain their values.
- If this object processes a parameterised SQL statement, then the parameter values
- can be bound after the call to Reset().
- @leave Leaves with one of the error codes listed in @see CDatabase::PerformStatementLC
- */
- IMPORT_C void ResetL();
-
- /**
- Returns whether the specified field (column) of a row is NULL.
- Note that if the field is NULL, it does NOT mean that the corresponding fields of
- other rows are NULL as well.
- @param aColIdx The index of the column in the result set.
- @return ETrue, if the field is NULL, otherwise EFalse.
- @leave KErrArgument The supplied column index is not valid.
- */
- IMPORT_C TBool IsFieldNullL(TInt aColIdx) const;
-
- private:
- /**
- Creates a new CStatement object on the heap.
-
- @param aDb Refrence to the database object.
- @param aStmtImpl Pointer to the statement implementation. The ownership is also passed
- to the CStatement object.
- @return The newly created CStatement object.
-
- */
- static CStatement* NewL(const CDatabase& aDb, CStatementImplementation* aStmtImpl);
-
- CStatement(const CDatabase& aDb, CStatementImplementation* aStmtImpl);
- void ValidateRequestedColumnL(TInt aColIdx, TInt& aColumnType) const;
-
- private:
- const CDatabase& iDb; ///< Reference to the database object which creates this statement object.
- CStatementImplementation* iStmtImpl; ///< Pointer to the SQL statement implementation
- };
- } // namespace Usif
-
-#endif // SCRSCRDATABASE_H