summaryrefslogtreecommitdiff
path: root/connectivity/source
diff options
context:
space:
mode:
Diffstat (limited to 'connectivity/source')
-rw-r--r--connectivity/source/drivers/file/FPreparedStatement.cxx70
-rw-r--r--connectivity/source/drivers/file/FResultSet.cxx7
-rw-r--r--connectivity/source/drivers/file/FStatement.cxx37
-rw-r--r--connectivity/source/inc/file/FPreparedStatement.hxx4
-rw-r--r--connectivity/source/inc/file/FResultSet.hxx2
-rw-r--r--connectivity/source/inc/file/FStatement.hxx3
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,