User: obo Date: 05/12/19 09:15:19 Modified: /dba/dbaccess/source/core/api/ resultset.cxx
Log: INTEGRATION: CWS kaddrbook (1.13.56); FILE MERGED 2005/12/05 12:15:24 fs 1.13.56.1: #i58879# respect XDatabaseMetaData::getVersionColumns, and translate it into css.sdbcx.Column.IsRowVersion File Changes: Directory: /dba/dbaccess/source/core/api/ ========================================= File [changed]: resultset.cxx Url: http://dba.openoffice.org/source/browse/dba/dbaccess/source/core/api/resultset.cxx?r1=1.13&r2=1.14 Delta lines: +44 -1 -------------------- --- resultset.cxx 8 Sep 2005 10:10:03 -0000 1.13 +++ resultset.cxx 19 Dec 2005 17:15:17 -0000 1.14 @@ -71,6 +71,12 @@ #ifndef _DBHELPER_DBEXCEPTION_HXX_ #include <connectivity/dbexception.hxx> #endif +#ifndef _CPPUHELPER_EXC_HLP_HXX_ +#include <cppuhelper/exc_hlp.hxx> +#endif +#ifndef _OSL_THREAD_H_ +#include <osl/thread.h> +#endif using namespace ::com::sun::star::sdbc; @@ -357,6 +363,41 @@ return Reference< XColumnLocate >(m_xAggregateAsResultSet, UNO_QUERY)->findColumn(columnName); } +//------------------------------------------------------------------------------ +namespace +{ + static Reference< XDatabaseMetaData > lcl_getDBMetaDataFromStatement_nothrow( const Reference< XInterface >& _rxStatement ) + { + Reference< XDatabaseMetaData > xDBMetaData; + try + { + Reference< XStatement > xStatement( _rxStatement, UNO_QUERY ); + Reference< XPreparedStatement > xPreparedStatement( _rxStatement, UNO_QUERY ); + Reference< XConnection > xConn; + if ( xStatement.is() ) + xConn = xStatement->getConnection(); + else if ( xPreparedStatement.is() ) + xConn = xPreparedStatement->getConnection(); + if ( xConn.is() ) + xDBMetaData = xConn->getMetaData(); + } + catch( const Exception& e ) + { + #if OSL_DEBUG_LEVEL > 0 + Any caught( ::cppu::getCaughtException() ); + ::rtl::OString sMessage( "lcl_getDBMetaDataFromStatement_nothrow: caught an exception!" ); + sMessage += "\ntype: "; + sMessage += ::rtl::OString( caught.getValueTypeName().getStr(), caught.getValueTypeName().getLength(), osl_getThreadTextEncoding() ); + sMessage += "\nmessage: "; + sMessage += ::rtl::OString( e.Message.getStr(), e.Message.getLength(), osl_getThreadTextEncoding() ); + OSL_ENSURE( false, sMessage ); + #else + e; // make compiler happy + #endif + } + return xDBMetaData; + } +} // ::com::sun::star::sdbcx::XColumnsSupplier //------------------------------------------------------------------------------ Reference< ::com::sun::star::container::XNameAccess > OResultSet::getColumns(void) throw( RuntimeException ) @@ -372,11 +413,13 @@ // do we have columns try { + Reference< XDatabaseMetaData > xDBMetaData( lcl_getDBMetaDataFromStatement_nothrow( getStatement() ) ); + for (sal_Int32 i = 0, nCount = xMetaData->getColumnCount(); i < nCount; ++i) { // retrieve the name of the column rtl::OUString aName = xMetaData->getColumnName(i + 1); - ODataColumn* pColumn = new ODataColumn(xMetaData, m_xAggregateAsRow, m_xAggregateAsRowUpdate, i + 1); + ODataColumn* pColumn = new ODataColumn(xMetaData, m_xAggregateAsRow, m_xAggregateAsRowUpdate, i + 1, xDBMetaData); m_pColumns->append(aName, pColumn); } } --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
