summaryrefslogtreecommitdiff
path: root/connectivity/source
diff options
context:
space:
mode:
authorAndrzej J.R. Hunt <andrzej@ahunt.org>2013-07-23 16:06:54 +0200
committerAndrzej J.R. Hunt <andrzej@ahunt.org>2013-07-23 19:29:05 +0200
commit2b541c928ca6eaca9cb5dcbe7f4f43f9f0b20101 (patch)
tree7117d02d28b5d537b9a839a2909ecf3a0b24a3bc /connectivity/source
parenta061f0a845323017aec07f6521f6c254740c128d (diff)
Move Statement_Base into it's own file (firebird-sdbc).
This is in preparation of cleanly separating the code shared by PreparedStatment and Statement from the code unique to either of those classes. Change-Id: I419668044e67b25d492a381acab9ee9b1acce7ce
Diffstat (limited to 'connectivity/source')
-rw-r--r--connectivity/source/drivers/firebird/FStatement.cxx428
-rw-r--r--connectivity/source/drivers/firebird/FStatement.hxx106
-rw-r--r--connectivity/source/drivers/firebird/StatementCommonBase.cxx468
-rw-r--r--connectivity/source/drivers/firebird/StatementCommonBase.hxx154
4 files changed, 629 insertions, 527 deletions
diff --git a/connectivity/source/drivers/firebird/FStatement.cxx b/connectivity/source/drivers/firebird/FStatement.cxx
index c58db4438267..9c435809e114 100644
--- a/connectivity/source/drivers/firebird/FStatement.cxx
+++ b/connectivity/source/drivers/firebird/FStatement.cxx
@@ -38,15 +38,9 @@
#include "FResultSet.hxx"
#include "Util.hxx"
-#include <ibase.h>
-
-#include <comphelper/sequence.hxx>
-#include <cppuhelper/typeprovider.hxx>
#include <osl/diagnose.h>
#include <osl/thread.h>
-#include <propertyids.hxx>
#include <rtl/ustrbuf.hxx>
-#include <TConnection.hxx>
#include <com/sun/star/sdbc/ResultSetConcurrency.hpp>
#include <com/sun/star/sdbc/ResultSetType.hpp>
@@ -70,316 +64,6 @@ using namespace ::osl;
using namespace ::rtl;
using namespace ::std;
-OStatement_Base::OStatement_Base(OConnection* _pConnection)
- : OStatement_BASE(_pConnection->getMutex()),
- OPropertySetHelper(OStatement_BASE::rBHelper),
- m_pConnection(_pConnection),
- rBHelper(OStatement_BASE::rBHelper)
-{
- m_pConnection->acquire();
-// // enabling the XSQLDA to accommodate up to 10 parameter items (DEFAULT)
-// m_INsqlda = (XSQLDA *)malloc(XSQLDA_LENGTH(10));
-// m_INsqlda->version = SQLDA_VERSION1;
-// m_INsqlda->sqln = 10;
-// m_INsqlda->sqld = 0;
-
-}
-
-OStatement_Base::~OStatement_Base()
-{
-}
-
-void OStatement_Base::disposeResultSet()
-{
- //free the cursor if alive
-// uno::Reference< XComponent > xComp(m_xResultSet.get(), UNO_QUERY);
-// if (xComp.is())
-// xComp->dispose();
-// m_xResultSet = uno::Reference< XResultSet>();
-}
-
-//-----------------------------------------------------------------------------
-Any SAL_CALL OStatement_Base::queryInterface( const Type & rType ) throw(RuntimeException)
-{
- Any aRet = OStatement_BASE::queryInterface(rType);
- if(!aRet.hasValue())
- aRet = OPropertySetHelper::queryInterface(rType);
- return aRet;
-}
-// -------------------------------------------------------------------------
-Sequence< Type > SAL_CALL OStatement_Base::getTypes( ) throw(RuntimeException)
-{
- ::cppu::OTypeCollection aTypes(
- ::cppu::UnoType< uno::Reference< XMultiPropertySet > >::get(),
- ::cppu::UnoType< uno::Reference< XFastPropertySet > >::get(),
- ::cppu::UnoType< uno::Reference< XPropertySet > >::get());
-
- return concatSequences(aTypes.getTypes(),OStatement_BASE::getTypes());
-}
-// -------------------------------------------------------------------------
-
-void SAL_CALL OStatement_Base::cancel( ) throw(RuntimeException)
-{
- MutexGuard aGuard(m_pConnection->getMutex());
- checkDisposed(OStatement_BASE::rBHelper.bDisposed);
- // cancel the current sql statement
-}
-// -------------------------------------------------------------------------
-
-void SAL_CALL OStatement_Base::close( ) throw(SQLException, RuntimeException)
-{
- SAL_INFO("connectivity.firebird", "close().");
-
- {
- MutexGuard aGuard(m_pConnection->getMutex());
- checkDisposed(OStatement_BASE::rBHelper.bDisposed);
-
- }
- dispose();
-}
-
-Any SAL_CALL OStatement::queryInterface( const Type & rType ) throw(RuntimeException)
-{
- Any aRet = ::cppu::queryInterface(rType,static_cast< XBatchExecution*> (this));
- if(!aRet.hasValue())
- aRet = OStatement_Base::queryInterface(rType);
- return aRet;
-}
-
-// ---- XStatement -----------------------------------------------------------
-sal_Int32 SAL_CALL OStatement_Base::executeUpdate(const OUString& sqlIn)
- throw(SQLException, RuntimeException)
-{
- // TODO: close ResultSet if existing -- so so in all 3 execute methods.
- MutexGuard aGuard(m_pConnection->getMutex());
- checkDisposed(OStatement_BASE::rBHelper.bDisposed);
-
- const OUString sql = sanitizeSqlString(sqlIn);
-
- int aErr = isc_dsql_execute_immediate(m_statusVector,
- &m_pConnection->getDBHandle(),
- &m_pConnection->getTransaction(),
- 0,
- OUStringToOString(sql, RTL_TEXTENCODING_UTF8).getStr(),
- 1,
- NULL);
-
- if (aErr)
- SAL_WARN("connectivity.firebird", "isc_dsql_execute_immediate failed" );
-
- m_pConnection->evaluateStatusVector(m_statusVector, sql, *this);
- // TODO: get number of changed rows with SELECT ROW_COUNT (use executeQuery)
- // return getUpdateCount();
- return 0;
-}
-
-OUString OStatement_Base::sanitizeSqlString(const OUString& sqlIn)
-{
- // TODO: verify this is all we need.
- static const sal_Unicode pattern('"');
- static const sal_Unicode empty(' ');
- return sqlIn.replace(pattern, empty);
-}
-
-int OStatement_Base::prepareAndDescribeStatement(const OUString& sqlIn,
- isc_stmt_handle& aStatementHandle,
- XSQLDA*& pOutSqlda,
- XSQLDA* pInSqlda)
-{
- MutexGuard aGuard(m_pConnection->getMutex());
-
- const OUString sql = sanitizeSqlString(sqlIn);
-
- if (!pOutSqlda)
- {
- pOutSqlda = (XSQLDA*) malloc(XSQLDA_LENGTH(10));
- pOutSqlda->version = SQLDA_VERSION1;
- pOutSqlda->sqln = 10;
- }
-
- int aErr = 0;
-
- aErr = isc_dsql_allocate_statement(m_statusVector,
- &m_pConnection->getDBHandle(),
- &aStatementHandle);
-
- if (aErr)
- {
- SAL_WARN("connectivity.firebird", "isc_dsql_allocate_statement failed");
- return aErr;
- }
- else
- {
- aErr = isc_dsql_prepare(m_statusVector,
- &m_pConnection->getTransaction(),
- &aStatementHandle,
- 0,
- OUStringToOString(sql, RTL_TEXTENCODING_UTF8).getStr(),
- 1,
- pInSqlda);
- }
-
- if (aErr)
- {
- SAL_WARN("connectivity.firebird", "isc_dsql_prepare failed");
- return aErr;
- }
- else
- {
- aErr = isc_dsql_describe(m_statusVector,
- &aStatementHandle,
- 1,
- pOutSqlda);
- }
-
- // Ensure we have enough space in pOutSqlda
- if (aErr)
- {
- SAL_WARN("connectivity.firebird", "isc_dsql_describe failed");
- return aErr;
- }
- else if (!aErr && (pOutSqlda->sqld > pOutSqlda->sqln))
- {
- int n = pOutSqlda->sqld;
- free(pOutSqlda);
- pOutSqlda = (XSQLDA*) malloc(XSQLDA_LENGTH(n));
- pOutSqlda->version = SQLDA_VERSION1;
- aErr = isc_dsql_describe(m_statusVector,
- &aStatementHandle,
- 1,
- pOutSqlda);
- }
-
- // Process each XSQLVAR parameter structure in the output XSQLDA
- if (aErr)
- {
- SAL_WARN("connectivity.firebird","isc_dsql_describe failed when resizing pOutSqlda");
- return aErr;
- }
- else
- {
- mallocSQLVAR(pOutSqlda);
- }
-
- return aErr;
-}
-
-uno::Reference< XResultSet > SAL_CALL OStatement_Base::executeQuery(const OUString& sqlIn) throw(SQLException, RuntimeException)
-{
- MutexGuard aGuard(m_pConnection->getMutex());
- checkDisposed(OStatement_BASE::rBHelper.bDisposed);
-
- const OUString sql = sanitizeSqlString(sqlIn);
-
- XSQLDA* pOutSqlda = 0;
- isc_stmt_handle aStatementHandle = 0;
- int aErr = 0;
-
-
- aErr = prepareAndDescribeStatement(sql,
- aStatementHandle,
- pOutSqlda);
- if (aErr)
- {
- SAL_WARN("connectivity.firebird", "prepareAndDescribeStatement failed");
- }
- else
- {
- aErr = isc_dsql_execute(m_statusVector,
- &m_pConnection->getTransaction(),
- &aStatementHandle,
- 1,
- NULL);
- if (aErr)
- SAL_WARN("connectivity.firebird", "isc_dsql_execute failed" );
- }
-
- uno::Reference< OResultSet > pResult(new OResultSet(m_pConnection,
- uno::Reference< XStatement >(this),
- aStatementHandle,
- pOutSqlda));
- //initializeResultSet( pResult.get() );
- m_xResultSet = pResult.get();
-
- // TODO: deal with cleanup
-// close();
- m_pConnection->evaluateStatusVector(m_statusVector, sql, *this);
- return m_xResultSet;
-}
-
-sal_Bool SAL_CALL OStatement_Base::execute(const OUString& sqlIn) throw(SQLException, RuntimeException)
-{
- SAL_INFO("connectivity.firebird", "executeQuery(). "
- "Got called with sql: " << sqlIn);
-
- MutexGuard aGuard(m_pConnection->getMutex());
- checkDisposed(OStatement_BASE::rBHelper.bDisposed);
-
- XSQLDA* pOutSqlda = 0;
- isc_stmt_handle aStatementHandle = 0;
- int aErr = 0;
-
- const OUString sql = sanitizeSqlString(sqlIn);
-
- aErr = prepareAndDescribeStatement(sql,
- aStatementHandle,
- pOutSqlda);
-
- if (aErr)
- {
- SAL_WARN("connectivity.firebird", "prepareAndDescribeStatement failed" );
- }
- else
- {
- aErr = isc_dsql_execute(m_statusVector,
- &m_pConnection->getTransaction(),
- &aStatementHandle,
- 1,
- NULL);
- if (aErr)
- SAL_WARN("connectivity.firebird", "isc_dsql_execute failed" );
- }
-
- m_pConnection->evaluateStatusVector(m_statusVector, sql, *this);
-
- // returns true when a resultset is available
- return sal_False;
-}
-
-uno::Reference< XConnection > SAL_CALL OStatement_Base::getConnection()
- throw(SQLException, RuntimeException)
-{
- MutexGuard aGuard(m_pConnection->getMutex());
- checkDisposed(OStatement_BASE::rBHelper.bDisposed);
-
- return (uno::Reference< XConnection >)m_pConnection;
-}
-
-// ---- XMultipleResults - UNSUPPORTED ----------------------------------------
-uno::Reference< XResultSet > SAL_CALL OStatement_Base::getResultSet() throw(SQLException, RuntimeException)
-{
- // TODO: verify we really can't support this
- return uno::Reference< XResultSet >();
-// MutexGuard aGuard( m_aMutex );
-// checkDisposed(OStatement_BASE::rBHelper.bDisposed);
-
-// return m_xResultSet;
-}
-
-sal_Bool SAL_CALL OStatement_Base::getMoreResults() throw(SQLException, RuntimeException)
-{
- // TODO: verify we really can't support this
- return sal_False;
-// MutexGuard aGuard( m_aMutex );
-// checkDisposed(OStatement_BASE::rBHelper.bDisposed);
-}
-
-sal_Int32 SAL_CALL OStatement_Base::getUpdateCount() throw(SQLException, RuntimeException)
-{
- // TODO: verify we really can't support this
- return 0;
-}
-
// ---- XBatchExecution - UNSUPPORTED ----------------------------------------
void SAL_CALL OStatement::addBatch(const OUString& sql)
throw(SQLException, RuntimeException)
@@ -396,112 +80,8 @@ Sequence< sal_Int32 > SAL_CALL OStatement::executeBatch() throw(SQLException, Ru
return Sequence< sal_Int32 >();
}
-// ---- XWarningsSupplier - UNSUPPORTED ----------------------------------------
-Any SAL_CALL OStatement_Base::getWarnings() throw(SQLException, RuntimeException)
-{
- return Any();
-}
-
-void SAL_CALL OStatement_Base::clearWarnings() throw(SQLException, RuntimeException)
-{
-}
-
-::cppu::IPropertyArrayHelper* OStatement_Base::createArrayHelper( ) const
-{
- // this properties are define by the service statement
- // they must in alphabetic order
- Sequence< Property > aProps(10);
- Property* pProperties = aProps.getArray();
- sal_Int32 nPos = 0;
- DECL_PROP0(CURSORNAME, OUString);
- DECL_BOOL_PROP0(ESCAPEPROCESSING);
- DECL_PROP0(FETCHDIRECTION,sal_Int32);
- DECL_PROP0(FETCHSIZE, sal_Int32);
- DECL_PROP0(MAXFIELDSIZE,sal_Int32);
- DECL_PROP0(MAXROWS, sal_Int32);
- DECL_PROP0(QUERYTIMEOUT,sal_Int32);
- DECL_PROP0(RESULTSETCONCURRENCY,sal_Int32);
- DECL_PROP0(RESULTSETTYPE,sal_Int32);
- DECL_BOOL_PROP0(USEBOOKMARKS);
-
- return new ::cppu::OPropertyArrayHelper(aProps);
-}
-
-
-::cppu::IPropertyArrayHelper & OStatement_Base::getInfoHelper()
-{
- return *const_cast<OStatement_Base*>(this)->getArrayHelper();
-}
-// -------------------------------------------------------------------------
-sal_Bool OStatement_Base::convertFastPropertyValue(
- Any & rConvertedValue,
- Any & rOldValue,
- sal_Int32 nHandle,
- const Any& rValue )
- throw (IllegalArgumentException)
-{
- (void) rConvertedValue;
- (void) rOldValue;
- (void) nHandle;
- (void) rValue;
- sal_Bool bConverted = sal_False;
- // here we have to try to convert
- return bConverted;
-}
-// -------------------------------------------------------------------------
-void OStatement_Base::setFastPropertyValue_NoBroadcast(sal_Int32 nHandle,const Any& rValue) throw (Exception)
-{
- (void) rValue;
- // set the value to what ever is necessary
- switch(nHandle)
- {
- case PROPERTY_ID_QUERYTIMEOUT:
- case PROPERTY_ID_MAXFIELDSIZE:
- case PROPERTY_ID_MAXROWS:
- case PROPERTY_ID_CURSORNAME:
- case PROPERTY_ID_RESULTSETCONCURRENCY:
- case PROPERTY_ID_RESULTSETTYPE:
- case PROPERTY_ID_FETCHDIRECTION:
- case PROPERTY_ID_FETCHSIZE:
- case PROPERTY_ID_ESCAPEPROCESSING:
- case PROPERTY_ID_USEBOOKMARKS:
- default:
- ;
- }
-}
-// -------------------------------------------------------------------------
-void OStatement_Base::getFastPropertyValue(Any& rValue,sal_Int32 nHandle) const
-{
- (void) rValue;
- switch(nHandle)
- {
- case PROPERTY_ID_QUERYTIMEOUT:
- case PROPERTY_ID_MAXFIELDSIZE:
- case PROPERTY_ID_MAXROWS:
- case PROPERTY_ID_CURSORNAME:
- case PROPERTY_ID_RESULTSETCONCURRENCY:
- case PROPERTY_ID_RESULTSETTYPE:
- case PROPERTY_ID_FETCHDIRECTION:
- case PROPERTY_ID_FETCHSIZE:
- case PROPERTY_ID_ESCAPEPROCESSING:
- case PROPERTY_ID_USEBOOKMARKS:
- default:
- ;
- }
-}
-
IMPLEMENT_SERVICE_INFO(OStatement,"com.sun.star.sdbcx.OStatement","com.sun.star.sdbc.Statement");
-void SAL_CALL OStatement_Base::acquire() throw()
-{
- OStatement_BASE::acquire();
-}
-
-void SAL_CALL OStatement_Base::release() throw()
-{
- OStatement_BASE::release();
-}
-
void SAL_CALL OStatement::acquire() throw()
{
OStatement_Base::acquire();
@@ -512,8 +92,12 @@ void SAL_CALL OStatement::release() throw()
OStatement_Base::release();
}
-uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL OStatement_Base::getPropertySetInfo( ) throw(RuntimeException)
+Any SAL_CALL OStatement::queryInterface( const Type & rType ) throw(RuntimeException)
{
- return ::cppu::OPropertySetHelper::createPropertySetInfo(getInfoHelper());
+ Any aRet = ::cppu::queryInterface(rType,static_cast< XBatchExecution*> (this));
+ if(!aRet.hasValue())
+ aRet = OStatement_Base::queryInterface(rType);
+ return aRet;
}
+
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/connectivity/source/drivers/firebird/FStatement.hxx b/connectivity/source/drivers/firebird/FStatement.hxx
index 584afa9b45c8..07c5afb8bc4d 100644
--- a/connectivity/source/drivers/firebird/FStatement.hxx
+++ b/connectivity/source/drivers/firebird/FStatement.hxx
@@ -36,117 +36,13 @@
#ifndef CONNECTIVITY_FIREBIRD_STATEMENT_HXX
#define CONNECTIVITY_FIREBIRD_STATEMENT_HXX
-#include <com/sun/star/sdbc/XStatement.hpp>
-#include <com/sun/star/sdbc/XWarningsSupplier.hpp>
-#include <com/sun/star/sdbc/XMultipleResults.hpp>
-#include <com/sun/star/sdbc/XBatchExecution.hpp>
-#include <com/sun/star/sdbc/XCloseable.hpp>
-#include <com/sun/star/sdbc/SQLWarning.hpp>
-#include <com/sun/star/util/XCancellable.hpp>
-#include <cppuhelper/compbase5.hxx>
-#include "FConnection.hxx"
-#include <list>
-#include "connectivity/OSubComponent.hxx"
-#include <com/sun/star/lang/XServiceInfo.hpp>
+#include "StatementCommonBase.hxx"
namespace connectivity
{
namespace firebird
{
- typedef ::cppu::WeakComponentImplHelper5< ::com::sun::star::sdbc::XStatement,
- ::com::sun::star::sdbc::XWarningsSupplier,
- ::com::sun::star::util::XCancellable,
- ::com::sun::star::sdbc::XCloseable,
- ::com::sun::star::sdbc::XMultipleResults> OStatement_BASE;
-
- //**************************************************************
- //************ Class: OStatement_Base
- // is a base class for the normal statement and for the prepared statement
- //**************************************************************
- class OStatement_Base : public OStatement_BASE,
- public ::cppu::OPropertySetHelper,
- public OPropertyArrayUsageHelper<OStatement_Base>
-
- {
- protected:
- ::com::sun::star::uno::WeakReference< ::com::sun::star::sdbc::XResultSet> m_xResultSet; // The last ResultSet created
- // for this Statement
-
- ::std::list< ::rtl::OUString> m_aBatchList;
-
- OConnection* m_pConnection;
-
- ISC_STATUS_ARRAY m_statusVector;
- protected:
-
- void disposeResultSet();
-
- // OPropertyArrayUsageHelper
- virtual ::cppu::IPropertyArrayHelper* createArrayHelper( ) const;
- // OPropertySetHelper
- using OPropertySetHelper::getFastPropertyValue;
- virtual ::cppu::IPropertyArrayHelper & SAL_CALL getInfoHelper();
- virtual sal_Bool SAL_CALL convertFastPropertyValue(
- ::com::sun::star::uno::Any & rConvertedValue,
- ::com::sun::star::uno::Any & rOldValue,
- sal_Int32 nHandle,
- const ::com::sun::star::uno::Any& rValue )
- throw (::com::sun::star::lang::IllegalArgumentException);
- virtual void SAL_CALL setFastPropertyValue_NoBroadcast(
- sal_Int32 nHandle,
- const ::com::sun::star::uno::Any& rValue) throw (::com::sun::star::uno::Exception);
- virtual void SAL_CALL getFastPropertyValue(
- ::com::sun::star::uno::Any& rValue,
- sal_Int32 nHandle) const;
- virtual ~OStatement_Base();
- int prepareAndDescribeStatement(const OUString& sqlIn,
- isc_stmt_handle& aStatementHandle,
- XSQLDA*& pOutSqlda,
- XSQLDA* pInSqlda=0);
- ::rtl::OUString sanitizeSqlString(const OUString& sqlIn);
- public:
-
- ::cppu::OBroadcastHelper& rBHelper;
- OStatement_Base(OConnection* _pConnection);
- using OStatement_BASE::operator ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >;
-
- // OComponentHelper
- virtual void SAL_CALL disposing(void){OStatement_BASE::disposing();}
- // XInterface
- virtual void SAL_CALL release() throw();
- virtual void SAL_CALL acquire() throw();
- // XInterface
- virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type & rType ) throw(::com::sun::star::uno::RuntimeException);
- //XTypeProvider
- virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes( ) throw(::com::sun::star::uno::RuntimeException);
-
- // XPropertySet
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo( ) throw(::com::sun::star::uno::RuntimeException);
- // XStatement
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet > SAL_CALL executeQuery( const ::rtl::OUString& sql ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException) ;
- virtual sal_Int32 SAL_CALL executeUpdate( const ::rtl::OUString& sqlIn ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException) ;
- virtual sal_Bool SAL_CALL execute( const ::rtl::OUString& sql ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException) ;
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection > SAL_CALL getConnection( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException) ;
-
- // XWarningsSupplier - UNSUPPORTED
- virtual ::com::sun::star::uno::Any SAL_CALL getWarnings( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL clearWarnings( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- // XMultipleResults - UNSUPPORTED
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet > SAL_CALL getResultSet( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Int32 SAL_CALL getUpdateCount( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL getMoreResults( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-
- // XCancellable
- virtual void SAL_CALL cancel( ) throw(::com::sun::star::uno::RuntimeException);
- // XCloseable
- virtual void SAL_CALL close( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-
- // other methods
- OConnection* getOwnConnection() const { return m_pConnection;}
-
- };
-
class OStatement : public OStatement_Base,
public ::com::sun::star::sdbc::XBatchExecution,
public ::com::sun::star::lang::XServiceInfo
diff --git a/connectivity/source/drivers/firebird/StatementCommonBase.cxx b/connectivity/source/drivers/firebird/StatementCommonBase.cxx
new file mode 100644
index 000000000000..4816f0f25b44
--- /dev/null
+++ b/connectivity/source/drivers/firebird/StatementCommonBase.cxx
@@ -0,0 +1,468 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * The Contents of this file are made available subject to the terms of
+ * the BSD license.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
+ * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
+ * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ *************************************************************************/
+
+#include "FResultSet.hxx"
+#include "StatementCommonBase.hxx"
+#include "Util.hxx"
+
+#include <comphelper/sequence.hxx>
+#include <cppuhelper/typeprovider.hxx>
+#include <propertyids.hxx>
+#include <TConnection.hxx>
+
+using namespace ::connectivity::firebird;
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::lang;
+using namespace ::com::sun::star::beans;
+using namespace ::com::sun::star::sdbc;
+using namespace ::com::sun::star::sdbcx;
+using namespace ::com::sun::star::container;
+using namespace ::com::sun::star::io;
+using namespace ::com::sun::star::util;
+
+using namespace ::comphelper;
+using namespace ::osl;
+using namespace ::rtl;
+using namespace ::std;
+
+OStatement_Base::OStatement_Base(OConnection* _pConnection)
+ : OStatement_BASE(_pConnection->getMutex()),
+ OPropertySetHelper(OStatement_BASE::rBHelper),
+ m_pConnection(_pConnection),
+ rBHelper(OStatement_BASE::rBHelper)
+{
+ m_pConnection->acquire();
+}
+
+OStatement_Base::~OStatement_Base()
+{
+}
+
+void OStatement_Base::disposeResultSet()
+{
+ //free the cursor if alive
+// uno::Reference< XComponent > xComp(m_xResultSet.get(), UNO_QUERY);
+// if (xComp.is())
+// xComp->dispose();
+// m_xResultSet = uno::Reference< XResultSet>();
+}
+
+//-----------------------------------------------------------------------------
+Any SAL_CALL OStatement_Base::queryInterface( const Type & rType ) throw(RuntimeException)
+{
+ Any aRet = OStatement_BASE::queryInterface(rType);
+ if(!aRet.hasValue())
+ aRet = OPropertySetHelper::queryInterface(rType);
+ return aRet;
+}
+// -------------------------------------------------------------------------
+Sequence< Type > SAL_CALL OStatement_Base::getTypes( ) throw(RuntimeException)
+{
+ ::cppu::OTypeCollection aTypes(
+ ::cppu::UnoType< uno::Reference< XMultiPropertySet > >::get(),
+ ::cppu::UnoType< uno::Reference< XFastPropertySet > >::get(),
+ ::cppu::UnoType< uno::Reference< XPropertySet > >::get());
+
+ return concatSequences(aTypes.getTypes(),OStatement_BASE::getTypes());
+}
+// -------------------------------------------------------------------------
+
+void SAL_CALL OStatement_Base::cancel( ) throw(RuntimeException)
+{
+ MutexGuard aGuard(m_pConnection->getMutex());
+ checkDisposed(OStatement_BASE::rBHelper.bDisposed);
+ // cancel the current sql statement
+}
+// -------------------------------------------------------------------------
+
+void SAL_CALL OStatement_Base::close( ) throw(SQLException, RuntimeException)
+{
+ SAL_INFO("connectivity.firebird", "close().");
+
+ {
+ MutexGuard aGuard(m_pConnection->getMutex());
+ checkDisposed(OStatement_BASE::rBHelper.bDisposed);
+
+ }
+ dispose();
+}
+
+// ---- XStatement -----------------------------------------------------------
+sal_Int32 SAL_CALL OStatement_Base::executeUpdate(const OUString& sqlIn)
+ throw(SQLException, RuntimeException)
+{
+ // TODO: close ResultSet if existing -- so so in all 3 execute methods.
+ MutexGuard aGuard(m_pConnection->getMutex());
+ checkDisposed(OStatement_BASE::rBHelper.bDisposed);
+
+ const OUString sql = sanitizeSqlString(sqlIn);
+
+ int aErr = isc_dsql_execute_immediate(m_statusVector,
+ &m_pConnection->getDBHandle(),
+ &m_pConnection->getTransaction(),
+ 0,
+ OUStringToOString(sql, RTL_TEXTENCODING_UTF8).getStr(),
+ 1,
+ NULL);
+
+ if (aErr)
+ SAL_WARN("connectivity.firebird", "isc_dsql_execute_immediate failed" );
+
+ m_pConnection->evaluateStatusVector(m_statusVector, sql, *this);
+ // TODO: get number of changed rows with SELECT ROW_COUNT (use executeQuery)
+ // return getUpdateCount();
+ return 0;
+}
+
+OUString OStatement_Base::sanitizeSqlString(const OUString& sqlIn)
+{
+ // TODO: verify this is all we need.
+ static const sal_Unicode pattern('"');
+ static const sal_Unicode empty(' ');
+ return sqlIn.replace(pattern, empty);
+}
+
+int OStatement_Base::prepareAndDescribeStatement(const OUString& sqlIn,
+ isc_stmt_handle& aStatementHandle,
+ XSQLDA*& pOutSqlda,
+ XSQLDA* pInSqlda)
+{
+ MutexGuard aGuard(m_pConnection->getMutex());
+
+ const OUString sql = sanitizeSqlString(sqlIn);
+
+ if (!pOutSqlda)
+ {
+ pOutSqlda = (XSQLDA*) malloc(XSQLDA_LENGTH(10));
+ pOutSqlda->version = SQLDA_VERSION1;
+ pOutSqlda->sqln = 10;
+ }
+
+ int aErr = 0;
+
+ aErr = isc_dsql_allocate_statement(m_statusVector,
+ &m_pConnection->getDBHandle(),
+ &aStatementHandle);
+
+ if (aErr)
+ {
+ SAL_WARN("connectivity.firebird", "isc_dsql_allocate_statement failed");
+ return aErr;
+ }
+ else
+ {
+ aErr = isc_dsql_prepare(m_statusVector,
+ &m_pConnection->getTransaction(),
+ &aStatementHandle,
+ 0,
+ OUStringToOString(sql, RTL_TEXTENCODING_UTF8).getStr(),
+ 1,
+ pInSqlda);
+ }
+
+ if (aErr)
+ {
+ SAL_WARN("connectivity.firebird", "isc_dsql_prepare failed");
+ return aErr;
+ }
+ else
+ {
+ aErr = isc_dsql_describe(m_statusVector,
+ &aStatementHandle,
+ 1,
+ pOutSqlda);
+ }
+
+ // Ensure we have enough space in pOutSqlda
+ if (aErr)
+ {
+ SAL_WARN("connectivity.firebird", "isc_dsql_describe failed");
+ return aErr;
+ }
+ else if (!aErr && (pOutSqlda->sqld > pOutSqlda->sqln))
+ {
+ int n = pOutSqlda->sqld;
+ free(pOutSqlda);
+ pOutSqlda = (XSQLDA*) malloc(XSQLDA_LENGTH(n));
+ pOutSqlda->version = SQLDA_VERSION1;
+ aErr = isc_dsql_describe(m_statusVector,
+ &aStatementHandle,
+ 1,
+ pOutSqlda);
+ }
+
+ // Process each XSQLVAR parameter structure in the output XSQLDA
+ if (aErr)
+ {
+ SAL_WARN("connectivity.firebird","isc_dsql_describe failed when resizing pOutSqlda");
+ return aErr;
+ }
+ else
+ {
+ mallocSQLVAR(pOutSqlda);
+ }
+
+ return aErr;
+}
+
+uno::Reference< XResultSet > SAL_CALL OStatement_Base::executeQuery(const OUString& sqlIn) throw(SQLException, RuntimeException)
+{
+ MutexGuard aGuard(m_pConnection->getMutex());
+ checkDisposed(OStatement_BASE::rBHelper.bDisposed);
+
+ const OUString sql = sanitizeSqlString(sqlIn);
+
+ XSQLDA* pOutSqlda = 0;
+ isc_stmt_handle aStatementHandle = 0;
+ int aErr = 0;
+
+
+ aErr = prepareAndDescribeStatement(sql,
+ aStatementHandle,
+ pOutSqlda);
+ if (aErr)
+ {
+ SAL_WARN("connectivity.firebird", "prepareAndDescribeStatement failed");
+ }
+ else
+ {
+ aErr = isc_dsql_execute(m_statusVector,
+ &m_pConnection->getTransaction(),
+ &aStatementHandle,
+ 1,
+ NULL);
+ if (aErr)
+ SAL_WARN("connectivity.firebird", "isc_dsql_execute failed" );
+ }
+
+ uno::Reference< OResultSet > pResult(new OResultSet(m_pConnection,
+ uno::Reference< XStatement >(this),
+ aStatementHandle,
+ pOutSqlda));
+ //initializeResultSet( pResult.get() );
+ m_xResultSet = pResult.get();
+
+ // TODO: deal with cleanup
+// close();
+ m_pConnection->evaluateStatusVector(m_statusVector, sql, *this);
+ return m_xResultSet;
+}
+
+sal_Bool SAL_CALL OStatement_Base::execute(const OUString& sqlIn) throw(SQLException, RuntimeException)
+{
+ SAL_INFO("connectivity.firebird", "executeQuery(). "
+ "Got called with sql: " << sqlIn);
+
+ MutexGuard aGuard(m_pConnection->getMutex());
+ checkDisposed(OStatement_BASE::rBHelper.bDisposed);
+
+ XSQLDA* pOutSqlda = 0;
+ isc_stmt_handle aStatementHandle = 0;
+ int aErr = 0;
+
+ const OUString sql = sanitizeSqlString(sqlIn);
+
+ aErr = prepareAndDescribeStatement(sql,
+ aStatementHandle,
+ pOutSqlda);
+
+ if (aErr)
+ {
+ SAL_WARN("connectivity.firebird", "prepareAndDescribeStatement failed" );
+ }
+ else
+ {
+ aErr = isc_dsql_execute(m_statusVector,
+ &m_pConnection->getTransaction(),
+ &aStatementHandle,
+ 1,
+ NULL);
+ if (aErr)
+ SAL_WARN("connectivity.firebird", "isc_dsql_execute failed" );
+ }
+
+ m_pConnection->evaluateStatusVector(m_statusVector, sql, *this);
+
+ // returns true when a resultset is available
+ return sal_False;
+}
+
+uno::Reference< XConnection > SAL_CALL OStatement_Base::getConnection()
+ throw(SQLException, RuntimeException)
+{
+ MutexGuard aGuard(m_pConnection->getMutex());
+ checkDisposed(OStatement_BASE::rBHelper.bDisposed);
+
+ return (uno::Reference< XConnection >)m_pConnection;
+}
+
+// ---- XMultipleResults - UNSUPPORTED ----------------------------------------
+uno::Reference< XResultSet > SAL_CALL OStatement_Base::getResultSet() throw(SQLException, RuntimeException)
+{
+ // TODO: verify we really can't support this
+ return uno::Reference< XResultSet >();
+// MutexGuard aGuard( m_aMutex );
+// checkDisposed(OStatement_BASE::rBHelper.bDisposed);
+
+// return m_xResultSet;
+}
+
+sal_Bool SAL_CALL OStatement_Base::getMoreResults() throw(SQLException, RuntimeException)
+{
+ // TODO: verify we really can't support this
+ return sal_False;
+// MutexGuard aGuard( m_aMutex );
+// checkDisposed(OStatement_BASE::rBHelper.bDisposed);
+}
+
+sal_Int32 SAL_CALL OStatement_Base::getUpdateCount() throw(SQLException, RuntimeException)
+{
+ // TODO: verify we really can't support this
+ return 0;
+}
+
+
+// ---- XWarningsSupplier - UNSUPPORTED ----------------------------------------
+Any SAL_CALL OStatement_Base::getWarnings() throw(SQLException, RuntimeException)
+{
+ return Any();
+}
+
+void SAL_CALL OStatement_Base::clearWarnings() throw(SQLException, RuntimeException)
+{
+}
+
+::cppu::IPropertyArrayHelper* OStatement_Base::createArrayHelper( ) const
+{
+ // this properties are define by the service statement
+ // they must in alphabetic order
+ Sequence< Property > aProps(10);
+ Property* pProperties = aProps.getArray();
+ sal_Int32 nPos = 0;
+ DECL_PROP0(CURSORNAME, OUString);
+ DECL_BOOL_PROP0(ESCAPEPROCESSING);
+ DECL_PROP0(FETCHDIRECTION,sal_Int32);
+ DECL_PROP0(FETCHSIZE, sal_Int32);
+ DECL_PROP0(MAXFIELDSIZE,sal_Int32);
+ DECL_PROP0(MAXROWS, sal_Int32);
+ DECL_PROP0(QUERYTIMEOUT,sal_Int32);
+ DECL_PROP0(RESULTSETCONCURRENCY,sal_Int32);
+ DECL_PROP0(RESULTSETTYPE,sal_Int32);
+ DECL_BOOL_PROP0(USEBOOKMARKS);
+
+ return new ::cppu::OPropertyArrayHelper(aProps);
+}
+
+
+::cppu::IPropertyArrayHelper & OStatement_Base::getInfoHelper()
+{
+ return *const_cast<OStatement_Base*>(this)->getArrayHelper();
+}
+// -------------------------------------------------------------------------
+sal_Bool OStatement_Base::convertFastPropertyValue(
+ Any & rConvertedValue,
+ Any & rOldValue,
+ sal_Int32 nHandle,
+ const Any& rValue )
+ throw (IllegalArgumentException)
+{
+ (void) rConvertedValue;
+ (void) rOldValue;
+ (void) nHandle;
+ (void) rValue;
+ sal_Bool bConverted = sal_False;
+ // here we have to try to convert
+ return bConverted;
+}
+// -------------------------------------------------------------------------
+void OStatement_Base::setFastPropertyValue_NoBroadcast(sal_Int32 nHandle,const Any& rValue) throw (Exception)
+{
+ (void) rValue;
+ // set the value to what ever is necessary
+ switch(nHandle)
+ {
+ case PROPERTY_ID_QUERYTIMEOUT:
+ case PROPERTY_ID_MAXFIELDSIZE:
+ case PROPERTY_ID_MAXROWS:
+ case PROPERTY_ID_CURSORNAME:
+ case PROPERTY_ID_RESULTSETCONCURRENCY:
+ case PROPERTY_ID_RESULTSETTYPE:
+ case PROPERTY_ID_FETCHDIRECTION:
+ case PROPERTY_ID_FETCHSIZE:
+ case PROPERTY_ID_ESCAPEPROCESSING:
+ case PROPERTY_ID_USEBOOKMARKS:
+ default:
+ ;
+ }
+}
+// -------------------------------------------------------------------------
+void OStatement_Base::getFastPropertyValue(Any& rValue,sal_Int32 nHandle) const
+{
+ (void) rValue;
+ switch(nHandle)
+ {
+ case PROPERTY_ID_QUERYTIMEOUT:
+ case PROPERTY_ID_MAXFIELDSIZE:
+ case PROPERTY_ID_MAXROWS:
+ case PROPERTY_ID_CURSORNAME:
+ case PROPERTY_ID_RESULTSETCONCURRENCY:
+ case PROPERTY_ID_RESULTSETTYPE:
+ case PROPERTY_ID_FETCHDIRECTION:
+ case PROPERTY_ID_FETCHSIZE:
+ case PROPERTY_ID_ESCAPEPROCESSING:
+ case PROPERTY_ID_USEBOOKMARKS:
+ default:
+ ;
+ }
+}
+
+void SAL_CALL OStatement_Base::acquire() throw()
+{
+ OStatement_BASE::acquire();
+}
+
+void SAL_CALL OStatement_Base::release() throw()
+{
+ OStatement_BASE::release();
+}
+
+uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL OStatement_Base::getPropertySetInfo( ) throw(RuntimeException)
+{
+ return ::cppu::OPropertySetHelper::createPropertySetInfo(getInfoHelper());
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/connectivity/source/drivers/firebird/StatementCommonBase.hxx b/connectivity/source/drivers/firebird/StatementCommonBase.hxx
new file mode 100644
index 000000000000..7ee121c4846d
--- /dev/null
+++ b/connectivity/source/drivers/firebird/StatementCommonBase.hxx
@@ -0,0 +1,154 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * The Contents of this file are made available subject to the terms of
+ * the BSD license.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
+ * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
+ * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ *************************************************************************/
+
+#ifndef CONNECTIVITY_FIREBIRD_STATEMENT_BASE_HXX
+#define CONNECTIVITY_FIREBIRD_STATEMENT_BASE_HXX
+
+#include "FConnection.hxx"
+
+#include <ibase.h>
+
+#include <connectivity/OSubComponent.hxx>
+#include <cppuhelper/compbase5.hxx>
+#include <list>
+
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#include <com/sun/star/sdbc/SQLWarning.hpp>
+#include <com/sun/star/sdbc/XBatchExecution.hpp>
+#include <com/sun/star/sdbc/XCloseable.hpp>
+#include <com/sun/star/sdbc/XMultipleResults.hpp>
+#include <com/sun/star/sdbc/XStatement.hpp>
+#include <com/sun/star/sdbc/XWarningsSupplier.hpp>
+#include <com/sun/star/util/XCancellable.hpp>
+
+namespace connectivity
+{
+ namespace firebird
+ {
+
+ typedef ::cppu::WeakComponentImplHelper5< ::com::sun::star::sdbc::XStatement,
+ ::com::sun::star::sdbc::XWarningsSupplier,
+ ::com::sun::star::util::XCancellable,
+ ::com::sun::star::sdbc::XCloseable,
+ ::com::sun::star::sdbc::XMultipleResults> OStatement_BASE;
+
+ class OStatement_Base : public OStatement_BASE,
+ public ::cppu::OPropertySetHelper,
+ public OPropertyArrayUsageHelper<OStatement_Base>
+
+ {
+ protected:
+ ::com::sun::star::uno::WeakReference< ::com::sun::star::sdbc::XResultSet> m_xResultSet; // The last ResultSet created
+ // for this Statement
+
+ ::std::list< ::rtl::OUString> m_aBatchList;
+
+ OConnection* m_pConnection;
+
+ ISC_STATUS_ARRAY m_statusVector;
+ protected:
+
+ void disposeResultSet();
+
+ // OPropertyArrayUsageHelper
+ virtual ::cppu::IPropertyArrayHelper* createArrayHelper( ) const;
+ // OPropertySetHelper
+ using OPropertySetHelper::getFastPropertyValue;
+ virtual ::cppu::IPropertyArrayHelper & SAL_CALL getInfoHelper();
+ virtual sal_Bool SAL_CALL convertFastPropertyValue(
+ ::com::sun::star::uno::Any & rConvertedValue,
+ ::com::sun::star::uno::Any & rOldValue,
+ sal_Int32 nHandle,
+ const ::com::sun::star::uno::Any& rValue )
+ throw (::com::sun::star::lang::IllegalArgumentException);
+ virtual void SAL_CALL setFastPropertyValue_NoBroadcast(
+ sal_Int32 nHandle,
+ const ::com::sun::star::uno::Any& rValue) throw (::com::sun::star::uno::Exception);
+ virtual void SAL_CALL getFastPropertyValue(
+ ::com::sun::star::uno::Any& rValue,
+ sal_Int32 nHandle) const;
+ virtual ~OStatement_Base();
+ int prepareAndDescribeStatement(const OUString& sqlIn,
+ isc_stmt_handle& aStatementHandle,
+ XSQLDA*& pOutSqlda,
+ XSQLDA* pInSqlda=0);
+ ::rtl::OUString sanitizeSqlString(const OUString& sqlIn);
+ public:
+
+ ::cppu::OBroadcastHelper& rBHelper;
+ OStatement_Base(OConnection* _pConnection);
+ using OStatement_BASE::operator ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >;
+
+ // OComponentHelper
+ virtual void SAL_CALL disposing(void){OStatement_BASE::disposing();}
+ // XInterface
+ virtual void SAL_CALL release() throw();
+ virtual void SAL_CALL acquire() throw();
+ // XInterface
+ virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type & rType ) throw(::com::sun::star::uno::RuntimeException);
+ //XTypeProvider
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes( ) throw(::com::sun::star::uno::RuntimeException);
+
+ // XPropertySet
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo( ) throw(::com::sun::star::uno::RuntimeException);
+ // XStatement
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet > SAL_CALL executeQuery( const ::rtl::OUString& sql ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException) ;
+ virtual sal_Int32 SAL_CALL executeUpdate( const ::rtl::OUString& sqlIn ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException) ;
+ virtual sal_Bool SAL_CALL execute( const ::rtl::OUString& sql ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException) ;
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection > SAL_CALL getConnection( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException) ;
+
+ // XWarningsSupplier - UNSUPPORTED
+ virtual ::com::sun::star::uno::Any SAL_CALL getWarnings( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL clearWarnings( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
+ // XMultipleResults - UNSUPPORTED
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet > SAL_CALL getResultSet( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getUpdateCount( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL getMoreResults( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
+
+ // XCancellable
+ virtual void SAL_CALL cancel( ) throw(::com::sun::star::uno::RuntimeException);
+ // XCloseable
+ virtual void SAL_CALL close( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
+
+ // other methods
+ OConnection* getOwnConnection() const { return m_pConnection;}
+
+ };
+ }
+}
+
+#endif //CONNECTIVITY_FIREBIRD_STATEMENT_BASE_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */