diff options
Diffstat (limited to 'connectivity/source/drivers/ado')
-rw-r--r-- | connectivity/source/drivers/ado/ADatabaseMetaData.cxx | 584 | ||||
-rw-r--r-- | connectivity/source/drivers/ado/ADatabaseMetaDataImpl.cxx | 688 | ||||
-rw-r--r-- | connectivity/source/drivers/ado/ADatabaseMetaDataResultSet.cxx | 138 | ||||
-rw-r--r-- | connectivity/source/drivers/ado/ADatabaseMetaDataResultSetMetaData.cxx | 217 | ||||
-rw-r--r-- | connectivity/source/drivers/ado/ADriver.cxx | 85 | ||||
-rw-r--r-- | connectivity/source/drivers/ado/AGroup.cxx | 87 | ||||
-rw-r--r-- | connectivity/source/drivers/ado/AIndex.cxx | 33 | ||||
-rw-r--r-- | connectivity/source/drivers/ado/AKey.cxx | 117 | ||||
-rw-r--r-- | connectivity/source/drivers/ado/ATable.cxx | 59 | ||||
-rw-r--r-- | connectivity/source/drivers/ado/AUser.cxx | 21 | ||||
-rw-r--r-- | connectivity/source/drivers/ado/AView.cxx | 22 | ||||
-rw-r--r-- | connectivity/source/drivers/ado/Aolevariant.cxx | 22 | ||||
-rw-r--r-- | connectivity/source/drivers/ado/Awrapado.cxx | 555 | ||||
-rw-r--r-- | connectivity/source/drivers/ado/adoimp.cxx | 106 | ||||
-rw-r--r-- | connectivity/source/drivers/ado/makefile.mk | 34 |
15 files changed, 1500 insertions, 1268 deletions
diff --git a/connectivity/source/drivers/ado/ADatabaseMetaData.cxx b/connectivity/source/drivers/ado/ADatabaseMetaData.cxx index 31052e3e5ab1..4bb4c1fb971e 100644 --- a/connectivity/source/drivers/ado/ADatabaseMetaData.cxx +++ b/connectivity/source/drivers/ado/ADatabaseMetaData.cxx @@ -2,9 +2,9 @@ * * $RCSfile: ADatabaseMetaData.cxx,v $ * - * $Revision: 1.8 $ + * $Revision: 1.9 $ * - * last change: $Author: oj $ $Date: 2001-05-18 08:48:07 $ + * last change: $Author: oj $ $Date: 2001-05-23 09:15:43 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -99,65 +99,6 @@ using namespace com::sun::star::beans; using namespace com::sun::star::sdbc; -const int JET_ENGINETYPE_UNKNOWN = 0; -const int JET_ENGINETYPE_JET10 = 1; -const int JET_ENGINETYPE_JET11 = 2; -const int JET_ENGINETYPE_JET20 = 3; -const int JET_ENGINETYPE_JET3X = 4; -const int JET_ENGINETYPE_JET4X = 5; -const int JET_ENGINETYPE_DBASE3 = 10; -const int JET_ENGINETYPE_DBASE4 = 11; -const int JET_ENGINETYPE_DBASE5 = 12; -const int JET_ENGINETYPE_EXCEL30 = 20; -const int JET_ENGINETYPE_EXCEL40 = 21; -const int JET_ENGINETYPE_EXCEL50 = 22; -const int JET_ENGINETYPE_EXCEL80 = 23; -const int JET_ENGINETYPE_EXCEL90 = 24; -const int JET_ENGINETYPE_EXCHANGE4 = 30; -const int JET_ENGINETYPE_LOTUSWK1 = 40; -const int JET_ENGINETYPE_LOTUSWK3 = 41; -const int JET_ENGINETYPE_LOTUSWK4 = 42; -const int JET_ENGINETYPE_PARADOX3X = 50; -const int JET_ENGINETYPE_PARADOX4X = 51; -const int JET_ENGINETYPE_PARADOX5X = 52; -const int JET_ENGINETYPE_PARADOX7X = 53; -const int JET_ENGINETYPE_TEXT1X = 60; -const int JET_ENGINETYPE_HTML1X = 70; - -sal_Bool isJetEngine(sal_Int32 _nEngineType) -{ - sal_Bool bRet = sal_False; - switch(_nEngineType) - { - case JET_ENGINETYPE_UNKNOWN: - case JET_ENGINETYPE_JET10: - case JET_ENGINETYPE_JET11: - case JET_ENGINETYPE_JET20: - case JET_ENGINETYPE_JET3X: - case JET_ENGINETYPE_JET4X: - case JET_ENGINETYPE_DBASE3: - case JET_ENGINETYPE_DBASE4: - case JET_ENGINETYPE_DBASE5: - case JET_ENGINETYPE_EXCEL30: - case JET_ENGINETYPE_EXCEL40: - case JET_ENGINETYPE_EXCEL50: - case JET_ENGINETYPE_EXCEL80: - case JET_ENGINETYPE_EXCEL90: - case JET_ENGINETYPE_EXCHANGE4: - case JET_ENGINETYPE_LOTUSWK1: - case JET_ENGINETYPE_LOTUSWK3: - case JET_ENGINETYPE_LOTUSWK4: - case JET_ENGINETYPE_PARADOX3X: - case JET_ENGINETYPE_PARADOX4X: - case JET_ENGINETYPE_PARADOX5X: - case JET_ENGINETYPE_PARADOX7X: - case JET_ENGINETYPE_TEXT1X: - case JET_ENGINETYPE_HTML1X: - bRet = sal_True; - break; - } - return bRet; -} // using namespace connectivity; ODatabaseMetaData::ODatabaseMetaData(OConnection* _pCon) @@ -167,77 +108,7 @@ ODatabaseMetaData::ODatabaseMetaData(OConnection* _pCon) { } // ------------------------------------------------------------------------- -void ODatabaseMetaData::fillLiterals() throw(SQLException, RuntimeException) -{ - ADORecordset *pRecordset = NULL; - OLEVariant vtEmpty; - vtEmpty.setNoArg(); - m_pADOConnection->OpenSchema(adSchemaDBInfoLiterals,vtEmpty,vtEmpty,&pRecordset); - - ADOS::ThrowException(*m_pADOConnection,*this); - - OSL_ENSURE(pRecordset,"getMaxSize no resultset!"); - WpADORecordset aRecordset(pRecordset); - - aRecordset.MoveFirst(); - OLEVariant aValue; - sal_Int32 nRet = 0; - LiteralInfo aInfo; - while(!aRecordset.IsAtEOF()) - { - WpOLEAppendCollection<ADOFields, ADOField, WpADOField> aFields(aRecordset.GetFields()); - WpADOField aField(aFields.GetItem(1)); - aInfo.pwszLiteralValue = aField.get_Value(); - aField = aFields.GetItem(5); - aInfo.fSupported = aField.get_Value(); - aField = aFields.GetItem(6); - aInfo.cchMaxLen = aField.get_Value().getUInt32(); - - aField = aFields.GetItem(4); - sal_uInt32 nId = aField.get_Value().getUInt32(); - m_aLiteralInfo[nId] = aInfo; - - aRecordset.MoveNext(); - } - aRecordset.Close(); -} -// ------------------------------------------------------------------------- -sal_Int32 ODatabaseMetaData::getMaxSize(sal_uInt32 _nId) throw(SQLException, RuntimeException) -{ - if(!m_aLiteralInfo.size()) - fillLiterals(); - - sal_Int32 nSize = 0; - ::std::map<sal_uInt32,LiteralInfo>::const_iterator aIter = m_aLiteralInfo.find(_nId); - if(aIter != m_aLiteralInfo.end() && (*aIter).second.fSupported) - nSize = ((*aIter).second.cchMaxLen == (-1)) ? 0 : (*aIter).second.cchMaxLen; - return nSize; -} -// ------------------------------------------------------------------------- -sal_Bool ODatabaseMetaData::isCapable(sal_uInt32 _nId) throw(SQLException, RuntimeException) -{ - if(!m_aLiteralInfo.size()) - fillLiterals(); - sal_Bool bSupported = sal_False; - ::std::map<sal_uInt32,LiteralInfo>::const_iterator aIter = m_aLiteralInfo.find(_nId); - if(aIter != m_aLiteralInfo.end()) - bSupported = (*aIter).second.fSupported; - return bSupported; -} - -// ------------------------------------------------------------------------- -::rtl::OUString ODatabaseMetaData::getLiteral(sal_uInt32 _nId) throw(SQLException, RuntimeException) -{ - if(!m_aLiteralInfo.size()) - fillLiterals(); - ::rtl::OUString sStr; - ::std::map<sal_uInt32,LiteralInfo>::const_iterator aIter = m_aLiteralInfo.find(_nId); - if(aIter != m_aLiteralInfo.end() && (*aIter).second.fSupported) - sStr = (*aIter).second.pwszLiteralValue; - return sStr; -} -// ------------------------------------------------------------------------- -sal_Int32 ODatabaseMetaData::getInt32Property(const ::rtl::OUString& _aProperty) throw(SQLException, RuntimeException) +sal_Int32 ODatabaseMetaData::getInt32Property(const ::rtl::OUString& _aProperty) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException) { WpOLEAppendCollection<ADOProperties, ADOProperty, WpADOProperty> aProps(m_pADOConnection->get_Properties()); // ADOS::ThrowException(*m_pADOConnection,*this); @@ -250,7 +121,7 @@ sal_Int32 ODatabaseMetaData::getInt32Property(const ::rtl::OUString& _aProperty) } // ------------------------------------------------------------------------- -sal_Bool ODatabaseMetaData::getBoolProperty(const ::rtl::OUString& _aProperty) throw(SQLException, RuntimeException) +sal_Bool ODatabaseMetaData::getBoolProperty(const ::rtl::OUString& _aProperty) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException) { WpOLEAppendCollection<ADOProperties, ADOProperty, WpADOProperty> aProps(m_pADOConnection->get_Properties()); ADOS::ThrowException(*m_pADOConnection,*this); @@ -259,7 +130,7 @@ sal_Bool ODatabaseMetaData::getBoolProperty(const ::rtl::OUString& _aProperty) t return (!aVar.isNull() && !aVar.isEmpty() ? aVar.getBool() : sal_False); } // ------------------------------------------------------------------------- -::rtl::OUString ODatabaseMetaData::getStringProperty(const ::rtl::OUString& _aProperty) throw(SQLException, RuntimeException) +::rtl::OUString ODatabaseMetaData::getStringProperty(const ::rtl::OUString& _aProperty) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException) { WpOLEAppendCollection<ADOProperties, ADOProperty, WpADOProperty> aProps(m_pADOConnection->get_Properties()); ADOS::ThrowException(*m_pADOConnection,*this); @@ -272,36 +143,13 @@ sal_Bool ODatabaseMetaData::getBoolProperty(const ::rtl::OUString& _aProperty) t return aValue; } - // ------------------------------------------------------------------------- Reference< XResultSet > SAL_CALL ODatabaseMetaData::getTypeInfo( ) throw(SQLException, RuntimeException) { - HRESULT hr = S_OK; - // Create elements used in the array - OLEVariant varCriteria[2]; - const int nCrit = sizeof varCriteria / sizeof varCriteria[0]; - // Create SafeArray Bounds and initialize the array - SAFEARRAYBOUND rgsabound[1]; - rgsabound[0].lLbound = 0; - rgsabound[0].cElements = nCrit; - SAFEARRAY *psa = SafeArrayCreate( VT_VARIANT, 1, rgsabound ); - - sal_Int32 nPos = 0; - SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++; - SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++; - - // Initialize and fill the SafeArray - OLEVariant vsa; - vsa.setArray(psa,VT_VARIANT); - - OLEVariant aEmpty; - aEmpty.setNoArg(); - - ADORecordset *pRec=NULL; - m_pADOConnection->OpenSchema(adSchemaProviderTypes,vsa,aEmpty,&pRec); + ADORecordset *pRecordset = m_pADOConnection->getTypeInfo(); // ADOS::ThrowException(*m_pADOConnection,*this); - ODatabaseMetaDataResultSet* pResult = new ODatabaseMetaDataResultSet(pRec); + ODatabaseMetaDataResultSet* pResult = new ODatabaseMetaDataResultSet(pRecordset); pResult->setTypeInfoMap(); Reference< XResultSet > xRef = pResult; return xRef; @@ -351,41 +199,7 @@ Reference< XResultSet > SAL_CALL ODatabaseMetaData::getColumnPrivileges( const Any& catalog, const ::rtl::OUString& schema, const ::rtl::OUString& table, const ::rtl::OUString& columnNamePattern ) throw(SQLException, RuntimeException) { - // Create elements used in the array - HRESULT hr = S_OK; - SAFEARRAYBOUND rgsabound[1]; - SAFEARRAY *psa = NULL; - OLEVariant varCriteria[4]; - - // Create SafeArray Bounds and initialize the array - rgsabound[0].lLbound = 0; - rgsabound[0].cElements = sizeof varCriteria / sizeof varCriteria[0]; - psa = SafeArrayCreate( VT_VARIANT, 1, rgsabound ); - - sal_Int32 nPos=0; - if(catalog.hasValue()) - varCriteria[nPos].setString(getString(catalog)); - - hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_CATALOG - if(schema.toChar() != '%') - varCriteria[nPos].setString(schema); - hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_SCHEMA - - varCriteria[nPos].setString(table); - hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_NAME - - varCriteria[nPos].setString(columnNamePattern); - hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// COLUMN_NAME - - OLEVariant vtEmpty; - vtEmpty.setNoArg(); - - // Initialize and fill the SafeArray - OLEVariant vsa; - vsa.setArray(psa,VT_VARIANT); - - ADORecordset *pRecordset = NULL; - m_pADOConnection->OpenSchema(adSchemaColumnPrivileges,vsa,vtEmpty,&pRecordset); + ADORecordset *pRecordset = m_pADOConnection->getColumnPrivileges(catalog,schema,table,columnNamePattern); ADOS::ThrowException(*m_pADOConnection,*this); Reference< XResultSet > xRef = NULL; @@ -400,42 +214,7 @@ Reference< XResultSet > SAL_CALL ODatabaseMetaData::getColumns( const Any& catalog, const ::rtl::OUString& schemaPattern, const ::rtl::OUString& tableNamePattern, const ::rtl::OUString& columnNamePattern ) throw(SQLException, RuntimeException) { - // Create elements used in the array - HRESULT hr = S_OK; - SAFEARRAYBOUND rgsabound[1]; - SAFEARRAY *psa = NULL; - OLEVariant varCriteria[4]; - - // Create SafeArray Bounds and initialize the array - rgsabound[0].lLbound = 0; - rgsabound[0].cElements = sizeof varCriteria / sizeof varCriteria[0]; - psa = SafeArrayCreate( VT_VARIANT, 1, rgsabound ); - - sal_Int32 nPos=0; - if(catalog.hasValue()) - varCriteria[nPos].setString(getString(catalog)); - - hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_CATALOG - if(schemaPattern.toChar() != '%') - varCriteria[nPos].setString(schemaPattern); - hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_SCHEMA - - if(tableNamePattern.toChar() != '%') - varCriteria[nPos].setString(tableNamePattern); - hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_NAME - - varCriteria[nPos].setString(columnNamePattern); - hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// COLUMN_NAME - - OLEVariant vtEmpty; - vtEmpty.setNoArg(); - - // Initialize and fill the SafeArray - OLEVariant vsa; - vsa.setArray(psa,VT_VARIANT); - - ADORecordset *pRecordset = NULL; - m_pADOConnection->OpenSchema(adSchemaColumns,vsa,vtEmpty,&pRecordset); + ADORecordset *pRecordset = m_pADOConnection->getColumns(catalog,schemaPattern,tableNamePattern,columnNamePattern); ADOS::ThrowException(*m_pADOConnection,*this); Reference< XResultSet > xRef = NULL; @@ -451,52 +230,7 @@ Reference< XResultSet > SAL_CALL ODatabaseMetaData::getTables( const Any& catalog, const ::rtl::OUString& schemaPattern, const ::rtl::OUString& tableNamePattern, const Sequence< ::rtl::OUString >& types ) throw(SQLException, RuntimeException) { - // Create elements used in the array - HRESULT hr = S_OK; - SAFEARRAYBOUND rgsabound[1]; - SAFEARRAY *psa = NULL; - OLEVariant varCriteria[4]; - - // Create SafeArray Bounds and initialize the array - rgsabound[0].lLbound = 0; - rgsabound[0].cElements = sizeof varCriteria / sizeof varCriteria[0]; - psa = SafeArrayCreate( VT_VARIANT, 1, rgsabound ); - - sal_Int32 nPos=0; - if(catalog.hasValue()) - varCriteria[nPos].setString(getString(catalog)); - - hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_CATALOG - if(schemaPattern.toChar() != '%') - varCriteria[nPos].setString(schemaPattern); - - hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_SCHEMA - if(tableNamePattern.toChar() != '%') - varCriteria[nPos].setString(tableNamePattern); - hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_NAME - - ::rtl::OUString aTypes,aComma = ::rtl::OUString::createFromAscii(","); - const ::rtl::OUString* pBegin = types.getConstArray(); - const ::rtl::OUString* pEnd = pBegin + types.getLength(); - for(;pBegin != pEnd;++pBegin) - aTypes = aTypes + *pBegin + aComma; - - if(aTypes.getLength()) - varCriteria[nPos].setString(aTypes); - // else - // varCriteria[nPos].setString(::rtl::OUString::createFromAscii("TABLE")); - - hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_TYPE - - OLEVariant vtEmpty; - vtEmpty.setNoArg(); - - // Initialize and fill the SafeArray - OLEVariant vsa; - vsa.setArray(psa,VT_VARIANT); - - ADORecordset *pRecordset = NULL; - m_pADOConnection->OpenSchema(adSchemaTables,vsa,vtEmpty,&pRecordset); + ADORecordset *pRecordset = m_pADOConnection->getTables(catalog,schemaPattern,tableNamePattern,types); ADOS::ThrowException(*m_pADOConnection,*this); Reference< XResultSet > xRef = NULL; @@ -512,43 +246,7 @@ Reference< XResultSet > SAL_CALL ODatabaseMetaData::getProcedureColumns( const Any& catalog, const ::rtl::OUString& schemaPattern, const ::rtl::OUString& procedureNamePattern, const ::rtl::OUString& columnNamePattern ) throw(SQLException, RuntimeException) { - // Create elements used in the array - HRESULT hr = S_OK; - SAFEARRAYBOUND rgsabound[1]; - SAFEARRAY *psa = NULL; - OLEVariant varCriteria[4]; - - // Create SafeArray Bounds and initialize the array - rgsabound[0].lLbound = 0; - rgsabound[0].cElements = sizeof varCriteria / sizeof varCriteria[0]; - psa = SafeArrayCreate( VT_VARIANT, 1, rgsabound ); - - sal_Int32 nPos=0; - if(catalog.hasValue()) - varCriteria[nPos].setString(getString(catalog)); - - hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_CATALOG - if(schemaPattern.toChar() != '%') - varCriteria[nPos].setString(schemaPattern); - hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_SCHEMA - - if(procedureNamePattern.toChar() != '%') - varCriteria[nPos].setString(procedureNamePattern); - hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_NAME - - if(columnNamePattern.toChar() != '%') - varCriteria[nPos].setString(columnNamePattern); - hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// COLUMN_NAME - - OLEVariant vtEmpty; - vtEmpty.setNoArg(); - - // Initialize and fill the SafeArray - OLEVariant vsa; - vsa.setArray(psa,VT_VARIANT); - - ADORecordset *pRecordset = NULL; - m_pADOConnection->OpenSchema(adSchemaProcedureParameters,vsa,vtEmpty,&pRecordset); + ADORecordset *pRecordset = m_pADOConnection->getProcedureColumns(catalog,schemaPattern,procedureNamePattern,columnNamePattern); ADOS::ThrowException(*m_pADOConnection,*this); Reference< XResultSet > xRef = NULL; @@ -565,38 +263,7 @@ Reference< XResultSet > SAL_CALL ODatabaseMetaData::getProcedures( const ::rtl::OUString& procedureNamePattern ) throw(SQLException, RuntimeException) { // Create elements used in the array - HRESULT hr = S_OK; - SAFEARRAYBOUND rgsabound[1]; - SAFEARRAY *psa = NULL; - OLEVariant varCriteria[3]; - - // Create SafeArray Bounds and initialize the array - rgsabound[0].lLbound = 0; - rgsabound[0].cElements = sizeof varCriteria / sizeof varCriteria[0]; - psa = SafeArrayCreate( VT_VARIANT, 1, rgsabound ); - - sal_Int32 nPos=0; - if(catalog.hasValue()) - varCriteria[nPos].setString(getString(catalog)); - - hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_CATALOG - if(schemaPattern.toChar() != '%') - varCriteria[nPos].setString(schemaPattern); - hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_SCHEMA - - if(procedureNamePattern.toChar() != '%') - varCriteria[nPos].setString(procedureNamePattern); - hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_NAME - - OLEVariant vtEmpty; - vtEmpty.setNoArg(); - - // Initialize and fill the SafeArray - OLEVariant vsa; - vsa.setArray(psa,VT_VARIANT); - - ADORecordset *pRecordset = NULL; - m_pADOConnection->OpenSchema(adSchemaProcedures,vsa,vtEmpty,&pRecordset); + ADORecordset *pRecordset = m_pADOConnection->getProcedures(catalog,schemaPattern,procedureNamePattern); ADOS::ThrowException(*m_pADOConnection,*this); Reference< XResultSet > xRef = NULL; @@ -678,46 +345,10 @@ sal_Int32 SAL_CALL ODatabaseMetaData::getMaxTablesInSelect( ) throw(SQLExceptio Reference< XResultSet > SAL_CALL ODatabaseMetaData::getExportedKeys( const Any& catalog, const ::rtl::OUString& schema, const ::rtl::OUString& table ) throw(SQLException, RuntimeException) { - // Create elements used in the array - HRESULT hr = S_OK; - SAFEARRAYBOUND rgsabound[1]; - SAFEARRAY *psa = NULL; - OLEVariant varCriteria[6]; - - // Create SafeArray Bounds and initialize the array - rgsabound[0].lLbound = 0; - rgsabound[0].cElements = sizeof varCriteria / sizeof varCriteria[0]; - psa = SafeArrayCreate( VT_VARIANT, 1, rgsabound ); - - sal_Int32 nPos=0; - hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_CATALOG - hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_SCHEMA - hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_NAME - - if(catalog.hasValue()) - varCriteria[nPos].setString(getString(catalog)); - - hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_CATALOG - if(schema.toChar() != '%') - varCriteria[nPos].setString(schema); - hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_SCHEMA - - varCriteria[nPos].setString(table); - hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_NAME - - OLEVariant vtEmpty; - vtEmpty.setNoArg(); - - // Initialize and fill the SafeArray - OLEVariant vsa; - vsa.setArray(psa,VT_VARIANT); - - ADORecordset *pRecordset = NULL; - m_pADOConnection->OpenSchema(adSchemaForeignKeys,vsa,vtEmpty,&pRecordset); + ADORecordset *pRecordset = m_pADOConnection->getExportedKeys(catalog,schema,table); ADOS::ThrowException(*m_pADOConnection,*this); Reference< XResultSet > xRef = NULL; - ODatabaseMetaDataResultSet* pResult = new ODatabaseMetaDataResultSet(pRecordset); pResult->setCrossReferenceMap(); xRef = pResult; @@ -728,42 +359,7 @@ Reference< XResultSet > SAL_CALL ODatabaseMetaData::getExportedKeys( Reference< XResultSet > SAL_CALL ODatabaseMetaData::getImportedKeys( const Any& catalog, const ::rtl::OUString& schema, const ::rtl::OUString& table ) throw(SQLException, RuntimeException) { - // Create elements used in the array - HRESULT hr = S_OK; - SAFEARRAYBOUND rgsabound[1]; - SAFEARRAY *psa = NULL; - OLEVariant varCriteria[6]; - - // Create SafeArray Bounds and initialize the array - rgsabound[0].lLbound = 0; - rgsabound[0].cElements = sizeof varCriteria / sizeof varCriteria[0]; - psa = SafeArrayCreate( VT_VARIANT, 1, rgsabound ); - - sal_Int32 nPos=0; - if(catalog.hasValue()) - varCriteria[nPos].setString(getString(catalog)); - - hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_CATALOG - if(schema.toChar() != '%') - varCriteria[nPos].setString(schema); - hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_SCHEMA - - varCriteria[nPos].setString(table); - hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_NAME - - hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_CATALOG - hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_SCHEMA - hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_NAME - - OLEVariant vtEmpty; - vtEmpty.setNoArg(); - - // Initialize and fill the SafeArray - OLEVariant vsa; - vsa.setArray(psa,VT_VARIANT); - - ADORecordset *pRecordset = NULL; - m_pADOConnection->OpenSchema(adSchemaForeignKeys,vsa,vtEmpty,&pRecordset); + ADORecordset *pRecordset = m_pADOConnection->getImportedKeys(catalog,schema,table); ADOS::ThrowException(*m_pADOConnection,*this); Reference< XResultSet > xRef = NULL; @@ -778,39 +374,7 @@ Reference< XResultSet > SAL_CALL ODatabaseMetaData::getImportedKeys( Reference< XResultSet > SAL_CALL ODatabaseMetaData::getPrimaryKeys( const Any& catalog, const ::rtl::OUString& schema, const ::rtl::OUString& table ) throw(SQLException, RuntimeException) { - // Create elements used in the array - HRESULT hr = S_OK; - SAFEARRAYBOUND rgsabound[1]; - SAFEARRAY *psa = NULL; - OLEVariant varCriteria[3]; - - // Create SafeArray Bounds and initialize the array - rgsabound[0].lLbound = 0; - rgsabound[0].cElements = sizeof varCriteria / sizeof varCriteria[0]; - psa = SafeArrayCreate( VT_VARIANT, 1, rgsabound ); - - sal_Int32 nPos=0; - if(catalog.hasValue()) - varCriteria[nPos].setString(getString(catalog)); - - hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_CATALOG - if(schema.toChar() != '%') - varCriteria[nPos].setString(schema); - hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_SCHEMA - - varCriteria[nPos].setString(table); - hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_NAME - - - OLEVariant vtEmpty; - vtEmpty.setNoArg(); - - // Initialize and fill the SafeArray - OLEVariant vsa; - vsa.setArray(psa,VT_VARIANT); - - ADORecordset *pRecordset = NULL; - m_pADOConnection->OpenSchema(adSchemaPrimaryKeys,vsa,vtEmpty,&pRecordset); + ADORecordset *pRecordset = m_pADOConnection->getPrimaryKeys(catalog,schema,table); ADOS::ThrowException(*m_pADOConnection,*this); Reference< XResultSet > xRef = NULL; @@ -826,42 +390,7 @@ Reference< XResultSet > SAL_CALL ODatabaseMetaData::getIndexInfo( const Any& catalog, const ::rtl::OUString& schema, const ::rtl::OUString& table, sal_Bool unique, sal_Bool approximate ) throw(SQLException, RuntimeException) { - // Create elements used in the array - HRESULT hr = S_OK; - SAFEARRAYBOUND rgsabound[1]; - SAFEARRAY *psa = NULL; - OLEVariant varCriteria[5]; - - // Create SafeArray Bounds and initialize the array - rgsabound[0].lLbound = 0; - rgsabound[0].cElements = sizeof varCriteria / sizeof varCriteria[0]; - psa = SafeArrayCreate( VT_VARIANT, 1, rgsabound ); - - sal_Int32 nPos=0; - if(catalog.hasValue()) - varCriteria[nPos].setString(getString(catalog)); - - hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_CATALOG - if(schema.toChar() != '%') - varCriteria[nPos].setString(schema); - hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_SCHEMA - - hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// INDEX_NAME - - hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TYPE - - varCriteria[nPos].setString(table); - hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_NAME - - OLEVariant vtEmpty; - vtEmpty.setNoArg(); - - // Initialize and fill the SafeArray - OLEVariant vsa; - vsa.setArray(psa,VT_VARIANT); - - ADORecordset *pRecordset = NULL; - m_pADOConnection->OpenSchema(adSchemaIndexes,vsa,vtEmpty,&pRecordset); + ADORecordset *pRecordset = m_pADOConnection->getIndexInfo(catalog,schema,table,unique,approximate); ADOS::ThrowException(*m_pADOConnection,*this); Reference< XResultSet > xRef = NULL; @@ -890,44 +419,11 @@ Reference< XResultSet > SAL_CALL ODatabaseMetaData::getTablePrivileges( sal_Int32 nEngineType = getInt32Property(::rtl::OUString::createFromAscii("Jet OLEDB:Engine Type")); Reference< XResultSet > xRef = NULL; - if(!isJetEngine(nEngineType)) + if(!ADOS::isJetEngine(nEngineType)) { // the jet provider doesn't support this method // Create elements used in the array - HRESULT hr = S_OK; - SAFEARRAYBOUND rgsabound[1]; - SAFEARRAY *psa = NULL; - OLEVariant varCriteria[5]; - - // Create SafeArray Bounds and initialize the array - rgsabound[0].lLbound = 0; - rgsabound[0].cElements = sizeof varCriteria / sizeof varCriteria[0]; - psa = SafeArrayCreate( VT_VARIANT, 1, rgsabound ); - - sal_Int32 nPos=0; - if(catalog.hasValue()) - varCriteria[nPos].setString(getString(catalog)); - - hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_CATALOG - if(schemaPattern.toChar() != '%') - varCriteria[nPos].setString(schemaPattern); - hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_SCHEMA - - if(tableNamePattern.toChar() != '%') - varCriteria[nPos].setString(tableNamePattern); - hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_NAME - - hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// GRANTOR - hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// GRANTEE - OLEVariant vtEmpty; - vtEmpty.setNoArg(); - - // Initialize and fill the SafeArray - OLEVariant vsa; - vsa.setArray(psa,VT_VARIANT); - - ADORecordset *pRecordset = NULL; - m_pADOConnection->OpenSchema(adSchemaTablePrivileges,vsa,vtEmpty,&pRecordset); + ADORecordset *pRecordset = m_pADOConnection->getTablePrivileges(catalog,schemaPattern,tableNamePattern); ADOS::ThrowException(*m_pADOConnection,*this); ODatabaseMetaDataResultSet* pResult = new ODatabaseMetaDataResultSet(pRecordset); @@ -979,49 +475,7 @@ Reference< XResultSet > SAL_CALL ODatabaseMetaData::getCrossReference( const ::rtl::OUString& primaryTable, const Any& foreignCatalog, const ::rtl::OUString& foreignSchema, const ::rtl::OUString& foreignTable ) throw(SQLException, RuntimeException) { - // Create elements used in the array - HRESULT hr = S_OK; - SAFEARRAYBOUND rgsabound[1]; - SAFEARRAY *psa = NULL; - OLEVariant varCriteria[6]; - - // Create SafeArray Bounds and initialize the array - rgsabound[0].lLbound = 0; - rgsabound[0].cElements = sizeof varCriteria / sizeof varCriteria[0]; - psa = SafeArrayCreate( VT_VARIANT, 1, rgsabound ); - - sal_Int32 nPos=0; - if(primaryCatalog.hasValue()) - varCriteria[nPos].setString(getString(primaryCatalog)); - - hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_CATALOG - if(primarySchema.toChar() != '%') - varCriteria[nPos].setString(primarySchema); - hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_SCHEMA - - varCriteria[nPos].setString(primaryTable); - hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_NAME - - if(foreignCatalog.hasValue()) - varCriteria[nPos].setString(getString(foreignCatalog)); - - hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_CATALOG - if(foreignSchema.toChar() != '%') - varCriteria[nPos].setString(foreignSchema); - hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_SCHEMA - - varCriteria[nPos].setString(foreignTable); - hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_NAME - - OLEVariant vtEmpty; - vtEmpty.setNoArg(); - - // Initialize and fill the SafeArray - OLEVariant vsa; - vsa.setArray(psa,VT_VARIANT); - - ADORecordset *pRecordset = NULL; - m_pADOConnection->OpenSchema(adSchemaForeignKeys,vsa,vtEmpty,&pRecordset); + ADORecordset *pRecordset = m_pADOConnection->getCrossReference(primaryCatalog,primarySchema,primaryTable,foreignCatalog,foreignSchema,foreignTable); ADOS::ThrowException(*m_pADOConnection,*this); Reference< XResultSet > xRef = NULL; diff --git a/connectivity/source/drivers/ado/ADatabaseMetaDataImpl.cxx b/connectivity/source/drivers/ado/ADatabaseMetaDataImpl.cxx new file mode 100644 index 000000000000..7dc1b13bc875 --- /dev/null +++ b/connectivity/source/drivers/ado/ADatabaseMetaDataImpl.cxx @@ -0,0 +1,688 @@ +/************************************************************************* + * + * $RCSfile: ADatabaseMetaDataImpl.cxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: oj $ $Date: 2001-05-23 09:16:18 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the License); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an AS IS basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ + +#ifndef _CONNECTIVITY_ADO_ADATABASEMETADATA_HXX_ +#include "ado/ADatabaseMetaData.hxx" +#endif +#ifndef _CONNECTIVITY_ADO_ADATABASEMETADATARESULTSETMETADATA_HXX_ +#include "ado/ADatabaseMetaDataResultSetMetaData.hxx" +#endif +#ifndef _CONNECTIVITY_ADO_AWRAPADO_HXX_ +#include "ado/Awrapado.hxx" +#endif +#ifndef _CONNECTIVITY_ADABAS_GROUP_HXX_ +#include "ado/AGroup.hxx" +#endif +#ifndef _CONNECTIVITY_ADO_ADOIMP_HXX_ +#include "ado/adoimp.hxx" +#endif +#ifndef _CONNECTIVITY_ADO_INDEX_HXX_ +#include "ado/AIndex.hxx" +#endif +#ifndef _CONNECTIVITY_ADO_KEY_HXX_ +#include "ado/AKey.hxx" +#endif +#ifndef _CONNECTIVITY_ADO_TABLE_HXX_ +#include "ado/ATable.hxx" +#endif +#ifndef _COM_SUN_STAR_SDBC_DATATYPE_HPP_ +#include <com/sun/star/sdbc/DataType.hpp> +#endif +#ifndef _COM_SUN_STAR_SDBC_PROCEDURERESULT_HPP_ +#include <com/sun/star/sdbc/ProcedureResult.hpp> +#endif +#ifndef _COM_SUN_STAR_SDBC_COLUMNVALUE_HPP_ +#include <com/sun/star/sdbc/ColumnValue.hpp> +#endif +#ifdef DELETE +#undef DELETE +#endif +#ifndef _COM_SUN_STAR_SDBCX_PRIVILEGE_HPP_ +#include <com/sun/star/sdbcx/Privilege.hpp> +#endif +#ifndef _COM_SUN_STAR_SDBCX_PRIVILEGEOBJECT_HPP_ +#include <com/sun/star/sdbcx/PrivilegeObject.hpp> +#endif +#ifndef _COM_SUN_STAR_SDBC_KEYRULE_HPP_ +#include <com/sun/star/sdbc/KeyRule.hpp> +#endif +#ifndef _COM_SUN_STAR_SDBCX_KEYTYPE_HPP_ +#include <com/sun/star/sdbcx/KeyType.hpp> +#endif + +using namespace connectivity; +using namespace connectivity::ado; +using namespace ::com::sun::star::sdbc; +using namespace ::com::sun::star::sdbcx; +using namespace ::com::sun::star::uno; + +// ------------------------------------------------------------------------- +void ODatabaseMetaData::fillLiterals() +{ + ADORecordset *pRecordset = NULL; + OLEVariant vtEmpty; + vtEmpty.setNoArg(); + m_pADOConnection->OpenSchema(adSchemaDBInfoLiterals,vtEmpty,vtEmpty,&pRecordset); + + ADOS::ThrowException(*m_pADOConnection,*this); + + OSL_ENSURE(pRecordset,"getMaxSize no resultset!"); + WpADORecordset aRecordset(pRecordset); + + aRecordset.MoveFirst(); + OLEVariant aValue; + sal_Int32 nRet = 0; + LiteralInfo aInfo; + while(!aRecordset.IsAtEOF()) + { + WpOLEAppendCollection<ADOFields, ADOField, WpADOField> aFields(aRecordset.GetFields()); + WpADOField aField(aFields.GetItem(1)); + aInfo.pwszLiteralValue = aField.get_Value(); + aField = aFields.GetItem(5); + aInfo.fSupported = aField.get_Value(); + aField = aFields.GetItem(6); + aInfo.cchMaxLen = aField.get_Value().getUInt32(); + + aField = aFields.GetItem(4); + sal_uInt32 nId = aField.get_Value().getUInt32(); + m_aLiteralInfo[nId] = aInfo; + + aRecordset.MoveNext(); + } + aRecordset.Close(); +} +// ------------------------------------------------------------------------- +sal_Int32 ODatabaseMetaData::getMaxSize(sal_uInt32 _nId) +{ + if(!m_aLiteralInfo.size()) + fillLiterals(); + + sal_Int32 nSize = 0; + ::std::map<sal_uInt32,LiteralInfo>::const_iterator aIter = m_aLiteralInfo.find(_nId); + if(aIter != m_aLiteralInfo.end() && (*aIter).second.fSupported) + nSize = ((*aIter).second.cchMaxLen == (-1)) ? 0 : (*aIter).second.cchMaxLen; + return nSize; +} +// ------------------------------------------------------------------------- +sal_Bool ODatabaseMetaData::isCapable(sal_uInt32 _nId) +{ + if(!m_aLiteralInfo.size()) + fillLiterals(); + sal_Bool bSupported = sal_False; + ::std::map<sal_uInt32,LiteralInfo>::const_iterator aIter = m_aLiteralInfo.find(_nId); + if(aIter != m_aLiteralInfo.end()) + bSupported = (*aIter).second.fSupported; + return bSupported; +} + +// ------------------------------------------------------------------------- +::rtl::OUString ODatabaseMetaData::getLiteral(sal_uInt32 _nId) +{ + if(!m_aLiteralInfo.size()) + fillLiterals(); + ::rtl::OUString sStr; + ::std::map<sal_uInt32,LiteralInfo>::const_iterator aIter = m_aLiteralInfo.find(_nId); + if(aIter != m_aLiteralInfo.end() && (*aIter).second.fSupported) + sStr = (*aIter).second.pwszLiteralValue; + return sStr; +} +// ----------------------------------------------------------------------------- +// ------------------------------------------------------------------------- +void ODatabaseMetaDataResultSetMetaData::setColumnPrivilegesMap() +{ + m_mColumns[8] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("IS_GRANTABLE"), + ColumnValue::NULLABLE, + 3,3,0, + DataType::VARCHAR); +} +// ------------------------------------------------------------------------- +void ODatabaseMetaDataResultSetMetaData::setColumnsMap() +{ + m_mColumns[6] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("TYPE_NAME"), + ColumnValue::NO_NULLS, + 0,0,0, + DataType::VARCHAR); + m_mColumns[11] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("NULLABLE"), + ColumnValue::NO_NULLS, + 1,1,0, + DataType::INTEGER); + m_mColumns[12] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("REMARKS"), + ColumnValue::NULLABLE, + 0,0,0, + DataType::VARCHAR); + m_mColumns[13] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("COLUMN_DEF"), + ColumnValue::NULLABLE, + 0,0,0, + DataType::VARCHAR); + m_mColumns[14] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("SQL_DATA_TYPE"), + ColumnValue::NO_NULLS, + 1,1,0, + DataType::INTEGER); + m_mColumns[15] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("SQL_DATETIME_SUB"), + ColumnValue::NO_NULLS, + 1,1,0, + DataType::INTEGER); + m_mColumns[16] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("CHAR_OCTET_LENGTH"), + ColumnValue::NO_NULLS, + 1,1,0, + DataType::INTEGER); +} +// ------------------------------------------------------------------------- +void ODatabaseMetaDataResultSetMetaData::setTablesMap() +{ + m_mColumns[5] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("REMARKS"), + ColumnValue::NULLABLE, + 0,0,0, + DataType::VARCHAR); +} +// ------------------------------------------------------------------------- +void ODatabaseMetaDataResultSetMetaData::setProcedureColumnsMap() +{ + m_mColumns[12] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("NULLABLE"), + ColumnValue::NO_NULLS, + 1,1,0, + DataType::INTEGER); +} +// ------------------------------------------------------------------------- +void ODatabaseMetaDataResultSetMetaData::setPrimaryKeysMap() +{ + m_mColumns[5] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("KEY_SEQ"), + ColumnValue::NO_NULLS, + 1,1,0, + DataType::INTEGER); + m_mColumns[6] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("PK_NAME"), + ColumnValue::NULLABLE, + 0,0,0, + DataType::VARCHAR); +} +// ------------------------------------------------------------------------- +void ODatabaseMetaDataResultSetMetaData::setIndexInfoMap() +{ + m_mColumns[4] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("NON_UNIQUE"), + ColumnValue::NO_NULLS, + 1,1,0, + DataType::BIT); + m_mColumns[5] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("INDEX_QUALIFIER"), + ColumnValue::NULLABLE, + 0,0,0, + DataType::VARCHAR); + m_mColumns[10] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("ASC_OR_DESC"), + ColumnValue::NULLABLE, + 0,0,0, + DataType::VARCHAR); +} +// ------------------------------------------------------------------------- +void ODatabaseMetaDataResultSetMetaData::setTablePrivilegesMap() +{ + m_mColumns[6] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("PRIVILEGE"), + ColumnValue::NULLABLE, + 0,0,0, + DataType::VARCHAR); + m_mColumns[7] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("IS_GRANTABLE"), + ColumnValue::NULLABLE, + 0,0,0, + DataType::VARCHAR); +} +// ------------------------------------------------------------------------- +void ODatabaseMetaDataResultSetMetaData::setCrossReferenceMap() +{ + m_mColumns[9] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("KEY_SEQ"), + ColumnValue::NO_NULLS, + 1,1,0, + DataType::INTEGER); +} +// ------------------------------------------------------------------------- +void ODatabaseMetaDataResultSetMetaData::setTypeInfoMap() +{ + m_mColumns[3] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("PRECISION"), + ColumnValue::NO_NULLS, + 1,1,0, + DataType::INTEGER); + m_mColumns[7] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("NULLABLE"), + ColumnValue::NO_NULLS, + 1,1,0, + DataType::INTEGER); + m_mColumns[12] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("AUTO_INCREMENT"), + ColumnValue::NO_NULLS, + 1,1,0, + DataType::BIT); + m_mColumns[16] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("SQL_DATA_TYPE"), + ColumnValue::NO_NULLS, + 1,1,0, + DataType::INTEGER); + m_mColumns[17] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("SQL_DATETIME_SUB"), + ColumnValue::NO_NULLS, + 1,1,0, + DataType::INTEGER); + m_mColumns[18] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("NUM_PREC_RADIX"), + ColumnValue::NO_NULLS, + 1,1,0, + DataType::INTEGER); +} +// ------------------------------------------------------------------------- +void ODatabaseMetaDataResultSetMetaData::setProceduresMap() +{ + m_mColumns[7] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("REMARKS"), + ColumnValue::NULLABLE, + 0,0,0, + DataType::VARCHAR); +} +// ------------------------------------------------------------------------- +sal_Bool SAL_CALL ODatabaseMetaDataResultSetMetaData::isSearchable( sal_Int32 column ) throw(SQLException, RuntimeException) +{ + if(m_mColumns.size() && (m_mColumnsIter = m_mColumns.find(column)) != m_mColumns.end()) + return (*m_mColumnsIter).second.isSearchable(); + return sal_True; +} +// ------------------------------------------------------------------------- +sal_Bool SAL_CALL ODatabaseMetaDataResultSetMetaData::isAutoIncrement( sal_Int32 column ) throw(SQLException, RuntimeException) +{ + if(m_mColumns.size() && (m_mColumnsIter = m_mColumns.find(column)) != m_mColumns.end()) + return (*m_mColumnsIter).second.isAutoIncrement(); + return sal_False; +} +// ------------------------------------------------------------------------- +::rtl::OUString SAL_CALL ODatabaseMetaDataResultSetMetaData::getColumnServiceName( sal_Int32 column ) throw(SQLException, RuntimeException) +{ + if(m_mColumns.size() && (m_mColumnsIter = m_mColumns.find(column)) != m_mColumns.end()) + return (*m_mColumnsIter).second.getColumnServiceName(); + return ::rtl::OUString(); +} +// ------------------------------------------------------------------------- +::rtl::OUString SAL_CALL ODatabaseMetaDataResultSetMetaData::getTableName( sal_Int32 column ) throw(SQLException, RuntimeException) +{ + if(m_mColumns.size() && (m_mColumnsIter = m_mColumns.find(column)) != m_mColumns.end()) + return (*m_mColumnsIter).second.getTableName(); + return ::rtl::OUString(); +} +// ------------------------------------------------------------------------- +::rtl::OUString SAL_CALL ODatabaseMetaDataResultSetMetaData::getCatalogName( sal_Int32 column ) throw(SQLException, RuntimeException) +{ + if(m_mColumns.size() && (m_mColumnsIter = m_mColumns.find(column)) != m_mColumns.end()) + return (*m_mColumnsIter).second.getCatalogName(); + return ::rtl::OUString(); +} +// ------------------------------------------------------------------------- +::rtl::OUString SAL_CALL ODatabaseMetaDataResultSetMetaData::getColumnTypeName( sal_Int32 column ) throw(SQLException, RuntimeException) +{ + if(m_mColumns.size() && (m_mColumnsIter = m_mColumns.find(column)) != m_mColumns.end()) + return (*m_mColumnsIter).second.getColumnTypeName(); + return ::rtl::OUString(); +} +// ------------------------------------------------------------------------- + +sal_Bool SAL_CALL ODatabaseMetaDataResultSetMetaData::isCaseSensitive( sal_Int32 column ) throw(SQLException, RuntimeException) +{ + if(m_mColumns.size() && (m_mColumnsIter = m_mColumns.find(column)) != m_mColumns.end()) + return (*m_mColumnsIter).second.isCaseSensitive(); + return sal_True; +} +// ------------------------------------------------------------------------- + +::rtl::OUString SAL_CALL ODatabaseMetaDataResultSetMetaData::getSchemaName( sal_Int32 column ) throw(SQLException, RuntimeException) +{ + if(m_mColumns.size() && (m_mColumnsIter = m_mColumns.find(column)) != m_mColumns.end()) + return (*m_mColumnsIter).second.getSchemaName(); + return ::rtl::OUString(); +} +// ----------------------------------------------------------------------------- +// ------------------------------------------------------------------------- +ObjectTypeEnum OAdoGroup::MapObjectType(sal_Int32 _ObjType) +{ + ObjectTypeEnum eNumType= adPermObjTable; + switch(_ObjType) + { + case PrivilegeObject::TABLE: + break; + case PrivilegeObject::VIEW: + eNumType = adPermObjView; + break; + case PrivilegeObject::COLUMN: + eNumType = adPermObjColumn; + break; + } + return eNumType; +} +// ------------------------------------------------------------------------- +sal_Int32 OAdoGroup::MapRight(RightsEnum _eNum) +{ + sal_Int32 nRight = 0; + if(_eNum & adRightRead) + nRight |= Privilege::SELECT; + if(_eNum & adRightInsert) + nRight |= Privilege::INSERT; + if(_eNum & adRightUpdate) + nRight |= Privilege::UPDATE; + if(_eNum & adRightDelete) + nRight |= Privilege::DELETE; + if(_eNum & adRightReadDesign) + nRight |= Privilege::READ; + if(_eNum & adRightCreate) + nRight |= Privilege::CREATE; + if(_eNum & adRightWriteDesign) + nRight |= Privilege::ALTER; + if(_eNum & adRightReference) + nRight |= Privilege::REFERENCE; + if(_eNum & adRightDrop) + nRight |= Privilege::DROP; + + return nRight; +} +// ------------------------------------------------------------------------- +RightsEnum OAdoGroup::Map2Right(sal_Int32 _eNum) +{ + sal_Int32 nRight = adRightNone; + if(_eNum & Privilege::SELECT) + nRight |= adRightRead; + + if(_eNum & Privilege::INSERT) + nRight |= adRightInsert; + + if(_eNum & Privilege::UPDATE) + nRight |= adRightUpdate; + + if(_eNum & Privilege::DELETE) + nRight |= adRightDelete; + + if(_eNum & Privilege::READ) + nRight |= adRightReadDesign; + + if(_eNum & Privilege::CREATE) + nRight |= adRightCreate; + + if(_eNum & Privilege::ALTER) + nRight |= adRightWriteDesign; + + if(_eNum & Privilege::REFERENCE) + nRight |= adRightReference; + + if(_eNum & Privilege::DROP) + nRight |= adRightDrop; + + return (RightsEnum)nRight; +} +// ------------------------------------------------------------------------- +void WpADOIndex::Create() +{ + IClassFactory2* pIUnknown = NULL; + IUnknown *pOuter = NULL; + HRESULT hr = -1; + _ADOIndex* pCommand; + hr = CoCreateInstance(ADOS::CLSID_ADOINDEX_25, + NULL, + CLSCTX_INPROC_SERVER, + ADOS::IID_ADOINDEX_25, + (void**)&pCommand ); + + + if( !FAILED( hr ) ) + operator=(pCommand); +} +// ------------------------------------------------------------------------- +void OAdoIndex::fillPropertyValues() +{ + if(m_aIndex.IsValid()) + { + m_Name = m_aIndex.get_Name(); + m_IsUnique = m_aIndex.get_Unique(); + m_IsPrimaryKeyIndex = m_aIndex.get_PrimaryKey(); + m_IsClustered = m_aIndex.get_Clustered(); + } +} +// ----------------------------------------------------------------------------- +void WpADOKey::Create() +{ + IClassFactory2* pIUnknown = NULL; + IUnknown *pOuter = NULL; + HRESULT hr = -1; + _ADOKey* pCommand; + hr = CoCreateInstance(ADOS::CLSID_ADOKEY_25, + NULL, + CLSCTX_INPROC_SERVER, + ADOS::IID_ADOKEY_25, + (void**)&pCommand ); + + + if( !FAILED( hr ) ) + operator=(pCommand); +} +// ------------------------------------------------------------------------- +void OAdoKey::fillPropertyValues() +{ + if(m_aKey.IsValid()) + { + m_Type = MapKeyRule(m_aKey.get_Type()); + m_Name = m_aKey.get_Name(); + m_ReferencedTable = m_aKey.get_RelatedTable(); + m_UpdateRule = MapRule(m_aKey.get_UpdateRule()); + m_DeleteRule = MapRule(m_aKey.get_DeleteRule()); + } +} +// ------------------------------------------------------------------------- +sal_Int32 OAdoKey::MapRule(const RuleEnum& _eNum) const +{ + sal_Int32 eNum = KeyRule::NO_ACTION; + switch(_eNum) + { + case adRICascade: + eNum = KeyRule::CASCADE; + break; + case adRISetNull: + eNum = KeyRule::SET_NULL; + break; + case adRINone: + eNum = KeyRule::NO_ACTION; + break; + case adRISetDefault: + eNum = KeyRule::SET_DEFAULT; + break; + } + return eNum; +} +// ------------------------------------------------------------------------- +RuleEnum OAdoKey::Map2Rule(const sal_Int32& _eNum) const +{ + RuleEnum eNum = adRINone; + switch(_eNum) + { + case KeyRule::CASCADE: + eNum = adRICascade; + break; + case KeyRule::SET_NULL: + eNum = adRISetNull; + break; + case KeyRule::NO_ACTION: + eNum = adRINone; + break; + case KeyRule::SET_DEFAULT: + eNum = adRISetDefault; + break; + } + return eNum; +} +// ------------------------------------------------------------------------- +sal_Int32 OAdoKey::MapKeyRule(const KeyTypeEnum& _eNum) const +{ + sal_Int32 nKeyType = KeyType::PRIMARY; + switch(_eNum) + { + case adKeyPrimary: + nKeyType = KeyType::PRIMARY; + break; + case adKeyForeign: + nKeyType = KeyType::FOREIGN; + break; + case adKeyUnique: + nKeyType = KeyType::UNIQUE; + break; + } + return nKeyType; +} +// ------------------------------------------------------------------------- +KeyTypeEnum OAdoKey::Map2KeyRule(const sal_Int32& _eNum) const +{ + KeyTypeEnum eNum; + switch(_eNum) + { + case KeyType::PRIMARY: + eNum = adKeyPrimary; + break; + case KeyType::FOREIGN: + eNum = adKeyForeign; + break; + case KeyType::UNIQUE: + eNum = adKeyUnique; + break; + } + return eNum; +} +// ----------------------------------------------------------------------------- +void WpADOTable::Create() +{ + IClassFactory2* pIUnknown = NULL; + IUnknown *pOuter = NULL; + HRESULT hr = -1; + _ADOTable* pCommand; + hr = CoCreateInstance(ADOS::CLSID_ADOTABLE_25, + NULL, + CLSCTX_INPROC_SERVER, + ADOS::IID_ADOTABLE_25, + (void**)&pCommand ); + + + if( !FAILED( hr ) ) + operator=(pCommand); +} +// ------------------------------------------------------------------------- +::rtl::OUString WpADOCatalog::GetObjectOwner(const ::rtl::OUString& _rName, ObjectTypeEnum _eNum) +{ + OLEVariant _rVar; + _rVar.setNoArg(); + OLEString aBSTR; + OLEString sStr1(_rName); + pInterface->GetObjectOwner(sStr1,_eNum,_rVar,&aBSTR); + return aBSTR; +} +// ----------------------------------------------------------------------------- +void OAdoTable::fillPropertyValues() +{ + if(m_aTable.IsValid()) + { + m_Name = m_aTable.get_Name(); + m_Type = m_aTable.get_Type(); + { + WpADOCatalog aCat(m_aTable.get_ParentCatalog()); + if(aCat.IsValid()) + m_CatalogName = aCat.GetObjectOwner(m_aTable.get_Name(),adPermObjTable); + } + { + ADOProperties* pProps = m_aTable.get_Properties(); + if(pProps) + { + pProps->AddRef(); + ADOProperty* pProp = NULL; + pProps->get_Item(OLEVariant(::rtl::OUString::createFromAscii("Description")),&pProp); + WpADOProperty aProp(pProp); + if(pProp) + m_Description = aProp.GetValue(); + pProps->Release(); + } + } + } +} +// ----------------------------------------------------------------------------- +void WpADOUser::Create() +{ + IClassFactory2* pIUnknown = NULL; + IUnknown *pOuter = NULL; + HRESULT hr = -1; + _ADOUser* pCommand; + hr = CoCreateInstance(ADOS::CLSID_ADOUSER_25, + NULL, + CLSCTX_INPROC_SERVER, + ADOS::IID_ADOUSER_25, + (void**)&pCommand ); + + + if( !FAILED( hr ) ) + operator=(pCommand); +} +// ------------------------------------------------------------------------- +void WpADOView::Create() +{ + IClassFactory2* pIUnknown = NULL; + IUnknown *pOuter = NULL; + HRESULT hr = -1; + ADOView* pCommand; + hr = CoCreateInstance(ADOS::CLSID_ADOVIEW_25, + NULL, + CLSCTX_INPROC_SERVER, + ADOS::IID_ADOVIEW_25, + (void**)&pCommand ); + + + if( !FAILED( hr ) ) + operator=(pCommand); +} + +// ------------------------------------------------------------------------- + + diff --git a/connectivity/source/drivers/ado/ADatabaseMetaDataResultSet.cxx b/connectivity/source/drivers/ado/ADatabaseMetaDataResultSet.cxx index 5682feae54da..01cf482a94ee 100644 --- a/connectivity/source/drivers/ado/ADatabaseMetaDataResultSet.cxx +++ b/connectivity/source/drivers/ado/ADatabaseMetaDataResultSet.cxx @@ -2,9 +2,9 @@ * * $RCSfile: ADatabaseMetaDataResultSet.cxx,v $ * - * $Revision: 1.12 $ + * $Revision: 1.13 $ * - * last change: $Author: oj $ $Date: 2001-05-17 09:13:23 $ + * last change: $Author: oj $ $Date: 2001-05-23 09:15:43 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -176,6 +176,12 @@ Any SAL_CALL ODatabaseMetaDataResultSet::queryInterface( const Type & rType ) th return ::comphelper::concatSequences(aTypes.getTypes(),ODatabaseMetaDataResultSet_BASE::getTypes()); } +// ----------------------------------------------------------------------------- +void ODatabaseMetaDataResultSet::checkRecordSet() throw(SQLException) +{ + if(!m_pRecordSet) + throwFunctionSequenceException(*this); +} // ------------------------------------------------------------------------- sal_Int32 SAL_CALL ODatabaseMetaDataResultSet::findColumn( const ::rtl::OUString& columnName ) throw(SQLException, RuntimeException) @@ -204,8 +210,8 @@ Reference< ::com::sun::star::io::XInputStream > SAL_CALL ODatabaseMetaDataResult ::osl::MutexGuard aGuard( m_aMutex ); checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed); - if(!m_pRecordSet) - throwFunctionSequenceException(*this); + checkRecordSet(); + columnIndex = mapColumn(columnIndex); ADO_GETFIELD(columnIndex); @@ -247,8 +253,8 @@ Reference< ::com::sun::star::io::XInputStream > SAL_CALL ODatabaseMetaDataResult ::osl::MutexGuard aGuard( m_aMutex ); checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed); - if(!m_pRecordSet) - throwFunctionSequenceException(*this); + checkRecordSet(); + columnIndex = mapColumn(columnIndex); return NULL; @@ -260,8 +266,8 @@ sal_Bool SAL_CALL ODatabaseMetaDataResultSet::getBoolean( sal_Int32 columnIndex ::osl::MutexGuard aGuard( m_aMutex ); checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed); - if(!m_pRecordSet) - throwFunctionSequenceException(*this); + checkRecordSet(); + columnIndex = mapColumn(columnIndex); ADO_GETFIELD(columnIndex); @@ -277,8 +283,8 @@ sal_Int8 SAL_CALL ODatabaseMetaDataResultSet::getByte( sal_Int32 columnIndex ) t ::osl::MutexGuard aGuard( m_aMutex ); checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed); - if(!m_pRecordSet) - throwFunctionSequenceException(*this); + checkRecordSet(); + columnIndex = mapColumn(columnIndex); ADO_GETFIELD(columnIndex); @@ -299,8 +305,8 @@ Sequence< sal_Int8 > SAL_CALL ODatabaseMetaDataResultSet::getBytes( sal_Int32 co ::osl::MutexGuard aGuard( m_aMutex ); checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed); - if(!m_pRecordSet) - throwFunctionSequenceException(*this); + checkRecordSet(); + columnIndex = mapColumn(columnIndex); ADO_GETFIELD(columnIndex); @@ -316,8 +322,8 @@ Sequence< sal_Int8 > SAL_CALL ODatabaseMetaDataResultSet::getBytes( sal_Int32 co ::osl::MutexGuard aGuard( m_aMutex ); checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed); - if(!m_pRecordSet) - throwFunctionSequenceException(*this); + checkRecordSet(); + columnIndex = mapColumn(columnIndex); ADO_GETFIELD(columnIndex); @@ -333,8 +339,8 @@ double SAL_CALL ODatabaseMetaDataResultSet::getDouble( sal_Int32 columnIndex ) t ::osl::MutexGuard aGuard( m_aMutex ); checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed); - if(!m_pRecordSet) - throwFunctionSequenceException(*this); + checkRecordSet(); + columnIndex = mapColumn(columnIndex); ADO_GETFIELD(columnIndex); @@ -350,8 +356,8 @@ float SAL_CALL ODatabaseMetaDataResultSet::getFloat( sal_Int32 columnIndex ) thr ::osl::MutexGuard aGuard( m_aMutex ); checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed); - if(!m_pRecordSet) - throwFunctionSequenceException(*this); + checkRecordSet(); + columnIndex = mapColumn(columnIndex); ADO_GETFIELD(columnIndex); @@ -367,8 +373,8 @@ sal_Int32 SAL_CALL ODatabaseMetaDataResultSet::getInt( sal_Int32 columnIndex ) t ::osl::MutexGuard aGuard( m_aMutex ); checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed); - if(!m_pRecordSet) - throwFunctionSequenceException(*this); + checkRecordSet(); + columnIndex = mapColumn(columnIndex); ADO_GETFIELD(columnIndex); @@ -390,8 +396,8 @@ sal_Int32 SAL_CALL ODatabaseMetaDataResultSet::getRow( ) throw(SQLException, Ru ::osl::MutexGuard aGuard( m_aMutex ); checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed); - if(!m_pRecordSet) - throwFunctionSequenceException(*this); + checkRecordSet(); + return 0; } @@ -402,8 +408,8 @@ sal_Int64 SAL_CALL ODatabaseMetaDataResultSet::getLong( sal_Int32 columnIndex ) ::osl::MutexGuard aGuard( m_aMutex ); checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed); - if(!m_pRecordSet) - throwFunctionSequenceException(*this); + checkRecordSet(); + columnIndex = mapColumn(columnIndex); ADO_GETFIELD(columnIndex); @@ -416,8 +422,8 @@ Reference< XResultSetMetaData > SAL_CALL ODatabaseMetaDataResultSet::getMetaData ::osl::MutexGuard aGuard( m_aMutex ); checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed); - if(!m_pRecordSet) - throwFunctionSequenceException(*this); + checkRecordSet(); + if(!m_xMetaData.is()) m_xMetaData = new ODatabaseMetaDataResultSetMetaData(m_pRecordSet,this); @@ -430,8 +436,8 @@ Reference< XArray > SAL_CALL ODatabaseMetaDataResultSet::getArray( sal_Int32 col ::osl::MutexGuard aGuard( m_aMutex ); checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed); - if(!m_pRecordSet) - throwFunctionSequenceException(*this); + checkRecordSet(); + columnIndex = mapColumn(columnIndex); return NULL; @@ -444,8 +450,8 @@ Reference< XClob > SAL_CALL ODatabaseMetaDataResultSet::getClob( sal_Int32 colum ::osl::MutexGuard aGuard( m_aMutex ); checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed); - if(!m_pRecordSet) - throwFunctionSequenceException(*this); + checkRecordSet(); + columnIndex = mapColumn(columnIndex); return NULL; @@ -456,8 +462,8 @@ Reference< XBlob > SAL_CALL ODatabaseMetaDataResultSet::getBlob( sal_Int32 colum ::osl::MutexGuard aGuard( m_aMutex ); checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed); - if(!m_pRecordSet) - throwFunctionSequenceException(*this); + checkRecordSet(); + columnIndex = mapColumn(columnIndex); return NULL; @@ -469,8 +475,8 @@ Reference< XRef > SAL_CALL ODatabaseMetaDataResultSet::getRef( sal_Int32 columnI ::osl::MutexGuard aGuard( m_aMutex ); checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed); - if(!m_pRecordSet) - throwFunctionSequenceException(*this); + checkRecordSet(); + columnIndex = mapColumn(columnIndex); return NULL; @@ -482,8 +488,8 @@ Any SAL_CALL ODatabaseMetaDataResultSet::getObject( sal_Int32 columnIndex, const ::osl::MutexGuard aGuard( m_aMutex ); checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed); - if(!m_pRecordSet) - throwFunctionSequenceException(*this); + checkRecordSet(); + columnIndex = mapColumn(columnIndex); return Any(); @@ -495,8 +501,8 @@ sal_Int16 SAL_CALL ODatabaseMetaDataResultSet::getShort( sal_Int32 columnIndex ) ::osl::MutexGuard aGuard( m_aMutex ); checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed); - if(!m_pRecordSet) - throwFunctionSequenceException(*this); + checkRecordSet(); + columnIndex = mapColumn(columnIndex); ADO_GETFIELD(columnIndex); @@ -518,8 +524,8 @@ sal_Int16 SAL_CALL ODatabaseMetaDataResultSet::getShort( sal_Int32 columnIndex ) ::osl::MutexGuard aGuard( m_aMutex ); checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed); - if(!m_pRecordSet) - throwFunctionSequenceException(*this); + checkRecordSet(); + columnIndex = mapColumn(columnIndex); ADO_GETFIELD(columnIndex); @@ -540,8 +546,8 @@ sal_Int16 SAL_CALL ODatabaseMetaDataResultSet::getShort( sal_Int32 columnIndex ) ::osl::MutexGuard aGuard( m_aMutex ); checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed); - if(!m_pRecordSet) - throwFunctionSequenceException(*this); + checkRecordSet(); + columnIndex = mapColumn(columnIndex); ADO_GETFIELD(columnIndex); @@ -558,8 +564,8 @@ sal_Int16 SAL_CALL ODatabaseMetaDataResultSet::getShort( sal_Int32 columnIndex ) ::osl::MutexGuard aGuard( m_aMutex ); checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed); - if(!m_pRecordSet) - throwFunctionSequenceException(*this); + checkRecordSet(); + columnIndex = mapColumn(columnIndex); ADO_GETFIELD(columnIndex); @@ -575,8 +581,8 @@ sal_Bool SAL_CALL ODatabaseMetaDataResultSet::isAfterLast( ) throw(SQLException ::osl::MutexGuard aGuard( m_aMutex ); checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed); - if(!m_pRecordSet) - throwFunctionSequenceException(*this); + checkRecordSet(); + VARIANT_BOOL bIsAtEOF; m_pRecordSet->get_EOF(&bIsAtEOF); @@ -588,8 +594,8 @@ sal_Bool SAL_CALL ODatabaseMetaDataResultSet::isFirst( ) throw(SQLException, Ru ::osl::MutexGuard aGuard( m_aMutex ); checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed); - if(!m_pRecordSet) - throwFunctionSequenceException(*this); + checkRecordSet(); + return m_nRowPos == 1; } @@ -599,8 +605,8 @@ sal_Bool SAL_CALL ODatabaseMetaDataResultSet::isLast( ) throw(SQLException, Run ::osl::MutexGuard aGuard( m_aMutex ); checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed); - if(!m_pRecordSet) - throwFunctionSequenceException(*this); + checkRecordSet(); + return sal_True; } @@ -610,8 +616,8 @@ void SAL_CALL ODatabaseMetaDataResultSet::beforeFirst( ) throw(SQLException, Ru ::osl::MutexGuard aGuard( m_aMutex ); checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed); - if(!m_pRecordSet) - throwFunctionSequenceException(*this); + checkRecordSet(); + if(first()) previous(); @@ -622,8 +628,8 @@ void SAL_CALL ODatabaseMetaDataResultSet::afterLast( ) throw(SQLException, Runt ::osl::MutexGuard aGuard( m_aMutex ); checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed); - if(!m_pRecordSet) - throwFunctionSequenceException(*this); + checkRecordSet(); + if(last()) next(); @@ -728,8 +734,8 @@ sal_Bool SAL_CALL ODatabaseMetaDataResultSet::rowDeleted( ) throw(SQLException, ::osl::MutexGuard aGuard( m_aMutex ); checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed); - if(!m_pRecordSet) - throwFunctionSequenceException(*this); + checkRecordSet(); + RecordStatusEnum eRec; m_pRecordSet->get_Status((sal_Int32*)&eRec); @@ -740,8 +746,8 @@ sal_Bool SAL_CALL ODatabaseMetaDataResultSet::rowInserted( ) throw(SQLException { ::osl::MutexGuard aGuard( m_aMutex ); checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed); - if(!m_pRecordSet) - throwFunctionSequenceException(*this); + checkRecordSet(); + RecordStatusEnum eRec; m_pRecordSet->get_Status((sal_Int32*)&eRec); @@ -753,8 +759,8 @@ sal_Bool SAL_CALL ODatabaseMetaDataResultSet::rowUpdated( ) throw(SQLException, ::osl::MutexGuard aGuard( m_aMutex ); checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed); - if(!m_pRecordSet) - throwFunctionSequenceException(*this); + checkRecordSet(); + RecordStatusEnum eRec; m_pRecordSet->get_Status((sal_Int32*)&eRec); @@ -801,8 +807,8 @@ sal_Bool SAL_CALL ODatabaseMetaDataResultSet::wasNull( ) throw(SQLException, Ru ::osl::MutexGuard aGuard( m_aMutex ); checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed); - if(!m_pRecordSet) - throwFunctionSequenceException(*this); + checkRecordSet(); + return m_aValue.isNull(); } @@ -812,8 +818,8 @@ void SAL_CALL ODatabaseMetaDataResultSet::refreshRow( ) throw(SQLException, Run ::osl::MutexGuard aGuard( m_aMutex ); checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed); - if(!m_pRecordSet) - throwFunctionSequenceException(*this); + checkRecordSet(); + m_pRecordSet->Resync(adAffectCurrent,adResyncAllValues); } @@ -824,8 +830,8 @@ void SAL_CALL ODatabaseMetaDataResultSet::cancel( ) throw(RuntimeException) ::osl::MutexGuard aGuard( m_aMutex ); checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed); - if(!m_pRecordSet) - throwFunctionSequenceException(*this); + checkRecordSet(); + m_pRecordSet->Cancel(); } diff --git a/connectivity/source/drivers/ado/ADatabaseMetaDataResultSetMetaData.cxx b/connectivity/source/drivers/ado/ADatabaseMetaDataResultSetMetaData.cxx index 5f5c6ddc5ae2..4a2d9f1fd749 100644 --- a/connectivity/source/drivers/ado/ADatabaseMetaDataResultSetMetaData.cxx +++ b/connectivity/source/drivers/ado/ADatabaseMetaDataResultSetMetaData.cxx @@ -2,9 +2,9 @@ * * $RCSfile: ADatabaseMetaDataResultSetMetaData.cxx,v $ * - * $Revision: 1.5 $ + * $Revision: 1.6 $ * - * last change: $Author: oj $ $Date: 2001-05-17 07:26:59 $ + * last change: $Author: oj $ $Date: 2001-05-23 09:13:09 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -63,16 +63,6 @@ #include "ado/ADatabaseMetaDataResultSetMetaData.hxx" #endif -#ifndef _COM_SUN_STAR_SDBC_DATATYPE_HPP_ -#include <com/sun/star/sdbc/DataType.hpp> -#endif -#ifndef _COM_SUN_STAR_SDBC_PROCEDURERESULT_HPP_ -#include <com/sun/star/sdbc/ProcedureResult.hpp> -#endif -#ifndef _COM_SUN_STAR_SDBC_COLUMNVALUE_HPP_ -#include <com/sun/star/sdbc/ColumnValue.hpp> -#endif - #ifndef _CONNECTIVITY_ADO_AWRAPADO_HXX_ #include "ado/Awrapado.hxx" #endif @@ -141,22 +131,6 @@ sal_Int32 SAL_CALL ODatabaseMetaDataResultSetMetaData::getColumnCount( ) throw( } // ------------------------------------------------------------------------- -sal_Bool SAL_CALL ODatabaseMetaDataResultSetMetaData::isCaseSensitive( sal_Int32 column ) throw(SQLException, RuntimeException) -{ - if(m_mColumns.size() && (m_mColumnsIter = m_mColumns.find(column)) != m_mColumns.end()) - return (*m_mColumnsIter).second.isCaseSensitive(); - return sal_True; -} -// ------------------------------------------------------------------------- - -::rtl::OUString SAL_CALL ODatabaseMetaDataResultSetMetaData::getSchemaName( sal_Int32 column ) throw(SQLException, RuntimeException) -{ - if(m_mColumns.size() && (m_mColumnsIter = m_mColumns.find(column)) != m_mColumns.end()) - return (*m_mColumnsIter).second.getSchemaName(); - return ::rtl::OUString(); -} -// ------------------------------------------------------------------------- - ::rtl::OUString SAL_CALL ODatabaseMetaDataResultSetMetaData::getColumnName( sal_Int32 column ) throw(SQLException, RuntimeException) { if(m_mColumns.size() && (m_mColumnsIter = m_mColumns.find(column)) != m_mColumns.end()) @@ -170,27 +144,6 @@ sal_Bool SAL_CALL ODatabaseMetaDataResultSetMetaData::isCaseSensitive( sal_Int32 return ::rtl::OUString(); } // ------------------------------------------------------------------------- -::rtl::OUString SAL_CALL ODatabaseMetaDataResultSetMetaData::getTableName( sal_Int32 column ) throw(SQLException, RuntimeException) -{ - if(m_mColumns.size() && (m_mColumnsIter = m_mColumns.find(column)) != m_mColumns.end()) - return (*m_mColumnsIter).second.getTableName(); - return ::rtl::OUString(); -} -// ------------------------------------------------------------------------- -::rtl::OUString SAL_CALL ODatabaseMetaDataResultSetMetaData::getCatalogName( sal_Int32 column ) throw(SQLException, RuntimeException) -{ - if(m_mColumns.size() && (m_mColumnsIter = m_mColumns.find(column)) != m_mColumns.end()) - return (*m_mColumnsIter).second.getCatalogName(); - return ::rtl::OUString(); -} -// ------------------------------------------------------------------------- -::rtl::OUString SAL_CALL ODatabaseMetaDataResultSetMetaData::getColumnTypeName( sal_Int32 column ) throw(SQLException, RuntimeException) -{ - if(m_mColumns.size() && (m_mColumnsIter = m_mColumns.find(column)) != m_mColumns.end()) - return (*m_mColumnsIter).second.getColumnTypeName(); - return ::rtl::OUString(); -} -// ------------------------------------------------------------------------- ::rtl::OUString SAL_CALL ODatabaseMetaDataResultSetMetaData::getColumnLabel( sal_Int32 column ) throw(SQLException, RuntimeException) { if(m_mColumns.size() && (m_mColumnsIter = m_mColumns.find(column)) != m_mColumns.end()) @@ -198,13 +151,6 @@ sal_Bool SAL_CALL ODatabaseMetaDataResultSetMetaData::isCaseSensitive( sal_Int32 return getColumnName(column); } // ------------------------------------------------------------------------- -::rtl::OUString SAL_CALL ODatabaseMetaDataResultSetMetaData::getColumnServiceName( sal_Int32 column ) throw(SQLException, RuntimeException) -{ - if(m_mColumns.size() && (m_mColumnsIter = m_mColumns.find(column)) != m_mColumns.end()) - return (*m_mColumnsIter).second.getColumnServiceName(); - return ::rtl::OUString(); -} -// ------------------------------------------------------------------------- sal_Bool SAL_CALL ODatabaseMetaDataResultSetMetaData::isCurrency( sal_Int32 column ) throw(SQLException, RuntimeException) { @@ -221,14 +167,6 @@ sal_Bool SAL_CALL ODatabaseMetaDataResultSetMetaData::isCurrency( sal_Int32 colu } // ------------------------------------------------------------------------- -sal_Bool SAL_CALL ODatabaseMetaDataResultSetMetaData::isAutoIncrement( sal_Int32 column ) throw(SQLException, RuntimeException) -{ - if(m_mColumns.size() && (m_mColumnsIter = m_mColumns.find(column)) != m_mColumns.end()) - return (*m_mColumnsIter).second.isAutoIncrement(); - return sal_False; -} -// ------------------------------------------------------------------------- - sal_Bool SAL_CALL ODatabaseMetaDataResultSetMetaData::isSigned( sal_Int32 column ) throw(SQLException, RuntimeException) { @@ -288,14 +226,6 @@ sal_Int32 SAL_CALL ODatabaseMetaDataResultSetMetaData::isNullable( sal_Int32 col } // ------------------------------------------------------------------------- -sal_Bool SAL_CALL ODatabaseMetaDataResultSetMetaData::isSearchable( sal_Int32 column ) throw(SQLException, RuntimeException) -{ - if(m_mColumns.size() && (m_mColumnsIter = m_mColumns.find(column)) != m_mColumns.end()) - return (*m_mColumnsIter).second.isSearchable(); - return sal_True; -} -// ------------------------------------------------------------------------- - sal_Bool SAL_CALL ODatabaseMetaDataResultSetMetaData::isReadOnly( sal_Int32 column ) throw(SQLException, RuntimeException) { if(m_mColumns.size() && (m_mColumnsIter = m_mColumns.find(column)) != m_mColumns.end()) @@ -336,145 +266,6 @@ sal_Bool SAL_CALL ODatabaseMetaDataResultSetMetaData::isWritable( sal_Int32 colu return (*m_mColumnsIter).second.isWritable(); return isDefinitelyWritable(column); } -// ------------------------------------------------------------------------- -void ODatabaseMetaDataResultSetMetaData::setColumnPrivilegesMap() -{ - m_mColumns[8] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("IS_GRANTABLE"), - ColumnValue::NULLABLE, - 3,3,0, - DataType::VARCHAR); -} -// ------------------------------------------------------------------------- -void ODatabaseMetaDataResultSetMetaData::setColumnsMap() -{ - m_mColumns[6] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("TYPE_NAME"), - ColumnValue::NO_NULLS, - 0,0,0, - DataType::VARCHAR); - m_mColumns[11] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("NULLABLE"), - ColumnValue::NO_NULLS, - 1,1,0, - DataType::INTEGER); - m_mColumns[12] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("REMARKS"), - ColumnValue::NULLABLE, - 0,0,0, - DataType::VARCHAR); - m_mColumns[13] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("COLUMN_DEF"), - ColumnValue::NULLABLE, - 0,0,0, - DataType::VARCHAR); - m_mColumns[14] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("SQL_DATA_TYPE"), - ColumnValue::NO_NULLS, - 1,1,0, - DataType::INTEGER); - m_mColumns[15] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("SQL_DATETIME_SUB"), - ColumnValue::NO_NULLS, - 1,1,0, - DataType::INTEGER); - m_mColumns[16] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("CHAR_OCTET_LENGTH"), - ColumnValue::NO_NULLS, - 1,1,0, - DataType::INTEGER); -} -// ------------------------------------------------------------------------- -void ODatabaseMetaDataResultSetMetaData::setTablesMap() -{ - m_mColumns[5] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("REMARKS"), - ColumnValue::NULLABLE, - 0,0,0, - DataType::VARCHAR); -} -// ------------------------------------------------------------------------- -void ODatabaseMetaDataResultSetMetaData::setProcedureColumnsMap() -{ - m_mColumns[12] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("NULLABLE"), - ColumnValue::NO_NULLS, - 1,1,0, - DataType::INTEGER); -} -// ------------------------------------------------------------------------- -void ODatabaseMetaDataResultSetMetaData::setPrimaryKeysMap() -{ - m_mColumns[5] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("KEY_SEQ"), - ColumnValue::NO_NULLS, - 1,1,0, - DataType::INTEGER); - m_mColumns[6] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("PK_NAME"), - ColumnValue::NULLABLE, - 0,0,0, - DataType::VARCHAR); -} -// ------------------------------------------------------------------------- -void ODatabaseMetaDataResultSetMetaData::setIndexInfoMap() -{ - m_mColumns[4] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("NON_UNIQUE"), - ColumnValue::NO_NULLS, - 1,1,0, - DataType::BIT); - m_mColumns[5] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("INDEX_QUALIFIER"), - ColumnValue::NULLABLE, - 0,0,0, - DataType::VARCHAR); - m_mColumns[10] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("ASC_OR_DESC"), - ColumnValue::NULLABLE, - 0,0,0, - DataType::VARCHAR); -} -// ------------------------------------------------------------------------- -void ODatabaseMetaDataResultSetMetaData::setTablePrivilegesMap() -{ - m_mColumns[6] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("PRIVILEGE"), - ColumnValue::NULLABLE, - 0,0,0, - DataType::VARCHAR); - m_mColumns[7] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("IS_GRANTABLE"), - ColumnValue::NULLABLE, - 0,0,0, - DataType::VARCHAR); -} -// ------------------------------------------------------------------------- -void ODatabaseMetaDataResultSetMetaData::setCrossReferenceMap() -{ - m_mColumns[9] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("KEY_SEQ"), - ColumnValue::NO_NULLS, - 1,1,0, - DataType::INTEGER); -} -// ------------------------------------------------------------------------- -void ODatabaseMetaDataResultSetMetaData::setTypeInfoMap() -{ - m_mColumns[3] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("PRECISION"), - ColumnValue::NO_NULLS, - 1,1,0, - DataType::INTEGER); - m_mColumns[7] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("NULLABLE"), - ColumnValue::NO_NULLS, - 1,1,0, - DataType::INTEGER); - m_mColumns[12] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("AUTO_INCREMENT"), - ColumnValue::NO_NULLS, - 1,1,0, - DataType::BIT); - m_mColumns[16] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("SQL_DATA_TYPE"), - ColumnValue::NO_NULLS, - 1,1,0, - DataType::INTEGER); - m_mColumns[17] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("SQL_DATETIME_SUB"), - ColumnValue::NO_NULLS, - 1,1,0, - DataType::INTEGER); - m_mColumns[18] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("NUM_PREC_RADIX"), - ColumnValue::NO_NULLS, - 1,1,0, - DataType::INTEGER); -} -// ------------------------------------------------------------------------- -void ODatabaseMetaDataResultSetMetaData::setProceduresMap() -{ - m_mColumns[7] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("REMARKS"), - ColumnValue::NULLABLE, - 0,0,0, - DataType::VARCHAR); -} -// ------------------------------------------------------------------------- +// ----------------------------------------------------------------------------- + diff --git a/connectivity/source/drivers/ado/ADriver.cxx b/connectivity/source/drivers/ado/ADriver.cxx index 2105a20075c2..75b017c2b2d6 100644 --- a/connectivity/source/drivers/ado/ADriver.cxx +++ b/connectivity/source/drivers/ado/ADriver.cxx @@ -2,9 +2,9 @@ * * $RCSfile: ADriver.cxx,v $ * - * $Revision: 1.5 $ + * $Revision: 1.6 $ * - * last change: $Author: oj $ $Date: 2001-05-22 07:40:32 $ + * last change: $Author: oj $ $Date: 2001-05-23 09:13:09 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -175,11 +175,7 @@ Reference< XConnection > SAL_CALL ODriver::connect( const ::rtl::OUString& url, sal_Bool SAL_CALL ODriver::acceptsURL( const ::rtl::OUString& url ) throw(SQLException, RuntimeException) { - if(!url.compareTo(::rtl::OUString::createFromAscii("sdbc:ado:"),9)) - { - return sal_True; - } - return sal_False; + return (!url.compareTo(::rtl::OUString::createFromAscii("sdbc:ado:"),9)); } // -------------------------------------------------------------------------------- Sequence< DriverPropertyInfo > SAL_CALL ODriver::getPropertyInfo( const ::rtl::OUString& url, const Sequence< PropertyValue >& info ) throw(SQLException, RuntimeException) @@ -240,30 +236,65 @@ Reference< XTablesSupplier > SAL_CALL ODriver::getDataDefinitionByURL( const ::r return getDataDefinitionByConnection(connect(url,info)); } -//#include <tools/prewin.h> -//namespace test__rr__ -//{ -// -//#import "c:\Program Files\Common Files\system\ado\msadox.dll" -// -//} -//#include <tools/postwin.h> +// ----------------------------------------------------------------------------- +void OLEVariant::ChangeType(VARTYPE vartype, const OLEVariant* pSrc) +{ + // + // If pDest is NULL, convert type in place + // + if (pSrc == NULL) + pSrc = this; -void WpADOCatalog::Create() + if ((this != pSrc) || (vartype != V_VT(this))) + { + if(FAILED(::VariantChangeType(static_cast<VARIANT*>(this), + const_cast<VARIANT*>(static_cast<const VARIANT*>(pSrc)), + 0, vartype))) + throw ::com::sun::star::sdbc::SQLException(::rtl::OUString::createFromAscii("Could convert type!"),NULL,::rtl::OUString(),1000,::com::sun::star::uno::Any()); + } +} +// ----------------------------------------------------------------------------- +void ADOS::ThrowException(ADOConnection* _pAdoCon,const Reference< XInterface >& _xInterface) throw(SQLException, RuntimeException) { - IClassFactory2* pIUnknown = NULL; - IUnknown *pOuter = NULL; - HRESULT hr = -1; - _ADOCatalog* pCommand; - hr = CoCreateInstance(ADOS::CLSID_ADOCATALOG_25, - NULL, - CLSCTX_INPROC_SERVER, - ADOS::IID_ADOCATALOG_25, - (void**)&pCommand ); + ADOErrors *pErrors = NULL; + _pAdoCon->get_Errors(&pErrors); + if(!pErrors) + return; // no error found + pErrors->AddRef( ); - if( !FAILED( hr ) ) - operator=(pCommand); + // alle aufgelaufenen Fehler auslesen und ausgeben + sal_Int32 nLen; + pErrors->get_Count(&nLen); + if (nLen) + { + ::rtl::OUString sError; + ::rtl::OUString aSQLState; + SQLException aException; + for (sal_Int32 i = nLen-1; i>=0; i--) + { + ADOError *pError = NULL; + pErrors->get_Item(OLEVariant(i),&pError); + WpADOError aErr(pError); + OSL_ENSURE(pError,"No error in collection found! BAD!"); + if(pError) + { + if(i==nLen-1) + aException = SQLException(aErr.GetDescription(),_xInterface,aErr.GetSQLState(),aErr.GetNumber(),Any()); + else + { + SQLException aTemp = SQLException(aErr.GetDescription(), + _xInterface,aErr.GetSQLState(),aErr.GetNumber(),makeAny(aException)); + aTemp.NextException <<= aException; + aException = aTemp; + } + } + } + pErrors->Clear(); + pErrors->Release(); + throw aException; + } + pErrors->Release(); } diff --git a/connectivity/source/drivers/ado/AGroup.cxx b/connectivity/source/drivers/ado/AGroup.cxx index 06cb5f050802..dd9e8aa55265 100644 --- a/connectivity/source/drivers/ado/AGroup.cxx +++ b/connectivity/source/drivers/ado/AGroup.cxx @@ -2,9 +2,9 @@ * * $RCSfile: AGroup.cxx,v $ * - * $Revision: 1.9 $ + * $Revision: 1.10 $ * - * last change: $Author: oj $ $Date: 2001-05-22 07:40:32 $ + * last change: $Author: oj $ $Date: 2001-05-23 09:13:09 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -71,15 +71,6 @@ #ifndef _COMPHELPER_SEQUENCE_HXX_ #include <comphelper/sequence.hxx> #endif -#ifdef DELETE -#undef DELETE -#endif -#ifndef _COM_SUN_STAR_SDBCX_PRIVILEGE_HPP_ -#include <com/sun/star/sdbcx/Privilege.hpp> -#endif -#ifndef _COM_SUN_STAR_SDBCX_PRIVILEGEOBJECT_HPP_ -#include <com/sun/star/sdbcx/PrivilegeObject.hpp> -#endif #ifndef _COM_SUN_STAR_SDBC_XROW_HPP_ #include <com/sun/star/sdbc/XRow.hpp> @@ -247,81 +238,7 @@ void SAL_CALL OAdoGroup::revokePrivileges( const ::rtl::OUString& objName, sal_I { m_aGroup.SetPermissions(objName,MapObjectType(objType),adAccessDeny,Map2Right(objPrivileges)); } -// ------------------------------------------------------------------------- -ObjectTypeEnum OAdoGroup::MapObjectType(sal_Int32 _ObjType) -{ - ObjectTypeEnum eNumType= adPermObjTable; - switch(_ObjType) - { - case PrivilegeObject::TABLE: - break; - case PrivilegeObject::VIEW: - eNumType = adPermObjView; - break; - case PrivilegeObject::COLUMN: - eNumType = adPermObjColumn; - break; - } - return eNumType; -} -// ------------------------------------------------------------------------- -sal_Int32 OAdoGroup::MapRight(RightsEnum _eNum) -{ - sal_Int32 nRight = 0; - if(_eNum & adRightRead) - nRight |= Privilege::SELECT; - if(_eNum & adRightInsert) - nRight |= Privilege::INSERT; - if(_eNum & adRightUpdate) - nRight |= Privilege::UPDATE; - if(_eNum & adRightDelete) - nRight |= Privilege::DELETE; - if(_eNum & adRightReadDesign) - nRight |= Privilege::READ; - if(_eNum & adRightCreate) - nRight |= Privilege::CREATE; - if(_eNum & adRightWriteDesign) - nRight |= Privilege::ALTER; - if(_eNum & adRightReference) - nRight |= Privilege::REFERENCE; - if(_eNum & adRightDrop) - nRight |= Privilege::DROP; - return nRight; -} -// ------------------------------------------------------------------------- -RightsEnum OAdoGroup::Map2Right(sal_Int32 _eNum) -{ - sal_Int32 nRight = adRightNone; - if(_eNum & Privilege::SELECT) - nRight |= adRightRead; - - if(_eNum & Privilege::INSERT) - nRight |= adRightInsert; - - if(_eNum & Privilege::UPDATE) - nRight |= adRightUpdate; - - if(_eNum & Privilege::DELETE) - nRight |= adRightDelete; - - if(_eNum & Privilege::READ) - nRight |= adRightReadDesign; - - if(_eNum & Privilege::CREATE) - nRight |= adRightCreate; - - if(_eNum & Privilege::ALTER) - nRight |= adRightWriteDesign; - - if(_eNum & Privilege::REFERENCE) - nRight |= adRightReference; - - if(_eNum & Privilege::DROP) - nRight |= adRightDrop; - - return (RightsEnum)nRight; -} // ----------------------------------------------------------------------------- void SAL_CALL OAdoGroup::acquire() throw(::com::sun::star::uno::RuntimeException) { diff --git a/connectivity/source/drivers/ado/AIndex.cxx b/connectivity/source/drivers/ado/AIndex.cxx index 3fe4f16ab95a..43547254534a 100644 --- a/connectivity/source/drivers/ado/AIndex.cxx +++ b/connectivity/source/drivers/ado/AIndex.cxx @@ -2,9 +2,9 @@ * * $RCSfile: AIndex.cxx,v $ * - * $Revision: 1.12 $ + * $Revision: 1.13 $ * - * last change: $Author: oj $ $Date: 2001-05-22 07:40:32 $ + * last change: $Author: oj $ $Date: 2001-05-23 09:13:09 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -96,23 +96,6 @@ using namespace com::sun::star::beans; using namespace com::sun::star::sdbc; // ------------------------------------------------------------------------- -void WpADOIndex::Create() -{ - IClassFactory2* pIUnknown = NULL; - IUnknown *pOuter = NULL; - HRESULT hr = -1; - _ADOIndex* pCommand; - hr = CoCreateInstance(ADOS::CLSID_ADOINDEX_25, - NULL, - CLSCTX_INPROC_SERVER, - ADOS::IID_ADOINDEX_25, - (void**)&pCommand ); - - - if( !FAILED( hr ) ) - operator=(pCommand); -} -// ------------------------------------------------------------------------- OAdoIndex::OAdoIndex(sal_Bool _bCase,OConnection* _pConnection,ADOIndex* _pIndex) : OIndex_ADO(::rtl::OUString(),::rtl::OUString(),sal_False,sal_False,sal_False,_bCase) ,m_pConnection(_pConnection) @@ -223,18 +206,6 @@ void SAL_CALL OAdoIndex::setFastPropertyValue_NoBroadcast(sal_Int32 nHandle,cons } OIndex_ADO::setFastPropertyValue_NoBroadcast(nHandle,rValue); } -// ------------------------------------------------------------------------- -void OAdoIndex::fillPropertyValues() -{ - if(m_aIndex.IsValid()) - { - m_Name = m_aIndex.get_Name(); - m_IsUnique = m_aIndex.get_Unique(); - m_IsPrimaryKeyIndex = m_aIndex.get_PrimaryKey(); - m_IsClustered = m_aIndex.get_Clustered(); - } -} -// ----------------------------------------------------------------------------- // ----------------------------------------------------------------------------- void SAL_CALL OAdoIndex::acquire() throw(::com::sun::star::uno::RuntimeException) { diff --git a/connectivity/source/drivers/ado/AKey.cxx b/connectivity/source/drivers/ado/AKey.cxx index e6c7b3cae9e8..20dd3cb487bd 100644 --- a/connectivity/source/drivers/ado/AKey.cxx +++ b/connectivity/source/drivers/ado/AKey.cxx @@ -2,9 +2,9 @@ * * $RCSfile: AKey.cxx,v $ * - * $Revision: 1.11 $ + * $Revision: 1.12 $ * - * last change: $Author: oj $ $Date: 2001-05-22 07:40:32 $ + * last change: $Author: oj $ $Date: 2001-05-23 09:13:09 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -74,12 +74,6 @@ #ifndef _COMPHELPER_SEQUENCE_HXX_ #include <comphelper/sequence.hxx> #endif -#ifndef _COM_SUN_STAR_SDBC_KEYRULE_HPP_ -#include <com/sun/star/sdbc/KeyRule.hpp> -#endif -#ifndef _COM_SUN_STAR_SDBCX_KEYTYPE_HPP_ -#include <com/sun/star/sdbcx/KeyType.hpp> -#endif #ifndef _CONNECTIVITY_ADO_COLUMNS_HXX_ #include "ado/AColumns.hxx" #endif @@ -95,23 +89,6 @@ using namespace com::sun::star::sdbc; using namespace com::sun::star::sdbcx; // ------------------------------------------------------------------------- -void WpADOKey::Create() -{ - IClassFactory2* pIUnknown = NULL; - IUnknown *pOuter = NULL; - HRESULT hr = -1; - _ADOKey* pCommand; - hr = CoCreateInstance(ADOS::CLSID_ADOKEY_25, - NULL, - CLSCTX_INPROC_SERVER, - ADOS::IID_ADOKEY_25, - (void**)&pCommand ); - - - if( !FAILED( hr ) ) - operator=(pCommand); -} -// ------------------------------------------------------------------------- OAdoKey::OAdoKey(sal_Bool _bCase,OConnection* _pConnection, ADOKey* _pKey) : OKey_ADO(_bCase) ,m_pConnection(_pConnection) @@ -232,96 +209,6 @@ void OAdoKey::setFastPropertyValue_NoBroadcast(sal_Int32 nHandle,const Any& rVal OKey_ADO::setFastPropertyValue_NoBroadcast(nHandle,rValue); } // ------------------------------------------------------------------------- -void OAdoKey::fillPropertyValues() -{ - if(m_aKey.IsValid()) - { - m_Type = MapKeyRule(m_aKey.get_Type()); - m_Name = m_aKey.get_Name(); - m_ReferencedTable = m_aKey.get_RelatedTable(); - m_UpdateRule = MapRule(m_aKey.get_UpdateRule()); - m_DeleteRule = MapRule(m_aKey.get_DeleteRule()); - } -} -// ------------------------------------------------------------------------- -sal_Int32 OAdoKey::MapRule(const RuleEnum& _eNum) const -{ - sal_Int32 eNum = KeyRule::NO_ACTION; - switch(_eNum) - { - case adRICascade: - eNum = KeyRule::CASCADE; - break; - case adRISetNull: - eNum = KeyRule::SET_NULL; - break; - case adRINone: - eNum = KeyRule::NO_ACTION; - break; - case adRISetDefault: - eNum = KeyRule::SET_DEFAULT; - break; - } - return eNum; -} -// ------------------------------------------------------------------------- -RuleEnum OAdoKey::Map2Rule(const sal_Int32& _eNum) const -{ - RuleEnum eNum = adRINone; - switch(_eNum) - { - case KeyRule::CASCADE: - eNum = adRICascade; - break; - case KeyRule::SET_NULL: - eNum = adRISetNull; - break; - case KeyRule::NO_ACTION: - eNum = adRINone; - break; - case KeyRule::SET_DEFAULT: - eNum = adRISetDefault; - break; - } - return eNum; -} -// ------------------------------------------------------------------------- -sal_Int32 OAdoKey::MapKeyRule(const KeyTypeEnum& _eNum) const -{ - sal_Int32 nKeyType = KeyType::PRIMARY; - switch(_eNum) - { - case adKeyPrimary: - nKeyType = KeyType::PRIMARY; - break; - case adKeyForeign: - nKeyType = KeyType::FOREIGN; - break; - case adKeyUnique: - nKeyType = KeyType::UNIQUE; - break; - } - return nKeyType; -} -// ------------------------------------------------------------------------- -KeyTypeEnum OAdoKey::Map2KeyRule(const sal_Int32& _eNum) const -{ - KeyTypeEnum eNum; - switch(_eNum) - { - case KeyType::PRIMARY: - eNum = adKeyPrimary; - break; - case KeyType::FOREIGN: - eNum = adKeyForeign; - break; - case KeyType::UNIQUE: - eNum = adKeyUnique; - break; - } - return eNum; -} -// ----------------------------------------------------------------------------- // ----------------------------------------------------------------------------- void SAL_CALL OAdoKey::acquire() throw(::com::sun::star::uno::RuntimeException) { diff --git a/connectivity/source/drivers/ado/ATable.cxx b/connectivity/source/drivers/ado/ATable.cxx index cd53938246a6..1cc53e17ea4f 100644 --- a/connectivity/source/drivers/ado/ATable.cxx +++ b/connectivity/source/drivers/ado/ATable.cxx @@ -2,9 +2,9 @@ * * $RCSfile: ATable.cxx,v $ * - * $Revision: 1.15 $ + * $Revision: 1.16 $ * - * last change: $Author: oj $ $Date: 2001-05-22 07:40:32 $ + * last change: $Author: oj $ $Date: 2001-05-23 09:13:09 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -120,23 +120,6 @@ using namespace com::sun::star::container; using namespace com::sun::star::lang; // ------------------------------------------------------------------------- -void WpADOTable::Create() -{ - IClassFactory2* pIUnknown = NULL; - IUnknown *pOuter = NULL; - HRESULT hr = -1; - _ADOTable* pCommand; - hr = CoCreateInstance(ADOS::CLSID_ADOTABLE_25, - NULL, - CLSCTX_INPROC_SERVER, - ADOS::IID_ADOTABLE_25, - (void**)&pCommand ); - - - if( !FAILED( hr ) ) - operator=(pCommand); -} -// ------------------------------------------------------------------------- OAdoTable::OAdoTable(sal_Bool _bCase,OCatalog* _pCatalog,_ADOTable* _pTable) : OTable_TYPEDEF(_bCase,::rtl::OUString(),::rtl::OUString()) ,m_pCatalog(_pCatalog) @@ -362,44 +345,6 @@ void OAdoTable::setFastPropertyValue_NoBroadcast(sal_Int32 nHandle,const Any& rV OTable_TYPEDEF::setFastPropertyValue_NoBroadcast(nHandle,rValue); } // ------------------------------------------------------------------------- -void OAdoTable::fillPropertyValues() -{ - if(m_aTable.IsValid()) - { - m_Name = m_aTable.get_Name(); - m_Type = m_aTable.get_Type(); - { - WpADOCatalog aCat(m_aTable.get_ParentCatalog()); - if(aCat.IsValid()) - m_CatalogName = aCat.GetObjectOwner(m_aTable.get_Name(),adPermObjTable); - } - { - ADOProperties* pProps = m_aTable.get_Properties(); - if(pProps) - { - pProps->AddRef(); - ADOProperty* pProp = NULL; - pProps->get_Item(OLEVariant(::rtl::OUString::createFromAscii("Description")),&pProp); - WpADOProperty aProp(pProp); - if(pProp) - m_Description = aProp.GetValue(); - pProps->Release(); - } - } - } -} -// ------------------------------------------------------------------------- -::rtl::OUString WpADOCatalog::GetObjectOwner(const ::rtl::OUString& _rName, ObjectTypeEnum _eNum) -{ - OLEVariant _rVar; - _rVar.setNoArg(); - OLEString aBSTR; - OLEString sStr1(_rName); - pInterface->GetObjectOwner(sStr1,_eNum,_rVar,&aBSTR); - return aBSTR; -} -// ----------------------------------------------------------------------------- -// ----------------------------------------------------------------------------- void SAL_CALL OAdoTable::acquire() throw(::com::sun::star::uno::RuntimeException) { OTable_TYPEDEF::acquire(); diff --git a/connectivity/source/drivers/ado/AUser.cxx b/connectivity/source/drivers/ado/AUser.cxx index 073618e965ae..2138adea9d93 100644 --- a/connectivity/source/drivers/ado/AUser.cxx +++ b/connectivity/source/drivers/ado/AUser.cxx @@ -2,9 +2,9 @@ * * $RCSfile: AUser.cxx,v $ * - * $Revision: 1.9 $ + * $Revision: 1.10 $ * - * last change: $Author: oj $ $Date: 2001-05-22 07:40:32 $ + * last change: $Author: oj $ $Date: 2001-05-23 09:13:09 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -88,23 +88,6 @@ using namespace com::sun::star::beans; using namespace com::sun::star::sdbc; // ------------------------------------------------------------------------- -void WpADOUser::Create() -{ - IClassFactory2* pIUnknown = NULL; - IUnknown *pOuter = NULL; - HRESULT hr = -1; - _ADOUser* pCommand; - hr = CoCreateInstance(ADOS::CLSID_ADOUSER_25, - NULL, - CLSCTX_INPROC_SERVER, - ADOS::IID_ADOUSER_25, - (void**)&pCommand ); - - - if( !FAILED( hr ) ) - operator=(pCommand); -} -// ------------------------------------------------------------------------- OAdoUser::OAdoUser(sal_Bool _bCase, ADOUser* _pUser) : OUser_TYPEDEF(_bCase) { construct(); diff --git a/connectivity/source/drivers/ado/AView.cxx b/connectivity/source/drivers/ado/AView.cxx index 943b86f3bc33..e26125a84c57 100644 --- a/connectivity/source/drivers/ado/AView.cxx +++ b/connectivity/source/drivers/ado/AView.cxx @@ -2,9 +2,9 @@ * * $RCSfile: AView.cxx,v $ * - * $Revision: 1.9 $ + * $Revision: 1.10 $ * - * last change: $Author: oj $ $Date: 2001-05-22 07:40:32 $ + * last change: $Author: oj $ $Date: 2001-05-23 09:13:09 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -89,24 +89,6 @@ using namespace com::sun::star::sdbc; // IMPLEMENT_SERVICE_INFO(OAdoView,"com.sun.star.sdbcx.AView","com.sun.star.sdbcx.View"); // ------------------------------------------------------------------------- -void WpADOView::Create() -{ - IClassFactory2* pIUnknown = NULL; - IUnknown *pOuter = NULL; - HRESULT hr = -1; - ADOView* pCommand; - hr = CoCreateInstance(ADOS::CLSID_ADOVIEW_25, - NULL, - CLSCTX_INPROC_SERVER, - ADOS::IID_ADOVIEW_25, - (void**)&pCommand ); - - - if( !FAILED( hr ) ) - operator=(pCommand); -} - -// ------------------------------------------------------------------------- OAdoView::OAdoView(sal_Bool _bCase,ADOView* _pView) : OView_ADO(_bCase,NULL) { construct(); diff --git a/connectivity/source/drivers/ado/Aolevariant.cxx b/connectivity/source/drivers/ado/Aolevariant.cxx index 9ab9092d4b0a..65b8349e0a1c 100644 --- a/connectivity/source/drivers/ado/Aolevariant.cxx +++ b/connectivity/source/drivers/ado/Aolevariant.cxx @@ -2,9 +2,9 @@ * * $RCSfile: Aolevariant.cxx,v $ * - * $Revision: 1.2 $ + * $Revision: 1.3 $ * - * last change: $Author: oj $ $Date: 2001-05-18 08:48:07 $ + * last change: $Author: oj $ $Date: 2001-05-23 09:13:09 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -523,21 +523,3 @@ SAFEARRAY* OLEVariant::getUI1SAFEARRAYPtr() const // ----------------------------------------------------------------------------- // ----------------------------------------------------------------------------- // ----------------------------------------------------------------------------- -// ----------------------------------------------------------------------------- -void OLEVariant::ChangeType(VARTYPE vartype, const OLEVariant* pSrc) -{ - // - // If pDest is NULL, convert type in place - // - if (pSrc == NULL) - pSrc = this; - - if ((this != pSrc) || (vartype != V_VT(this))) - { - if(FAILED(::VariantChangeType(static_cast<VARIANT*>(this), - const_cast<VARIANT*>(static_cast<const VARIANT*>(pSrc)), - 0, vartype))) - throw ::com::sun::star::sdbc::SQLException(::rtl::OUString::createFromAscii("Could convert type!"),NULL,::rtl::OUString(),1000,::com::sun::star::uno::Any()); - } -} - diff --git a/connectivity/source/drivers/ado/Awrapado.cxx b/connectivity/source/drivers/ado/Awrapado.cxx index 1b4982433dbd..6f92a6e05943 100644 --- a/connectivity/source/drivers/ado/Awrapado.cxx +++ b/connectivity/source/drivers/ado/Awrapado.cxx @@ -2,9 +2,9 @@ * * $RCSfile: Awrapado.cxx,v $ * - * $Revision: 1.4 $ + * $Revision: 1.5 $ * - * last change: $Author: oj $ $Date: 2001-05-22 07:40:32 $ + * last change: $Author: oj $ $Date: 2001-05-23 09:13:09 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -64,8 +64,37 @@ #ifndef _CONNECTIVITY_ADO_AWRAPADOX_HXX_ #include "ado/Awrapadox.hxx" #endif +#ifndef _COMPHELPER_TYPES_HXX_ +#include <comphelper/types.hxx> +#endif using namespace connectivity::ado; +//#include <tools/prewin.h> +//namespace test__rr__ +//{ +// +//#import "c:\Program Files\Common Files\system\ado\msadox.dll" +// +//} +//#include <tools/postwin.h> + +void WpADOCatalog::Create() +{ + IClassFactory2* pIUnknown = NULL; + IUnknown *pOuter = NULL; + HRESULT hr = -1; + _ADOCatalog* pCommand; + hr = CoCreateInstance(ADOS::CLSID_ADOCATALOG_25, + NULL, + CLSCTX_INPROC_SERVER, + ADOS::IID_ADOCATALOG_25, + (void**)&pCommand ); + + + if( !FAILED( hr ) ) + operator=(pCommand); +} + ADOProperties* WpADOConnection::get_Properties() const { @@ -1560,5 +1589,527 @@ WpBase::operator IDispatch*() return pIUnknown; } +ADORecordset* WpADOConnection::getExportedKeys( const ::com::sun::star::uno::Any& catalog, const ::rtl::OUString& schema, const ::rtl::OUString& table ) +{ + // Create elements used in the array + HRESULT hr = S_OK; + SAFEARRAYBOUND rgsabound[1]; + SAFEARRAY *psa = NULL; + OLEVariant varCriteria[6]; + + // Create SafeArray Bounds and initialize the array + rgsabound[0].lLbound = 0; + rgsabound[0].cElements = sizeof varCriteria / sizeof varCriteria[0]; + psa = SafeArrayCreate( VT_VARIANT, 1, rgsabound ); + + sal_Int32 nPos=0; + hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_CATALOG + hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_SCHEMA + hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_NAME + + if(catalog.hasValue()) + varCriteria[nPos].setString(::comphelper::getString(catalog)); + + hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_CATALOG + if(schema.toChar() != '%') + varCriteria[nPos].setString(schema); + hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_SCHEMA + + varCriteria[nPos].setString(table); + hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_NAME + + OLEVariant vtEmpty; + vtEmpty.setNoArg(); + + // Initialize and fill the SafeArray + OLEVariant vsa; + vsa.setArray(psa,VT_VARIANT); + + ADORecordset *pRecordset = NULL; + OpenSchema(adSchemaForeignKeys,vsa,vtEmpty,&pRecordset); + + return pRecordset; +} +// ----------------------------------------------------------------------------- +ADORecordset* WpADOConnection::getImportedKeys( const ::com::sun::star::uno::Any& catalog, const ::rtl::OUString& schema, const ::rtl::OUString& table ) +{ + // Create elements used in the array + HRESULT hr = S_OK; + SAFEARRAYBOUND rgsabound[1]; + SAFEARRAY *psa = NULL; + OLEVariant varCriteria[6]; + + // Create SafeArray Bounds and initialize the array + rgsabound[0].lLbound = 0; + rgsabound[0].cElements = sizeof varCriteria / sizeof varCriteria[0]; + psa = SafeArrayCreate( VT_VARIANT, 1, rgsabound ); + + sal_Int32 nPos=0; + if(catalog.hasValue()) + varCriteria[nPos].setString(::comphelper::getString(catalog)); + + hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_CATALOG + if(schema.toChar() != '%') + varCriteria[nPos].setString(schema); + hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_SCHEMA + + varCriteria[nPos].setString(table); + hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_NAME + + hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_CATALOG + hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_SCHEMA + hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_NAME + + OLEVariant vtEmpty; + vtEmpty.setNoArg(); + + // Initialize and fill the SafeArray + OLEVariant vsa; + vsa.setArray(psa,VT_VARIANT); + + ADORecordset *pRecordset = NULL; + OpenSchema(adSchemaForeignKeys,vsa,vtEmpty,&pRecordset); + return pRecordset; +} +// ----------------------------------------------------------------------------- +ADORecordset* WpADOConnection::getPrimaryKeys( const ::com::sun::star::uno::Any& catalog, const ::rtl::OUString& schema, const ::rtl::OUString& table ) +{ + // Create elements used in the array + HRESULT hr = S_OK; + SAFEARRAYBOUND rgsabound[1]; + SAFEARRAY *psa = NULL; + OLEVariant varCriteria[3]; + + // Create SafeArray Bounds and initialize the array + rgsabound[0].lLbound = 0; + rgsabound[0].cElements = sizeof varCriteria / sizeof varCriteria[0]; + psa = SafeArrayCreate( VT_VARIANT, 1, rgsabound ); + + sal_Int32 nPos=0; + if(catalog.hasValue()) + varCriteria[nPos].setString(::comphelper::getString(catalog)); + + hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_CATALOG + if(schema.toChar() != '%') + varCriteria[nPos].setString(schema); + hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_SCHEMA + + varCriteria[nPos].setString(table); + hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_NAME + + + OLEVariant vtEmpty; + vtEmpty.setNoArg(); + + // Initialize and fill the SafeArray + OLEVariant vsa; + vsa.setArray(psa,VT_VARIANT); + + ADORecordset *pRecordset = NULL; + OpenSchema(adSchemaPrimaryKeys,vsa,vtEmpty,&pRecordset); + + return pRecordset; +} +// ----------------------------------------------------------------------------- +ADORecordset* WpADOConnection::getIndexInfo( + const ::com::sun::star::uno::Any& catalog, const ::rtl::OUString& schema, const ::rtl::OUString& table, + sal_Bool unique, sal_Bool approximate ) +{ + // Create elements used in the array + HRESULT hr = S_OK; + SAFEARRAYBOUND rgsabound[1]; + SAFEARRAY *psa = NULL; + OLEVariant varCriteria[5]; + + // Create SafeArray Bounds and initialize the array + rgsabound[0].lLbound = 0; + rgsabound[0].cElements = sizeof varCriteria / sizeof varCriteria[0]; + psa = SafeArrayCreate( VT_VARIANT, 1, rgsabound ); + + sal_Int32 nPos=0; + if(catalog.hasValue()) + varCriteria[nPos].setString(::comphelper::getString(catalog)); + + hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_CATALOG + if(schema.toChar() != '%') + varCriteria[nPos].setString(schema); + hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_SCHEMA + + hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// INDEX_NAME + + hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TYPE + + varCriteria[nPos].setString(table); + hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_NAME + + OLEVariant vtEmpty; + vtEmpty.setNoArg(); + + // Initialize and fill the SafeArray + OLEVariant vsa; + vsa.setArray(psa,VT_VARIANT); + + ADORecordset *pRecordset = NULL; + OpenSchema(adSchemaIndexes,vsa,vtEmpty,&pRecordset); + + return pRecordset; +} +// ----------------------------------------------------------------------------- +ADORecordset* WpADOConnection::getTablePrivileges( const ::com::sun::star::uno::Any& catalog, + const ::rtl::OUString& schemaPattern, + const ::rtl::OUString& tableNamePattern ) +{ + HRESULT hr = S_OK; + SAFEARRAYBOUND rgsabound[1]; + SAFEARRAY *psa = NULL; + OLEVariant varCriteria[5]; + + // Create SafeArray Bounds and initialize the array + rgsabound[0].lLbound = 0; + rgsabound[0].cElements = sizeof varCriteria / sizeof varCriteria[0]; + psa = SafeArrayCreate( VT_VARIANT, 1, rgsabound ); + + sal_Int32 nPos=0; + if(catalog.hasValue()) + varCriteria[nPos].setString(::comphelper::getString(catalog)); + + hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_CATALOG + if(schemaPattern.toChar() != '%') + varCriteria[nPos].setString(schemaPattern); + hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_SCHEMA + + if(tableNamePattern.toChar() != '%') + varCriteria[nPos].setString(tableNamePattern); + hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_NAME + + hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// GRANTOR + hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// GRANTEE + + OLEVariant vtEmpty; + vtEmpty.setNoArg(); + + // Initialize and fill the SafeArray + OLEVariant vsa; + vsa.setArray(psa,VT_VARIANT); + + ADORecordset *pRecordset = NULL; + OpenSchema(adSchemaTablePrivileges,vsa,vtEmpty,&pRecordset); + + return pRecordset; +} +// ----------------------------------------------------------------------------- +ADORecordset* WpADOConnection::getCrossReference( const ::com::sun::star::uno::Any& primaryCatalog, + const ::rtl::OUString& primarySchema, + const ::rtl::OUString& primaryTable, + const ::com::sun::star::uno::Any& foreignCatalog, + const ::rtl::OUString& foreignSchema, + const ::rtl::OUString& foreignTable) +{ + // Create elements used in the array + HRESULT hr = S_OK; + SAFEARRAYBOUND rgsabound[1]; + SAFEARRAY *psa = NULL; + OLEVariant varCriteria[6]; + + // Create SafeArray Bounds and initialize the array + rgsabound[0].lLbound = 0; + rgsabound[0].cElements = sizeof varCriteria / sizeof varCriteria[0]; + psa = SafeArrayCreate( VT_VARIANT, 1, rgsabound ); + + sal_Int32 nPos=0; + if(primaryCatalog.hasValue()) + varCriteria[nPos].setString(::comphelper::getString(primaryCatalog)); + + hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_CATALOG + if(primarySchema.toChar() != '%') + varCriteria[nPos].setString(primarySchema); + hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_SCHEMA + + varCriteria[nPos].setString(primaryTable); + hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_NAME + + if(foreignCatalog.hasValue()) + varCriteria[nPos].setString(::comphelper::getString(foreignCatalog)); + + hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_CATALOG + if(foreignSchema.toChar() != '%') + varCriteria[nPos].setString(foreignSchema); + hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_SCHEMA + + varCriteria[nPos].setString(foreignTable); + hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_NAME + + OLEVariant vtEmpty; + vtEmpty.setNoArg(); + + // Initialize and fill the SafeArray + OLEVariant vsa; + vsa.setArray(psa,VT_VARIANT); + + ADORecordset *pRecordset = NULL; + OpenSchema(adSchemaForeignKeys,vsa,vtEmpty,&pRecordset); + + return pRecordset; +} +// ----------------------------------------------------------------------------- +ADORecordset* WpADOConnection::getProcedures( const ::com::sun::star::uno::Any& catalog, + const ::rtl::OUString& schemaPattern, + const ::rtl::OUString& procedureNamePattern ) +{ + HRESULT hr = S_OK; + SAFEARRAYBOUND rgsabound[1]; + SAFEARRAY *psa = NULL; + OLEVariant varCriteria[3]; + + // Create SafeArray Bounds and initialize the array + rgsabound[0].lLbound = 0; + rgsabound[0].cElements = sizeof varCriteria / sizeof varCriteria[0]; + psa = SafeArrayCreate( VT_VARIANT, 1, rgsabound ); + + sal_Int32 nPos=0; + if(catalog.hasValue()) + varCriteria[nPos].setString(::comphelper::getString(catalog)); + + hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_CATALOG + if(schemaPattern.toChar() != '%') + varCriteria[nPos].setString(schemaPattern); + hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_SCHEMA + + if(procedureNamePattern.toChar() != '%') + varCriteria[nPos].setString(procedureNamePattern); + hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_NAME + + OLEVariant vtEmpty; + vtEmpty.setNoArg(); + + // Initialize and fill the SafeArray + OLEVariant vsa; + vsa.setArray(psa,VT_VARIANT); + + ADORecordset *pRecordset = NULL; + OpenSchema(adSchemaProcedures,vsa,vtEmpty,&pRecordset); + + return pRecordset; +} +// ----------------------------------------------------------------------------- +ADORecordset* WpADOConnection::getProcedureColumns( const ::com::sun::star::uno::Any& catalog, + const ::rtl::OUString& schemaPattern, + const ::rtl::OUString& procedureNamePattern, + const ::rtl::OUString& columnNamePattern ) +{ + // Create elements used in the array + HRESULT hr = S_OK; + SAFEARRAYBOUND rgsabound[1]; + SAFEARRAY *psa = NULL; + OLEVariant varCriteria[4]; + + // Create SafeArray Bounds and initialize the array + rgsabound[0].lLbound = 0; + rgsabound[0].cElements = sizeof varCriteria / sizeof varCriteria[0]; + psa = SafeArrayCreate( VT_VARIANT, 1, rgsabound ); + + sal_Int32 nPos=0; + if(catalog.hasValue()) + varCriteria[nPos].setString(::comphelper::getString(catalog)); + + hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_CATALOG + if(schemaPattern.toChar() != '%') + varCriteria[nPos].setString(schemaPattern); + hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_SCHEMA + + if(procedureNamePattern.toChar() != '%') + varCriteria[nPos].setString(procedureNamePattern); + hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_NAME + + if(columnNamePattern.toChar() != '%') + varCriteria[nPos].setString(columnNamePattern); + hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// COLUMN_NAME + + OLEVariant vtEmpty; + vtEmpty.setNoArg(); + + // Initialize and fill the SafeArray + OLEVariant vsa; + vsa.setArray(psa,VT_VARIANT); + + ADORecordset *pRecordset = NULL; + OpenSchema(adSchemaProcedureParameters,vsa,vtEmpty,&pRecordset); + + return pRecordset; +} +// ----------------------------------------------------------------------------- +ADORecordset* WpADOConnection::getTables( const ::com::sun::star::uno::Any& catalog, + const ::rtl::OUString& schemaPattern, + const ::rtl::OUString& tableNamePattern, + const ::com::sun::star::uno::Sequence< ::rtl::OUString >& types ) +{ + // Create elements used in the array + HRESULT hr = S_OK; + SAFEARRAYBOUND rgsabound[1]; + SAFEARRAY *psa = NULL; + OLEVariant varCriteria[4]; + + // Create SafeArray Bounds and initialize the array + rgsabound[0].lLbound = 0; + rgsabound[0].cElements = sizeof varCriteria / sizeof varCriteria[0]; + psa = SafeArrayCreate( VT_VARIANT, 1, rgsabound ); + + sal_Int32 nPos=0; + if(catalog.hasValue()) + varCriteria[nPos].setString(::comphelper::getString(catalog)); + + hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_CATALOG + if(schemaPattern.toChar() != '%') + varCriteria[nPos].setString(schemaPattern); + + hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_SCHEMA + if(tableNamePattern.toChar() != '%') + varCriteria[nPos].setString(tableNamePattern); + hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_NAME + + ::rtl::OUString aTypes,aComma = ::rtl::OUString::createFromAscii(","); + const ::rtl::OUString* pBegin = types.getConstArray(); + const ::rtl::OUString* pEnd = pBegin + types.getLength(); + for(;pBegin != pEnd;++pBegin) + aTypes = aTypes + *pBegin + aComma; + + if(aTypes.getLength()) + varCriteria[nPos].setString(aTypes); + // else + // varCriteria[nPos].setString(::rtl::OUString::createFromAscii("TABLE")); + + hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_TYPE + + OLEVariant vtEmpty; + vtEmpty.setNoArg(); + + // Initialize and fill the SafeArray + OLEVariant vsa; + vsa.setArray(psa,VT_VARIANT); + + ADORecordset *pRecordset = NULL; + OpenSchema(adSchemaTables,vsa,vtEmpty,&pRecordset); + + return pRecordset; +} +// ----------------------------------------------------------------------------- +ADORecordset* WpADOConnection::getColumns( const ::com::sun::star::uno::Any& catalog, + const ::rtl::OUString& schemaPattern, + const ::rtl::OUString& tableNamePattern, + const ::rtl::OUString& columnNamePattern ) +{ + // Create elements used in the array + HRESULT hr = S_OK; + SAFEARRAYBOUND rgsabound[1]; + SAFEARRAY *psa = NULL; + OLEVariant varCriteria[4]; + + // Create SafeArray Bounds and initialize the array + rgsabound[0].lLbound = 0; + rgsabound[0].cElements = sizeof varCriteria / sizeof varCriteria[0]; + psa = SafeArrayCreate( VT_VARIANT, 1, rgsabound ); + + sal_Int32 nPos=0; + if(catalog.hasValue()) + varCriteria[nPos].setString(::comphelper::getString(catalog)); + + hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_CATALOG + if(schemaPattern.toChar() != '%') + varCriteria[nPos].setString(schemaPattern); + hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_SCHEMA + + if(tableNamePattern.toChar() != '%') + varCriteria[nPos].setString(tableNamePattern); + hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_NAME + + varCriteria[nPos].setString(columnNamePattern); + hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// COLUMN_NAME + + OLEVariant vtEmpty; + vtEmpty.setNoArg(); + + // Initialize and fill the SafeArray + OLEVariant vsa; + vsa.setArray(psa,VT_VARIANT); + + ADORecordset *pRecordset = NULL; + OpenSchema(adSchemaColumns,vsa,vtEmpty,&pRecordset); + + return pRecordset; +} +// ----------------------------------------------------------------------------- +ADORecordset* WpADOConnection::getColumnPrivileges( const ::com::sun::star::uno::Any& catalog, + const ::rtl::OUString& schema, + const ::rtl::OUString& table, + const ::rtl::OUString& columnNamePattern ) +{ + // Create elements used in the array + HRESULT hr = S_OK; + SAFEARRAYBOUND rgsabound[1]; + SAFEARRAY *psa = NULL; + OLEVariant varCriteria[4]; + + // Create SafeArray Bounds and initialize the array + rgsabound[0].lLbound = 0; + rgsabound[0].cElements = sizeof varCriteria / sizeof varCriteria[0]; + psa = SafeArrayCreate( VT_VARIANT, 1, rgsabound ); + + sal_Int32 nPos=0; + if(catalog.hasValue()) + varCriteria[nPos].setString(::comphelper::getString(catalog)); + + hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_CATALOG + if(schema.toChar() != '%') + varCriteria[nPos].setString(schema); + hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_SCHEMA + + varCriteria[nPos].setString(table); + hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_NAME + + varCriteria[nPos].setString(columnNamePattern); + hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// COLUMN_NAME + + OLEVariant vtEmpty; + vtEmpty.setNoArg(); + + // Initialize and fill the SafeArray + OLEVariant vsa; + vsa.setArray(psa,VT_VARIANT); + + ADORecordset *pRecordset = NULL; + OpenSchema(adSchemaColumnPrivileges,vsa,vtEmpty,&pRecordset); + + return pRecordset; +} +// ----------------------------------------------------------------------------- +ADORecordset* WpADOConnection::getTypeInfo( ) +{ + HRESULT hr = S_OK; + // Create elements used in the array + OLEVariant varCriteria[2]; + const int nCrit = sizeof varCriteria / sizeof varCriteria[0]; + // Create SafeArray Bounds and initialize the array + SAFEARRAYBOUND rgsabound[1]; + rgsabound[0].lLbound = 0; + rgsabound[0].cElements = nCrit; + SAFEARRAY *psa = SafeArrayCreate( VT_VARIANT, 1, rgsabound ); + + sal_Int32 nPos = 0; + SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++; + SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++; + + // Initialize and fill the SafeArray + OLEVariant vsa; + vsa.setArray(psa,VT_VARIANT); + + OLEVariant aEmpty; + aEmpty.setNoArg(); + + ADORecordset *pRec=NULL; + OpenSchema(adSchemaProviderTypes,vsa,aEmpty,&pRec); + + return pRec; +} + diff --git a/connectivity/source/drivers/ado/adoimp.cxx b/connectivity/source/drivers/ado/adoimp.cxx index 3ac6b888ff11..633f29285ce1 100644 --- a/connectivity/source/drivers/ado/adoimp.cxx +++ b/connectivity/source/drivers/ado/adoimp.cxx @@ -2,9 +2,9 @@ * * $RCSfile: adoimp.cxx,v $ * - * $Revision: 1.5 $ + * $Revision: 1.6 $ * - * last change: $Author: kz $ $Date: 2001-04-24 08:21:49 $ + * last change: $Author: oj $ $Date: 2001-05-23 09:13:09 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -114,49 +114,6 @@ const IID ADOS::IID_ADOUSER_25 = MYADOID(0x00000619); const CLSID ADOS::CLSID_ADOVIEW_25 = MYADOID(0x00000612); const IID ADOS::IID_ADOVIEW_25 = MYADOID(0x00000613); -void ADOS::ThrowException(ADOConnection* _pAdoCon,const Reference< XInterface >& _xInterface) throw(SQLException, RuntimeException) -{ - ADOErrors *pErrors = NULL; - _pAdoCon->get_Errors(&pErrors); - if(!pErrors) - return; // no error found - - pErrors->AddRef( ); - - // alle aufgelaufenen Fehler auslesen und ausgeben - sal_Int32 nLen; - pErrors->get_Count(&nLen); - if (nLen) - { - ::rtl::OUString sError; - ::rtl::OUString aSQLState; - SQLException aException; - for (sal_Int32 i = nLen-1; i>=0; i--) - { - ADOError *pError = NULL; - pErrors->get_Item(OLEVariant(i),&pError); - WpADOError aErr(pError); - OSL_ENSURE(pError,"No error in collection found! BAD!"); - if(pError) - { - if(i==nLen-1) - aException = SQLException(aErr.GetDescription(),_xInterface,aErr.GetSQLState(),aErr.GetNumber(),Any()); - else - { - SQLException aTemp = SQLException(aErr.GetDescription(), - _xInterface,aErr.GetSQLState(),aErr.GetNumber(),makeAny(aException)); - aTemp.NextException <<= aException; - aException = aTemp; - } - } - } - pErrors->Clear(); - pErrors->Release(); - throw aException; - } - pErrors->Release(); -} - // ------------------------------------------------------------------------- sal_Int32 ADOS::MapADOType2Jdbc(DataTypeEnum eType) { @@ -240,6 +197,65 @@ DataTypeEnum ADOS::MapJdbc2ADOType(sal_Int32 _nType) return adEmpty; } // ----------------------------------------------------------------------------- +const int JET_ENGINETYPE_UNKNOWN = 0; +const int JET_ENGINETYPE_JET10 = 1; +const int JET_ENGINETYPE_JET11 = 2; +const int JET_ENGINETYPE_JET20 = 3; +const int JET_ENGINETYPE_JET3X = 4; +const int JET_ENGINETYPE_JET4X = 5; +const int JET_ENGINETYPE_DBASE3 = 10; +const int JET_ENGINETYPE_DBASE4 = 11; +const int JET_ENGINETYPE_DBASE5 = 12; +const int JET_ENGINETYPE_EXCEL30 = 20; +const int JET_ENGINETYPE_EXCEL40 = 21; +const int JET_ENGINETYPE_EXCEL50 = 22; +const int JET_ENGINETYPE_EXCEL80 = 23; +const int JET_ENGINETYPE_EXCEL90 = 24; +const int JET_ENGINETYPE_EXCHANGE4 = 30; +const int JET_ENGINETYPE_LOTUSWK1 = 40; +const int JET_ENGINETYPE_LOTUSWK3 = 41; +const int JET_ENGINETYPE_LOTUSWK4 = 42; +const int JET_ENGINETYPE_PARADOX3X = 50; +const int JET_ENGINETYPE_PARADOX4X = 51; +const int JET_ENGINETYPE_PARADOX5X = 52; +const int JET_ENGINETYPE_PARADOX7X = 53; +const int JET_ENGINETYPE_TEXT1X = 60; +const int JET_ENGINETYPE_HTML1X = 70; + +sal_Bool ADOS::isJetEngine(sal_Int32 _nEngineType) +{ + sal_Bool bRet = sal_False; + switch(_nEngineType) + { + case JET_ENGINETYPE_UNKNOWN: + case JET_ENGINETYPE_JET10: + case JET_ENGINETYPE_JET11: + case JET_ENGINETYPE_JET20: + case JET_ENGINETYPE_JET3X: + case JET_ENGINETYPE_JET4X: + case JET_ENGINETYPE_DBASE3: + case JET_ENGINETYPE_DBASE4: + case JET_ENGINETYPE_DBASE5: + case JET_ENGINETYPE_EXCEL30: + case JET_ENGINETYPE_EXCEL40: + case JET_ENGINETYPE_EXCEL50: + case JET_ENGINETYPE_EXCEL80: + case JET_ENGINETYPE_EXCEL90: + case JET_ENGINETYPE_EXCHANGE4: + case JET_ENGINETYPE_LOTUSWK1: + case JET_ENGINETYPE_LOTUSWK3: + case JET_ENGINETYPE_LOTUSWK4: + case JET_ENGINETYPE_PARADOX3X: + case JET_ENGINETYPE_PARADOX4X: + case JET_ENGINETYPE_PARADOX5X: + case JET_ENGINETYPE_PARADOX7X: + case JET_ENGINETYPE_TEXT1X: + case JET_ENGINETYPE_HTML1X: + bRet = sal_True; + break; + } + return bRet; +} diff --git a/connectivity/source/drivers/ado/makefile.mk b/connectivity/source/drivers/ado/makefile.mk index 145653fa4817..80f4eabf197a 100644 --- a/connectivity/source/drivers/ado/makefile.mk +++ b/connectivity/source/drivers/ado/makefile.mk @@ -2,9 +2,9 @@ # # $RCSfile: makefile.mk,v $ # -# $Revision: 1.7 $ +# $Revision: 1.8 $ # -# last change: $Author: oj $ $Date: 2001-05-17 09:13:23 $ +# last change: $Author: oj $ $Date: 2001-05-23 09:13:09 $ # # The Contents of this file are made available subject to the terms of # either of the following licenses @@ -66,7 +66,7 @@ PRJINC=..$/.. PRJNAME=connectivity TARGET=ado -ENABLE_EXCEPTIONS=TRUE +# ENABLE_EXCEPTIONS=TRUE # --- Settings ---------------------------------- .IF "$(DBGUTIL_OJ)"!="" @@ -80,6 +80,7 @@ ENVCFLAGS+=/FR$(SLO)$/ # --- Files ------------------------------------- SLOFILES=\ + $(SLO)$/ADatabaseMetaDataImpl.obj \ $(SLO)$/Aolevariant.obj \ $(SLO)$/Awrapado.obj \ $(SLO)$/ADatabaseMetaData.obj \ @@ -110,6 +111,33 @@ SLOFILES=\ $(SLO)$/Aservices.obj \ $(SLO)$/adoimp.obj +EXCEPTIONSFILES= \ + $(SLO)$/ADatabaseMetaData.obj \ + $(SLO)$/AColumn.obj \ + $(SLO)$/AColumns.obj \ + $(SLO)$/AIndex.obj \ + $(SLO)$/AIndexes.obj \ + $(SLO)$/AKey.obj \ + $(SLO)$/AKeys.obj \ + $(SLO)$/AUser.obj \ + $(SLO)$/AUsers.obj \ + $(SLO)$/AGroup.obj \ + $(SLO)$/AGroups.obj \ + $(SLO)$/ACatalog.obj \ + $(SLO)$/AView.obj \ + $(SLO)$/AViews.obj \ + $(SLO)$/ATable.obj \ + $(SLO)$/ATables.obj \ + $(SLO)$/ACallableStatement.obj \ + $(SLO)$/ADatabaseMetaDataResultSetMetaData.obj \ + $(SLO)$/ADatabaseMetaDataResultSet.obj \ + $(SLO)$/AResultSet.obj \ + $(SLO)$/AConnection.obj \ + $(SLO)$/AStatement.obj \ + $(SLO)$/APreparedStatement.obj \ + $(SLO)$/AResultSetMetaData.obj \ + $(SLO)$/ADriver.obj \ + $(SLO)$/Aservices.obj # --- Library ----------------------------------- |