Tag: cws_src680_dba23ui User: fs Date: 2007-05-19 20:49:37+0000 Log: RESYNC: (1.20-1.22); FILE MERGED
File Changes: Directory: /dba/connectivity/source/commontools/ ================================================ File [changed]: dbtools2.cxx Url: http://dba.openoffice.org/source/browse/dba/connectivity/source/commontools/dbtools2.cxx?r1=1.20.30.1&r2=1.20.30.2 Delta lines: +47 -47 --------------------- --- dbtools2.cxx 2007-01-14 21:09:02+0000 1.20.30.1 +++ dbtools2.cxx 2007-05-19 20:49:35+0000 1.20.30.2 @@ -104,6 +104,7 @@ #endif #include <tools/diagnose_ex.h> +#include <unotools/sharedunocomponent.hxx> //......................................................................... namespace dbtools @@ -634,26 +635,37 @@ const Reference< XConnection>& _xConnection, const Reference< XMultiServiceFactory>& _rxFactory) { - Reference< XDriverAccess> xManager(_rxFactory->createInstance(::rtl::OUString::createFromAscii("com.sun.star.sdbc.DriverManager") ), UNO_QUERY); - Reference< XDataDefinitionSupplier > xSupp(xManager->getDriverByURL(_rsUrl),UNO_QUERY); Reference< XTablesSupplier> xTablesSup; + try + { + Reference< XDriverAccess> xManager( + _rxFactory->createInstance( ::rtl::OUString::createFromAscii("com.sun.star.sdbc.DriverManager") ), + UNO_QUERY_THROW ); + Reference< XDataDefinitionSupplier > xSupp( xManager->getDriverByURL( _rsUrl ), UNO_QUERY ); if ( xSupp.is() ) - xTablesSup = xSupp->getDataDefinitionByConnection(_xConnection); + xTablesSup = xSupp->getDataDefinitionByConnection( _xConnection ); + // if we don't get the catalog from the original driver we have to try them all. if ( !xTablesSup.is() ) { - Reference< XEnumerationAccess> xEnumAccess(xManager,UNO_QUERY); - Reference< XEnumeration> xEnum = xEnumAccess->createEnumeration(); + Reference< XEnumerationAccess> xEnumAccess( xManager, UNO_QUERY_THROW ); + Reference< XEnumeration > xEnum( xEnumAccess->createEnumeration(), UNO_QUERY_THROW ); while ( xEnum.is() && xEnum->hasMoreElements() && !xTablesSup.is() ) { xEnum->nextElement() >>= xSupp; if ( xSupp.is() ) - xTablesSup = xSupp->getDataDefinitionByConnection(_xConnection); + xTablesSup = xSupp->getDataDefinitionByConnection( _xConnection ); } } + } + catch( const Exception& ) + { + DBG_UNHANDLED_EXCEPTION(); + } return xTablesSup; } + // ----------------------------------------------------------------------------- sal_Int32 getTablePrivileges(const Reference< XDatabaseMetaData>& _xMetaData, const ::rtl::OUString& _sCatalog, @@ -777,35 +789,23 @@ try { - Reference<XStatement> xStmt = _xConnection->createStatement(); - Reference<XResultSet> xResult = xStmt->executeQuery(sSelect); - if ( xResult.is() ) - { - Reference<XResultSetMetaData> xMD = Reference<XResultSetMetaDataSupplier>(xResult,UNO_QUERY)->getMetaData(); - if ( xMD.is() ) - { - sal_Int32 nCount = xMD->getColumnCount(); + ::utl::SharedUNOComponent< XStatement > xStmt( _xConnection->createStatement() ); + Reference< XPropertySet > xStatementProps( xStmt, UNO_QUERY_THROW ); + xStatementProps->setPropertyValue( OMetaConnection::getPropMap().getNameByIndex( PROPERTY_ID_ESCAPEPROCESSING ), makeAny( (sal_Bool)sal_False ) ); + Reference< XResultSet > xResult( xStmt->executeQuery( sSelect ), UNO_QUERY_THROW ); + Reference< XResultSetMetaDataSupplier > xSuppMeta( xResult, UNO_QUERY_THROW ); + Reference< XResultSetMetaData > xMeta( xSuppMeta->getMetaData(), UNO_QUERY_THROW ); + + sal_Int32 nCount = xMeta->getColumnCount(); for (sal_Int32 i=1; i <= nCount ; ++i) { - _rInfo.insert(ColumnInformationMap::value_type(xMD->getColumnName(i), - ColumnInformation(TBoolPair(xMD->isAutoIncrement(i),xMD->isCurrency(i)),xMD->getColumnType(i)))); - } - xMD = NULL; - } - xResult = NULL; - ::comphelper::disposeComponent(xStmt); + _rInfo.insert(ColumnInformationMap::value_type(xMeta->getColumnName(i), + ColumnInformation(TBoolPair(xMeta->isAutoIncrement(i),xMeta->isCurrency(i)),xMeta->getColumnType(i)))); } } - catch(SQLException&) - { - } - catch(DisposedException&) - { - OSL_ENSURE(0,"Exception catched!"); - } - catch(Exception&) + catch( const Exception& ) { - OSL_ENSURE(0,"Exception catched!"); + DBG_UNHANDLED_EXCEPTION(); } } --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
