persistentstorage/sql/SRC/Client/SqlStream.cpp
changeset 0 08ec8eefde2f
child 23 26645d81f48d
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/persistentstorage/sql/SRC/Client/SqlStream.cpp	Fri Jan 22 11:06:30 2010 +0200
@@ -0,0 +1,230 @@
+// Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "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:
+//
+
+#include <sqldb.h>					//RSqlColumnReadStream, RSqlParamWriteStream
+#include "SqlStatementImpl.h"		//CSqlStatementImpl
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+/////////////////////         RSqlColumnReadStream              ////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+/**
+Gives access to column data as a read-only stream of characters,
+
+The function can only be used for text and binary column types.
+
+@param aStmt        The RSqlStatement object to which the referred column belongs.
+@param aColumnIndex The index value identifying the column; this is 0 for the first column.
+
+@return KErrNone, the text column data stream has been opened successfully;
+        KErrNoMemory, an out of memory condition occurred;
+        KErrArgument, the column type is neither text nor binary.
+                      Note that database specific errors categorised as ESqlDbError, and
+                      other system-wide error codes may also be returned.
+
+@capability None
+*/
+EXPORT_C TInt RSqlColumnReadStream::ColumnText(RSqlStatement& aStmt, TInt aColumnIndex)
+	{
+	SQLUTRACE_PROFILER(this);
+	SYMBIAN_TRACE_SQL_EVENTS_ONLY(UTF::Printf(UTF::TTraceContext(UTF::EInternals), KHexIntParam, &aStmt, aColumnIndex));
+	
+	TRAPD(err, Attach(aStmt.Impl().ColumnSourceL(aColumnIndex)));
+	return err;
+	}
+	
+/**
+Gives access to column data as a read-only stream of bytes.
+
+The function can only be used for text and binary column types.
+
+@param aStmt        The RSqlStatement object to which the referred column belongs.
+@param aColumnIndex The index value identifying the column; this is 0 for the first column.
+
+@return KErrNone, the text column data stream has been opened successfully;
+        KErrNoMemory, an out of memory condition occurred;
+        KErrArgument, the column type is neither text nor binary.
+                      Note that database specific errors categorised as ESqlDbError, and
+                      other system-wide error codes may also be returned.
+
+@capability None
+*/
+EXPORT_C TInt RSqlColumnReadStream::ColumnBinary(RSqlStatement& aStmt, TInt aColumnIndex)
+	{
+	SQLUTRACE_PROFILER(this);
+	SYMBIAN_TRACE_SQL_EVENTS_ONLY(UTF::Printf(UTF::TTraceContext(UTF::EInternals), KHexIntParam, &aStmt, aColumnIndex));
+	
+	TRAPD(err, Attach(aStmt.Impl().ColumnSourceL(aColumnIndex)));
+	return err;
+	}
+
+/**
+Gives access to column data as a read-only stream of characters,
+
+The function can only be used for text and binary column types.
+
+@param aStmt        The RSqlStatement object to which the referred column belongs.
+@param aColumnIndex The index value identifying the column; this is 0 for the first column.
+
+@leave  KErrNoMemory, an out of memory condition occurred;
+        KErrArgument, the column type is neither text nor binary.
+                      Note that database specific errors categorised as ESqlDbError, and
+                      other system-wide error codes may also be returned.
+
+@capability None
+*/
+EXPORT_C void RSqlColumnReadStream::ColumnTextL(RSqlStatement& aStmt, TInt aColumnIndex)
+	{
+	SQLUTRACE_PROFILER(this);
+	SYMBIAN_TRACE_SQL_EVENTS_ONLY(UTF::Printf(UTF::TTraceContext(UTF::EInternals), KHexIntParam, &aStmt, aColumnIndex));
+	
+	Attach(aStmt.Impl().ColumnSourceL(aColumnIndex));
+	}
+	
+/**
+Gives access to column data as a read-only stream of bytes.
+
+The function can only be used for text and binary column types.
+
+@param aStmt        The RSqlStatement object to which the referred column belongs.
+@param aColumnIndex The index value identifying the column; this is 0 for the first column.
+
+@leave  KErrNoMemory, an out of memory condition occurred;
+        KErrArgument, the column type is neither text nor binary.
+                      Note that database specific errors categorised as ESqlDbError, and
+                      other system-wide error codes may also be returned.
+
+@capability None
+*/
+EXPORT_C void RSqlColumnReadStream::ColumnBinaryL(RSqlStatement& aStmt, TInt aColumnIndex)
+	{
+	SQLUTRACE_PROFILER(this);
+	SYMBIAN_TRACE_SQL_EVENTS_ONLY(UTF::Printf(UTF::TTraceContext(UTF::EInternals), KHexIntParam, &aStmt, aColumnIndex));
+
+	Attach(aStmt.Impl().ColumnSourceL(aColumnIndex));
+	}
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+/////////////////////         RSqlParamWriteStream              ////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+/**
+Gives access to parameter data as a stream of characters.
+
+NB You need to close the stream after the execution of the statement operation for
+which the parameter is set (RSqlStatement::Next() or RSqlStatement::Exec()).
+
+@param aStmt           The RSqlStatement object to which the referred parameter belongs.
+@param aParameterIndex The index value identifying the parameter; this is 0 for the first parameter.
+
+@return KErrNone, the binary parameter data stream has been opened successfully;
+        KErrNoMemory, an out of memory condition occurred.
+                      Note that database specific errors categorised as ESqlDbError, and
+                      other system-wide error codes may also be returned.
+
+@see RSqlStatement::Next()
+@see RSqlStatement::Exec()
+
+@capability None
+*/
+EXPORT_C TInt RSqlParamWriteStream::BindText(RSqlStatement& aStmt, TInt aParameterIndex)
+	{
+	SQLUTRACE_PROFILER(this);
+	SYMBIAN_TRACE_SQL_EVENTS_ONLY(UTF::Printf(UTF::TTraceContext(UTF::EInternals), KHexIntParam, &aStmt, aParameterIndex));
+
+	TRAPD(err, Attach(aStmt.Impl().ParamSinkL(ESqlSrvStmtTxtParamSink16, aParameterIndex)));
+	return err;
+	}
+	
+/**
+Gives access to parameter data as a stream of bytes.
+
+NB You need to close the stream after the execution of the statement operation for
+which the parameter is set (RSqlStatement::Next() or RSqlStatement::Exec()).
+
+@param aStmt           The RSqlStatement object to which the referred parameter belongs.
+@param aParameterIndex The index value identifying the parameter; this is 0 for the first parameter.
+
+@return KErrNone, the binary parameter data stream has been opened successfully;
+        KErrNoMemory, an out of memory condition occurred.
+                      Note that database specific errors categorised as ESqlDbError, and
+                      other system-wide error codes may also be returned.
+
+@see RSqlStatement::Next()
+@see RSqlStatement::Exec()
+
+@capability None
+*/
+EXPORT_C TInt RSqlParamWriteStream::BindBinary(RSqlStatement& aStmt, TInt aParameterIndex)
+	{
+	SQLUTRACE_PROFILER(this);
+	SYMBIAN_TRACE_SQL_EVENTS_ONLY(UTF::Printf(UTF::TTraceContext(UTF::EInternals), KHexIntParam, &aStmt, aParameterIndex));
+
+	TRAPD(err, Attach(aStmt.Impl().ParamSinkL(ESqlSrvStmtBinParamSink, aParameterIndex)));
+	return err;
+	}
+
+/**
+Gives access to parameter data as a stream of characters.
+
+NB You need to close the stream after the execution of the statement operation for
+which the parameter is set (RSqlStatement::Next() or RSqlStatement::Exec()).
+
+@param aStmt           The RSqlStatement object to which the referred parameter belongs.
+@param aParameterIndex The index value identifying the parameter; this is 0 for the first parameter.
+
+@leave KErrNoMemory, an out of memory condition occurred.
+                      Note that database specific errors categorised as ESqlDbError, and
+                      other system-wide error codes may also be returned.
+
+@see RSqlStatement::Next()
+@see RSqlStatement::Exec()
+
+@capability None
+*/
+EXPORT_C void RSqlParamWriteStream::BindTextL(RSqlStatement& aStmt, TInt aParameterIndex)
+	{
+	SQLUTRACE_PROFILER(this);
+	SYMBIAN_TRACE_SQL_EVENTS_ONLY(UTF::Printf(UTF::TTraceContext(UTF::EInternals), KHexIntParam, &aStmt, aParameterIndex));
+
+	Attach(aStmt.Impl().ParamSinkL(ESqlSrvStmtTxtParamSink16, aParameterIndex));
+	}
+	
+/**
+Gives access to parameter data as a stream of bytes.
+
+NB You need to close the stream after the execution of the statement operation for
+which the parameter is set (RSqlStatement::Next() or RSqlStatement::Exec()).
+
+@param aStmt           The RSqlStatement object to which the referred parameter belongs.
+@param aParameterIndex The index value identifying the parameter; this is 0 for the first parameter.
+
+@leave KErrNoMemory, an out of memory condition occurred.
+                      Note that database specific errors categorised as ESqlDbError, and
+                      other system-wide error codes may also be returned.
+
+@see RSqlStatement::Next()
+@see RSqlStatement::Exec()
+
+@capability None
+*/
+EXPORT_C void RSqlParamWriteStream::BindBinaryL(RSqlStatement& aStmt, TInt aParameterIndex)
+	{
+	SQLUTRACE_PROFILER(this);
+	SYMBIAN_TRACE_SQL_EVENTS_ONLY(UTF::Printf(UTF::TTraceContext(UTF::EInternals), KHexIntParam, &aStmt, aParameterIndex));
+
+	Attach(aStmt.Impl().ParamSinkL(ESqlSrvStmtBinParamSink, aParameterIndex));
+	}
+