diff options
Diffstat (limited to 'connectivity/source')
-rw-r--r-- | connectivity/source/drivers/file/FPreparedStatement.cxx | 70 | ||||
-rw-r--r-- | connectivity/source/drivers/file/FResultSet.cxx | 7 | ||||
-rw-r--r-- | connectivity/source/drivers/file/FStatement.cxx | 37 | ||||
-rw-r--r-- | connectivity/source/inc/file/FPreparedStatement.hxx | 4 | ||||
-rw-r--r-- | connectivity/source/inc/file/FResultSet.hxx | 2 | ||||
-rw-r--r-- | connectivity/source/inc/file/FStatement.hxx | 3 |
6 files changed, 40 insertions, 83 deletions
diff --git a/connectivity/source/drivers/file/FPreparedStatement.cxx b/connectivity/source/drivers/file/FPreparedStatement.cxx index d34c5266c99f..f24748369d42 100644 --- a/connectivity/source/drivers/file/FPreparedStatement.cxx +++ b/connectivity/source/drivers/file/FPreparedStatement.cxx @@ -55,7 +55,6 @@ DBG_NAME( file_OPreparedStatement ) // ------------------------------------------------------------------------- OPreparedStatement::OPreparedStatement( OConnection* _pConnection) : OStatement_BASE2( _pConnection ) - ,m_pResultSet(NULL) { SAL_INFO( "connectivity.drivers", "file Ocke.Janssen@sun.com OPreparedStatement::OPreparedStatement" ); DBG_CTOR( file_OPreparedStatement, NULL ); @@ -74,15 +73,8 @@ void OPreparedStatement::disposing() SAL_INFO( "connectivity.drivers", "file Ocke.Janssen@sun.com OPreparedStatement::disposing" ); ::osl::MutexGuard aGuard(m_aMutex); - clearMyResultSet(); OStatement_BASE2::disposing(); - if(m_pResultSet) - { - m_pResultSet->release(); - m_pResultSet = NULL; - } - m_xParamColumns = NULL; m_xMetaData.clear(); if(m_aParameterRow.is()) @@ -90,8 +82,6 @@ void OPreparedStatement::disposing() m_aParameterRow->get().clear(); m_aParameterRow = NULL; } - - } // ------------------------------------------------------------------------- void OPreparedStatement::construct(const OUString& sql) throw(SQLException, RuntimeException) @@ -115,12 +105,17 @@ void OPreparedStatement::construct(const OUString& sql) throw(SQLException, Run OValueRefRow aTemp; OResultSet::setBoundedColumns(m_aEvaluateRow,aTemp,m_xParamColumns,xNames,sal_False,m_xDBMetaData,m_aColMapping); +} - m_pResultSet = createResultSet(); - m_pResultSet->acquire(); - m_xResultSet = Reference<XResultSet>(m_pResultSet); - initializeResultSet(m_pResultSet); +Reference<XResultSet> OPreparedStatement::makeResultSet() +{ + OResultSet *pResultSet = createResultSet(); + Reference<XResultSet> xRS(pResultSet); + initializeResultSet(pResultSet); + initResultSet(pResultSet); + return xRS; } + // ------------------------------------------------------------------------- Any SAL_CALL OPreparedStatement::queryInterface( const Type & rType ) throw(RuntimeException) @@ -160,9 +155,6 @@ void SAL_CALL OPreparedStatement::close( ) throw(SQLException, RuntimeException SAL_INFO( "connectivity.drivers", "file Ocke.Janssen@sun.com OPreparedStatement::close" ); ::osl::MutexGuard aGuard( m_aMutex ); checkDisposed(OStatement_BASE::rBHelper.bDisposed); - - - clearMyResultSet(); } // ------------------------------------------------------------------------- @@ -172,7 +164,12 @@ sal_Bool SAL_CALL OPreparedStatement::execute( ) throw(SQLException, RuntimeExc ::osl::MutexGuard aGuard( m_aMutex ); checkDisposed(OStatement_BASE::rBHelper.bDisposed); - initResultSet(); + Reference<XResultSet> xRS(makeResultSet()); + + // since we don't support the XMultipleResults interface, nobody will ever get that ResultSet... + Reference< XComponent > xComp(xRS, UNO_QUERY); + if (xComp.is()) + xComp->dispose(); return m_aSQLIterator.getStatementType() == SQL_STATEMENT_SELECT; } @@ -184,9 +181,20 @@ sal_Int32 SAL_CALL OPreparedStatement::executeUpdate( ) throw(SQLException, Run ::osl::MutexGuard aGuard( m_aMutex ); checkDisposed(OStatement_BASE::rBHelper.bDisposed); - initResultSet(); - - return m_pResultSet ? m_pResultSet->getRowCountResult() : sal_Int32(0); + Reference<XResultSet> xRS(makeResultSet()); + if(xRS.is()) + { + assert(dynamic_cast<OResultSet*>(xRS.get())); + const sal_Int32 res(static_cast<OResultSet*>(xRS.get())->getRowCountResult()); + // nobody will ever get that ResultSet... + Reference< XComponent > xComp(xRS, UNO_QUERY); + assert(xComp.is()); + if (xComp.is()) + xComp->dispose(); + return res; + } + else + return 0; } // ------------------------------------------------------------------------- @@ -213,7 +221,7 @@ Reference< XResultSet > SAL_CALL OPreparedStatement::executeQuery( ) throw(SQLE ::osl::MutexGuard aGuard( m_aMutex ); checkDisposed(OStatement_BASE::rBHelper.bDisposed); - return initResultSet(); + return makeResultSet(); } // ------------------------------------------------------------------------- @@ -408,21 +416,17 @@ OResultSet* OPreparedStatement::createResultSet() return new OResultSet(this,m_aSQLIterator); } // ----------------------------------------------------------------------------- -Reference<XResultSet> OPreparedStatement::initResultSet() +void OPreparedStatement::initResultSet(OResultSet *pResultSet) { SAL_INFO( "connectivity.drivers", "file Ocke.Janssen@sun.com OPreparedStatement::initResultSet" ); - m_pResultSet->clear(); - Reference<XResultSet> xRs(m_pResultSet); // check if we got enough parameters if ( (m_aParameterRow.is() && ( m_aParameterRow->get().size() -1 ) < m_xParamColumns->get().size()) || (m_xParamColumns.is() && !m_aParameterRow.is() && !m_aParameterRow->get().empty()) ) m_pConnection->throwGenericSQLException(STR_INVALID_PARA_COUNT,*this); - m_pResultSet->OpenImpl(); - m_pResultSet->setMetaData(getMetaData()); - - return xRs; + pResultSet->OpenImpl(); + pResultSet->setMetaData(getMetaData()); } // ----------------------------------------------------------------------------- void SAL_CALL OPreparedStatement::acquire() throw() @@ -554,13 +558,13 @@ void OPreparedStatement::describeParameter() } } // ----------------------------------------------------------------------------- -void OPreparedStatement::initializeResultSet(OResultSet* _pResult) +void OPreparedStatement::initializeResultSet(OResultSet* pRS) { SAL_INFO( "connectivity.drivers", "file Ocke.Janssen@sun.com OPreparedStatement::initializeResultSet" ); - OStatement_Base::initializeResultSet(_pResult); + OStatement_Base::initializeResultSet(pRS); - m_pResultSet->setParameterColumns(m_xParamColumns); - m_pResultSet->setParameterRow(m_aParameterRow); + pRS->setParameterColumns(m_xParamColumns); + pRS->setParameterRow(m_aParameterRow); // Substitute parameter (AssignValues and criteria): if (!m_xParamColumns->get().empty()) diff --git a/connectivity/source/drivers/file/FResultSet.cxx b/connectivity/source/drivers/file/FResultSet.cxx index 63c77c7e4cc4..d8fbde1da9a2 100644 --- a/connectivity/source/drivers/file/FResultSet.cxx +++ b/connectivity/source/drivers/file/FResultSet.cxx @@ -166,12 +166,7 @@ void OResultSet::disposing(void) m_pTable->release(); m_pTable = NULL; } - clear(); -} -// ----------------------------------------------------------------------------- -void OResultSet::clear() -{ - SAL_INFO( "connectivity.drivers", "file Ocke.Janssen@sun.com OResultSet::clear" ); + m_pFileSet = NULL; DELETEZ(m_pSortIndex); diff --git a/connectivity/source/drivers/file/FStatement.cxx b/connectivity/source/drivers/file/FStatement.cxx index 02bfe247deca..44e6b2f0c812 100644 --- a/connectivity/source/drivers/file/FStatement.cxx +++ b/connectivity/source/drivers/file/FStatement.cxx @@ -102,22 +102,10 @@ OStatement_Base::~OStatement_Base() DBG_DTOR( file_OStatement_Base, NULL ); } //------------------------------------------------------------------------------ -void OStatement_Base::disposeResultSet() -{ - SAL_INFO( "connectivity.drivers", "file Ocke.Janssen@sun.com OStatement_Base::disposeResultSet" ); - // free the cursor if alive - Reference< XComponent > xComp(m_xResultSet.get(), UNO_QUERY); - if (xComp.is()) - xComp->dispose(); - m_xResultSet.clear(); -} -//------------------------------------------------------------------------------ void OStatement_BASE2::disposing() { ::osl::MutexGuard aGuard(m_aMutex); - disposeResultSet(); - if(m_pSQLAnalyzer) m_pSQLAnalyzer->dispose(); @@ -203,32 +191,8 @@ void OStatement_Base::reset() throw (SQLException) ::osl::MutexGuard aGuard( m_aMutex ); checkDisposed(OStatement_BASE::rBHelper.bDisposed); - clearWarnings (); - if (m_xResultSet.get().is()) - clearMyResultSet(); -} -//-------------------------------------------------------------------- -// clearMyResultSet -// If a ResultSet was created for this Statement, close it -//-------------------------------------------------------------------- - -void OStatement_Base::clearMyResultSet () throw (SQLException) -{ - SAL_INFO( "connectivity.drivers", "file Ocke.Janssen@sun.com OStatement_Base::clearMyResultSet " ); - ::osl::MutexGuard aGuard( m_aMutex ); - checkDisposed(OStatement_BASE::rBHelper.bDisposed); - - try - { - Reference<XCloseable> xCloseable; - if ( ::comphelper::query_interface( m_xResultSet.get(), xCloseable ) ) - xCloseable->close(); - } - catch( const DisposedException& ) { } - - m_xResultSet.clear(); } // ------------------------------------------------------------------------- @@ -304,7 +268,6 @@ Reference< XResultSet > SAL_CALL OStatement::executeQuery( const OUString& sql ) OResultSet* pResult = createResultSet(); xRS = pResult; initializeResultSet(pResult); - m_xResultSet = Reference<XResultSet>(pResult); pResult->OpenImpl(); diff --git a/connectivity/source/inc/file/FPreparedStatement.hxx b/connectivity/source/inc/file/FPreparedStatement.hxx index cfe59c816590..1682ba3d7217 100644 --- a/connectivity/source/inc/file/FPreparedStatement.hxx +++ b/connectivity/source/inc/file/FPreparedStatement.hxx @@ -49,12 +49,12 @@ namespace connectivity OValueRefRow m_aParameterRow; ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSetMetaData> m_xMetaData; - OResultSet* m_pResultSet; ::rtl::Reference<connectivity::OSQLColumns> m_xParamColumns; // the parameter columns // factory method for resultset's virtual OResultSet* createResultSet(); - ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet> initResultSet(); + ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet > makeResultSet(); + void initResultSet(OResultSet*); void checkAndResizeParameters(sal_Int32 parameterIndex); void setParameter(sal_Int32 parameterIndex, const ORowSetValue& x); diff --git a/connectivity/source/inc/file/FResultSet.hxx b/connectivity/source/inc/file/FResultSet.hxx index 7bf87f6b4a30..342e91d406b3 100644 --- a/connectivity/source/inc/file/FResultSet.hxx +++ b/connectivity/source/inc/file/FResultSet.hxx @@ -292,8 +292,6 @@ namespace connectivity inline void setEvaluationKeySet(TIntVector* _pEvaluationKeySet) { m_pEvaluationKeySet = _pEvaluationKeySet; } inline void setMetaData(const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSetMetaData>& _xMetaData) { m_xMetaData = _xMetaData;} - // clears the resultset so it can be reused by a preparedstatement - void clear(); static void setBoundedColumns(const OValueRefRow& _rRow, const OValueRefRow& _rSelectRow, const ::rtl::Reference<connectivity::OSQLColumns>& _rxColumns, diff --git a/connectivity/source/inc/file/FStatement.hxx b/connectivity/source/inc/file/FStatement.hxx index b4cad7c117c5..4977591ef9b7 100644 --- a/connectivity/source/inc/file/FStatement.hxx +++ b/connectivity/source/inc/file/FStatement.hxx @@ -69,7 +69,6 @@ namespace connectivity ::std::vector<TAscendingOrder> m_aOrderbyAscending; ::com::sun::star::sdbc::SQLWarning m_aLastWarning; - ::com::sun::star::uno::WeakReference< ::com::sun::star::sdbc::XResultSet> m_xResultSet; // The last ResultSet created ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XDatabaseMetaData> m_xDBMetaData; ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess> m_xColNames; // table columns // for this Statement @@ -115,10 +114,8 @@ namespace connectivity virtual OSQLAnalyzer* createAnalyzer(); void reset () throw( ::com::sun::star::sdbc::SQLException); - void clearMyResultSet () throw( ::com::sun::star::sdbc::SQLException); sal_Int32 getPrecision ( sal_Int32 sqlType); - void disposeResultSet(); void GetAssignValues(); void SetAssignValue(const OUString& aColumnName, const OUString& aValue, |