Kaydet (Commit) 965c93c3 authored tarafından Julien Nabet's avatar Julien Nabet

Use for-range loops in dbaccess/OptimisticSet

Change-Id: Iccd0848e772867ece243444dc697e264907b28d4
Reviewed-on: https://gerrit.libreoffice.org/47072Reviewed-by: 's avatarNoel Grandin <noel.grandin@collabora.co.uk>
Tested-by: 's avatarJenkins <ci@libreoffice.org>
Reviewed-by: 's avatarJulien Nabet <serval2412@yahoo.fr>
üst 5d64ef27
...@@ -179,29 +179,27 @@ void OptimisticSet::updateRow(const ORowSetRow& _rInsertRow ,const ORowSetRow& _ ...@@ -179,29 +179,27 @@ void OptimisticSet::updateRow(const ORowSetRow& _rInsertRow ,const ORowSetRow& _
TSQLStatements aSql; TSQLStatements aSql;
// here we build the condition part for the update statement // here we build the condition part for the update statement
SelectColumnsMetaData::const_iterator aIter = m_pColumnNames->begin(); for (auto const& columnName : *m_pColumnNames)
SelectColumnsMetaData::const_iterator aEnd = m_pColumnNames->end();
for(;aIter != aEnd;++aIter)
{ {
if ( aResultSetChanged.find( aIter->second.sTableName ) == aResultSetChanged.end() ) if ( aResultSetChanged.find( columnName.second.sTableName ) == aResultSetChanged.end() )
aResultSetChanged[aIter->second.sTableName] = false; aResultSetChanged[columnName.second.sTableName] = false;
const OUString sQuotedColumnName = ::dbtools::quoteName( aQuote,aIter->second.sRealName); const OUString sQuotedColumnName = ::dbtools::quoteName( aQuote,columnName.second.sRealName);
if ( m_pKeyColumnNames->find(aIter->first) != m_pKeyColumnNames->end() ) if ( m_pKeyColumnNames->find(columnName.first) != m_pKeyColumnNames->end() )
{ {
aResultSetChanged[aIter->second.sTableName] = m_aJoinedKeyColumns.find(aIter->second.nPosition) != m_aJoinedKeyColumns.end(); aResultSetChanged[columnName.second.sTableName] = m_aJoinedKeyColumns.find(columnName.second.nPosition) != m_aJoinedKeyColumns.end();
lcl_fillKeyCondition(aIter->second.sTableName,sQuotedColumnName,(_rOriginalRow->get())[aIter->second.nPosition],aKeyConditions); lcl_fillKeyCondition(columnName.second.sTableName,sQuotedColumnName,(_rOriginalRow->get())[columnName.second.nPosition],aKeyConditions);
} }
if((_rInsertRow->get())[aIter->second.nPosition].isModified()) if((_rInsertRow->get())[columnName.second.nPosition].isModified())
{ {
if ( m_aJoinedKeyColumns.find(aIter->second.nPosition) != m_aJoinedKeyColumns.end() ) if ( m_aJoinedKeyColumns.find(columnName.second.nPosition) != m_aJoinedKeyColumns.end() )
throw SQLException(); throw SQLException();
std::map<sal_Int32,sal_Int32>::const_iterator aJoinIter = m_aJoinedColumns.find(aIter->second.nPosition); std::map<sal_Int32,sal_Int32>::const_iterator aJoinIter = m_aJoinedColumns.find(columnName.second.nPosition);
if ( aJoinIter != m_aJoinedColumns.end() ) if ( aJoinIter != m_aJoinedColumns.end() )
{ {
(_rInsertRow->get())[aJoinIter->second] = (_rInsertRow->get())[aIter->second.nPosition]; (_rInsertRow->get())[aJoinIter->second] = (_rInsertRow->get())[columnName.second.nPosition];
} }
OUStringBuffer& rPart = aSql[aIter->second.sTableName]; OUStringBuffer& rPart = aSql[columnName.second.sTableName];
if ( !rPart.isEmpty() ) if ( !rPart.isEmpty() )
rPart.append(", "); rPart.append(", ");
rPart.append(sQuotedColumnName + " = ?"); rPart.append(sQuotedColumnName + " = ?");
...@@ -216,22 +214,20 @@ void OptimisticSet::updateRow(const ORowSetRow& _rInsertRow ,const ORowSetRow& _ ...@@ -216,22 +214,20 @@ void OptimisticSet::updateRow(const ORowSetRow& _rInsertRow ,const ORowSetRow& _
Reference<XDatabaseMetaData> xMetaData = m_xConnection->getMetaData(); Reference<XDatabaseMetaData> xMetaData = m_xConnection->getMetaData();
TSQLStatements::iterator aSqlIter = aSql.begin(); for (auto const& elem : aSql)
TSQLStatements::iterator aSqlEnd = aSql.end();
for(;aSqlIter != aSqlEnd ; ++aSqlIter)
{ {
if ( !aSqlIter->second.isEmpty() ) if ( !elem.second.isEmpty() )
{ {
m_bResultSetChanged = m_bResultSetChanged || aResultSetChanged[aSqlIter->first]; m_bResultSetChanged = m_bResultSetChanged || aResultSetChanged[elem.first];
OUString sCatalog,sSchema,sTable; OUString sCatalog,sSchema,sTable;
::dbtools::qualifiedNameComponents(xMetaData,aSqlIter->first,sCatalog,sSchema,sTable,::dbtools::EComposeRule::InDataManipulation); ::dbtools::qualifiedNameComponents(xMetaData,elem.first,sCatalog,sSchema,sTable,::dbtools::EComposeRule::InDataManipulation);
OUStringBuffer sSql("UPDATE " + ::dbtools::composeTableNameForSelect( m_xConnection, sCatalog, sSchema, sTable ) + OUStringBuffer sSql("UPDATE " + ::dbtools::composeTableNameForSelect( m_xConnection, sCatalog, sSchema, sTable ) +
" SET " + aSqlIter->second.toString()); " SET " + elem.second.toString());
OUStringBuffer& rCondition = aKeyConditions[aSqlIter->first]; OUStringBuffer& rCondition = aKeyConditions[elem.first];
if ( !rCondition.isEmpty() ) if ( !rCondition.isEmpty() )
sSql.append(" WHERE " + rCondition.toString() ); sSql.append(" WHERE " + rCondition.toString() );
executeUpdate(_rInsertRow ,_rOriginalRow,sSql.makeStringAndClear(),aSqlIter->first); executeUpdate(_rInsertRow ,_rOriginalRow,sSql.makeStringAndClear(),elem.first);
} }
} }
} }
...@@ -245,31 +241,29 @@ void OptimisticSet::insertRow( const ORowSetRow& _rInsertRow,const connectivity: ...@@ -245,31 +241,29 @@ void OptimisticSet::insertRow( const ORowSetRow& _rInsertRow,const connectivity:
OUString aQuote = getIdentifierQuoteString(); OUString aQuote = getIdentifierQuoteString();
// here we build the condition part for the update statement // here we build the condition part for the update statement
SelectColumnsMetaData::const_iterator aIter = m_pColumnNames->begin(); for (auto const& columnName : *m_pColumnNames)
SelectColumnsMetaData::const_iterator aEnd = m_pColumnNames->end();
for(;aIter != aEnd;++aIter)
{ {
if ( aResultSetChanged.find( aIter->second.sTableName ) == aResultSetChanged.end() ) if ( aResultSetChanged.find( columnName.second.sTableName ) == aResultSetChanged.end() )
aResultSetChanged[aIter->second.sTableName] = false; aResultSetChanged[columnName.second.sTableName] = false;
const OUString sQuotedColumnName = ::dbtools::quoteName( aQuote,aIter->second.sRealName); const OUString sQuotedColumnName = ::dbtools::quoteName( aQuote,columnName.second.sRealName);
if ( (_rInsertRow->get())[aIter->second.nPosition].isModified() ) if ( (_rInsertRow->get())[columnName.second.nPosition].isModified() )
{ {
if ( m_aJoinedKeyColumns.find(aIter->second.nPosition) != m_aJoinedKeyColumns.end() ) if ( m_aJoinedKeyColumns.find(columnName.second.nPosition) != m_aJoinedKeyColumns.end() )
{ {
lcl_fillKeyCondition(aIter->second.sTableName,sQuotedColumnName,(_rInsertRow->get())[aIter->second.nPosition],aKeyConditions); lcl_fillKeyCondition(columnName.second.sTableName,sQuotedColumnName,(_rInsertRow->get())[columnName.second.nPosition],aKeyConditions);
aResultSetChanged[aIter->second.sTableName] = true; aResultSetChanged[columnName.second.sTableName] = true;
} }
std::map<sal_Int32,sal_Int32>::const_iterator aJoinIter = m_aJoinedColumns.find(aIter->second.nPosition); std::map<sal_Int32,sal_Int32>::const_iterator aJoinIter = m_aJoinedColumns.find(columnName.second.nPosition);
if ( aJoinIter != m_aJoinedColumns.end() ) if ( aJoinIter != m_aJoinedColumns.end() )
{ {
(_rInsertRow->get())[aJoinIter->second] = (_rInsertRow->get())[aIter->second.nPosition]; (_rInsertRow->get())[aJoinIter->second] = (_rInsertRow->get())[columnName.second.nPosition];
} }
OUStringBuffer& rPart = aSql[aIter->second.sTableName]; OUStringBuffer& rPart = aSql[columnName.second.sTableName];
if ( !rPart.isEmpty() ) if ( !rPart.isEmpty() )
rPart.append(", "); rPart.append(", ");
rPart.append(sQuotedColumnName); rPart.append(sQuotedColumnName);
OUStringBuffer& rParam = aParameter[aIter->second.sTableName]; OUStringBuffer& rParam = aParameter[columnName.second.sTableName];
if ( !rParam.isEmpty() ) if ( !rParam.isEmpty() )
rParam.append(", "); rParam.append(", ");
rParam.append("?"); rParam.append("?");
...@@ -279,23 +273,21 @@ void OptimisticSet::insertRow( const ORowSetRow& _rInsertRow,const connectivity: ...@@ -279,23 +273,21 @@ void OptimisticSet::insertRow( const ORowSetRow& _rInsertRow,const connectivity:
::dbtools::throwSQLException( DBA_RES( RID_STR_NO_VALUE_CHANGED ), StandardSQLState::GENERAL_ERROR, m_xConnection ); ::dbtools::throwSQLException( DBA_RES( RID_STR_NO_VALUE_CHANGED ), StandardSQLState::GENERAL_ERROR, m_xConnection );
Reference<XDatabaseMetaData> xMetaData = m_xConnection->getMetaData(); Reference<XDatabaseMetaData> xMetaData = m_xConnection->getMetaData();
TSQLStatements::iterator aSqlIter = aSql.begin(); for (auto const& elem : aSql)
TSQLStatements::iterator aSqlEnd = aSql.end();
for(;aSqlIter != aSqlEnd ; ++aSqlIter)
{ {
if ( !aSqlIter->second.isEmpty() ) if ( !elem.second.isEmpty() )
{ {
m_bResultSetChanged = m_bResultSetChanged || aResultSetChanged[aSqlIter->first]; m_bResultSetChanged = m_bResultSetChanged || aResultSetChanged[elem.first];
OUString sCatalog,sSchema,sTable; OUString sCatalog,sSchema,sTable;
::dbtools::qualifiedNameComponents(xMetaData,aSqlIter->first,sCatalog,sSchema,sTable,::dbtools::EComposeRule::InDataManipulation); ::dbtools::qualifiedNameComponents(xMetaData,elem.first,sCatalog,sSchema,sTable,::dbtools::EComposeRule::InDataManipulation);
OUString sComposedTableName = ::dbtools::composeTableNameForSelect( m_xConnection, sCatalog, sSchema, sTable ); OUString sComposedTableName = ::dbtools::composeTableNameForSelect( m_xConnection, sCatalog, sSchema, sTable );
OUString sSql("INSERT INTO " + sComposedTableName + " ( " + aSqlIter->second.toString() + OUString sSql("INSERT INTO " + sComposedTableName + " ( " + elem.second.toString() +
") VALUES ( " + aParameter[aSqlIter->first].toString() + " )"); ") VALUES ( " + aParameter[elem.first].toString() + " )");
OUStringBuffer& rCondition = aKeyConditions[aSqlIter->first]; OUStringBuffer& rCondition = aKeyConditions[elem.first];
if ( !rCondition.isEmpty() ) if ( !rCondition.isEmpty() )
{ {
OUString sQuery("SELECT " + aSqlIter->second.toString() + " FROM " + sComposedTableName + OUString sQuery("SELECT " + elem.second.toString() + " FROM " + sComposedTableName +
" WHERE " + rCondition.toString()); " WHERE " + rCondition.toString());
try try
...@@ -303,14 +295,12 @@ void OptimisticSet::insertRow( const ORowSetRow& _rInsertRow,const connectivity: ...@@ -303,14 +295,12 @@ void OptimisticSet::insertRow( const ORowSetRow& _rInsertRow,const connectivity:
Reference< XPreparedStatement > xPrep(m_xConnection->prepareStatement(sQuery)); Reference< XPreparedStatement > xPrep(m_xConnection->prepareStatement(sQuery));
Reference< XParameters > xParameter(xPrep,UNO_QUERY); Reference< XParameters > xParameter(xPrep,UNO_QUERY);
// and then the values of the where condition // and then the values of the where condition
SelectColumnsMetaData::iterator aKeyCol = m_pKeyColumnNames->begin();
SelectColumnsMetaData::iterator aKeysEnd = m_pKeyColumnNames->end();
sal_Int32 i = 1; sal_Int32 i = 1;
for(;aKeyCol != aKeysEnd;++aKeyCol) for (auto const& keyColumnName : *m_pKeyColumnNames)
{ {
if ( aKeyCol->second.sTableName == aSqlIter->first ) if ( keyColumnName.second.sTableName == elem.first )
{ {
setParameter(i++,xParameter,(_rInsertRow->get())[aKeyCol->second.nPosition],aKeyCol->second.nType,aKeyCol->second.nScale); setParameter(i++,xParameter,(_rInsertRow->get())[keyColumnName.second.nPosition],keyColumnName.second.nType,keyColumnName.second.nScale);
} }
} }
Reference<XResultSet> xRes = xPrep->executeQuery(); Reference<XResultSet> xRes = xPrep->executeQuery();
...@@ -326,7 +316,7 @@ void OptimisticSet::insertRow( const ORowSetRow& _rInsertRow,const connectivity: ...@@ -326,7 +316,7 @@ void OptimisticSet::insertRow( const ORowSetRow& _rInsertRow,const connectivity:
} }
} }
executeInsert(_rInsertRow,sSql,aSqlIter->first); executeInsert(_rInsertRow,sSql,elem.first);
} }
} }
} }
...@@ -337,30 +327,26 @@ void OptimisticSet::deleteRow(const ORowSetRow& _rDeleteRow,const connectivity:: ...@@ -337,30 +327,26 @@ void OptimisticSet::deleteRow(const ORowSetRow& _rDeleteRow,const connectivity::
TSQLStatements aKeyConditions; TSQLStatements aKeyConditions;
// here we build the condition part for the update statement // here we build the condition part for the update statement
SelectColumnsMetaData::const_iterator aIter = m_pColumnNames->begin(); for (auto const& columnName : *m_pColumnNames)
SelectColumnsMetaData::const_iterator aEnd = m_pColumnNames->end();
for(;aIter != aEnd;++aIter)
{ {
if ( m_aJoinedKeyColumns.find(aIter->second.nPosition) == m_aJoinedKeyColumns.end() && m_pKeyColumnNames->find(aIter->first) != m_pKeyColumnNames->end() ) if ( m_aJoinedKeyColumns.find(columnName.second.nPosition) == m_aJoinedKeyColumns.end() && m_pKeyColumnNames->find(columnName.first) != m_pKeyColumnNames->end() )
{ {
// only delete rows which aren't the key in the join // only delete rows which aren't the key in the join
const OUString sQuotedColumnName = ::dbtools::quoteName( aQuote,aIter->second.sRealName); const OUString sQuotedColumnName = ::dbtools::quoteName( aQuote,columnName.second.sRealName);
lcl_fillKeyCondition(aIter->second.sTableName,sQuotedColumnName,(_rDeleteRow->get())[aIter->second.nPosition],aKeyConditions); lcl_fillKeyCondition(columnName.second.sTableName,sQuotedColumnName,(_rDeleteRow->get())[columnName.second.nPosition],aKeyConditions);
} }
} }
Reference<XDatabaseMetaData> xMetaData = m_xConnection->getMetaData(); Reference<XDatabaseMetaData> xMetaData = m_xConnection->getMetaData();
TSQLStatements::iterator aSqlIter = aKeyConditions.begin(); for (auto & keyCondition : aKeyConditions)
TSQLStatements::iterator aSqlEnd = aKeyConditions.end();
for(;aSqlIter != aSqlEnd ; ++aSqlIter)
{ {
OUStringBuffer& rCondition = aSqlIter->second; OUStringBuffer& rCondition = keyCondition.second;
if ( !rCondition.isEmpty() ) if ( !rCondition.isEmpty() )
{ {
OUString sCatalog,sSchema,sTable; OUString sCatalog,sSchema,sTable;
::dbtools::qualifiedNameComponents(xMetaData,aSqlIter->first,sCatalog,sSchema,sTable,::dbtools::EComposeRule::InDataManipulation); ::dbtools::qualifiedNameComponents(xMetaData,keyCondition.first,sCatalog,sSchema,sTable,::dbtools::EComposeRule::InDataManipulation);
OUString sSql("DELETE FROM " + ::dbtools::composeTableNameForSelect( m_xConnection, sCatalog, sSchema, sTable ) + OUString sSql("DELETE FROM " + ::dbtools::composeTableNameForSelect( m_xConnection, sCatalog, sSchema, sTable ) +
" WHERE " + rCondition.toString() ); " WHERE " + rCondition.toString() );
executeDelete(_rDeleteRow, sSql, aSqlIter->first); executeDelete(_rDeleteRow, sSql, keyCondition.first);
} }
} }
} }
...@@ -371,13 +357,11 @@ void OptimisticSet::executeDelete(const ORowSetRow& _rDeleteRow,const OUString& ...@@ -371,13 +357,11 @@ void OptimisticSet::executeDelete(const ORowSetRow& _rDeleteRow,const OUString&
Reference< XPreparedStatement > xPrep(m_xConnection->prepareStatement(i_sSQL)); Reference< XPreparedStatement > xPrep(m_xConnection->prepareStatement(i_sSQL));
Reference< XParameters > xParameter(xPrep,UNO_QUERY); Reference< XParameters > xParameter(xPrep,UNO_QUERY);
SelectColumnsMetaData::const_iterator aIter = m_pKeyColumnNames->begin();
SelectColumnsMetaData::const_iterator aEnd = m_pKeyColumnNames->end();
sal_Int32 i = 1; sal_Int32 i = 1;
for(;aIter != aEnd;++aIter) for (auto const& keyColumnName : *m_pKeyColumnNames)
{ {
if ( aIter->second.sTableName == i_sTableName ) if ( keyColumnName.second.sTableName == i_sTableName )
setParameter(i++,xParameter,(_rDeleteRow->get())[aIter->second.nPosition],aIter->second.nType,aIter->second.nScale); setParameter(i++,xParameter,(_rDeleteRow->get())[keyColumnName.second.nPosition],keyColumnName.second.nType,keyColumnName.second.nScale);
} }
m_bDeleted = xPrep->executeUpdate() > 0; m_bDeleted = xPrep->executeUpdate() > 0;
...@@ -393,13 +377,12 @@ void OptimisticSet::executeDelete(const ORowSetRow& _rDeleteRow,const OUString& ...@@ -393,13 +377,12 @@ void OptimisticSet::executeDelete(const ORowSetRow& _rDeleteRow,const OUString&
void OptimisticSet::fillJoinedColumns_throw(const std::vector< TNodePair >& i_aJoinColumns) void OptimisticSet::fillJoinedColumns_throw(const std::vector< TNodePair >& i_aJoinColumns)
{ {
std::vector< TNodePair >::const_iterator aIter = i_aJoinColumns.begin(); for (auto const& joinColumn : i_aJoinColumns)
for(;aIter != i_aJoinColumns.end();++aIter)
{ {
OUString sColumnName,sTableName; OUString sColumnName,sTableName;
m_aSqlIterator.getColumnRange(aIter->first,sColumnName,sTableName); m_aSqlIterator.getColumnRange(joinColumn.first,sColumnName,sTableName);
OUString sLeft(sTableName + "." + sColumnName); OUString sLeft(sTableName + "." + sColumnName);
m_aSqlIterator.getColumnRange(aIter->second,sColumnName,sTableName); m_aSqlIterator.getColumnRange(joinColumn.second,sColumnName,sTableName);
OUString sRight(sTableName + "." + sColumnName); OUString sRight(sTableName + "." + sColumnName);
fillJoinedColumns_throw(sLeft, sRight); fillJoinedColumns_throw(sLeft, sRight);
} }
...@@ -553,34 +536,30 @@ void OptimisticSet::fillMissingValues(ORowSetValueVector::Vector& io_aRow) const ...@@ -553,34 +536,30 @@ void OptimisticSet::fillMissingValues(ORowSetValueVector::Vector& io_aRow) const
TSQLStatements aKeyConditions; TSQLStatements aKeyConditions;
OUString aQuote = getIdentifierQuoteString(); OUString aQuote = getIdentifierQuoteString();
// here we build the condition part for the update statement // here we build the condition part for the update statement
SelectColumnsMetaData::const_iterator aColIter = m_pColumnNames->begin(); for (auto const& columnName : *m_pColumnNames)
SelectColumnsMetaData::const_iterator aColEnd = m_pColumnNames->end();
for(;aColIter != aColEnd;++aColIter)
{ {
const OUString sQuotedColumnName = ::dbtools::quoteName( aQuote,aColIter->second.sRealName); const OUString sQuotedColumnName = ::dbtools::quoteName( aQuote,columnName.second.sRealName);
if ( m_aJoinedKeyColumns.find(aColIter->second.nPosition) != m_aJoinedKeyColumns.end() ) if ( m_aJoinedKeyColumns.find(columnName.second.nPosition) != m_aJoinedKeyColumns.end() )
{ {
lcl_fillKeyCondition(aColIter->second.sTableName,sQuotedColumnName,io_aRow[aColIter->second.nPosition],aKeyConditions); lcl_fillKeyCondition(columnName.second.sTableName,sQuotedColumnName,io_aRow[columnName.second.nPosition],aKeyConditions);
} }
OUStringBuffer& rPart = aSql[aColIter->second.sTableName]; OUStringBuffer& rPart = aSql[columnName.second.sTableName];
if ( !rPart.isEmpty() ) if ( !rPart.isEmpty() )
rPart.append(", "); rPart.append(", ");
rPart.append(sQuotedColumnName); rPart.append(sQuotedColumnName);
} }
Reference<XDatabaseMetaData> xMetaData = m_xConnection->getMetaData(); Reference<XDatabaseMetaData> xMetaData = m_xConnection->getMetaData();
TSQLStatements::iterator aSqlIter = aSql.begin(); for (auto const& elem : aSql)
TSQLStatements::iterator aSqlEnd = aSql.end();
for(;aSqlIter != aSqlEnd ; ++aSqlIter)
{ {
if ( !aSqlIter->second.isEmpty() ) if ( !elem.second.isEmpty() )
{ {
OUStringBuffer& rCondition = aKeyConditions[aSqlIter->first]; OUStringBuffer& rCondition = aKeyConditions[elem.first];
if ( !rCondition.isEmpty() ) if ( !rCondition.isEmpty() )
{ {
OUString sCatalog,sSchema,sTable; OUString sCatalog,sSchema,sTable;
::dbtools::qualifiedNameComponents(xMetaData,aSqlIter->first,sCatalog,sSchema,sTable,::dbtools::EComposeRule::InDataManipulation); ::dbtools::qualifiedNameComponents(xMetaData,elem.first,sCatalog,sSchema,sTable,::dbtools::EComposeRule::InDataManipulation);
OUString sComposedTableName = ::dbtools::composeTableNameForSelect( m_xConnection, sCatalog, sSchema, sTable ); OUString sComposedTableName = ::dbtools::composeTableNameForSelect( m_xConnection, sCatalog, sSchema, sTable );
OUString sQuery("SELECT " + aSqlIter->second.toString() + " FROM " + sComposedTableName + " WHERE " + OUString sQuery("SELECT " + elem.second.toString() + " FROM " + sComposedTableName + " WHERE " +
rCondition.makeStringAndClear()); rCondition.makeStringAndClear());
try try
...@@ -588,14 +567,12 @@ void OptimisticSet::fillMissingValues(ORowSetValueVector::Vector& io_aRow) const ...@@ -588,14 +567,12 @@ void OptimisticSet::fillMissingValues(ORowSetValueVector::Vector& io_aRow) const
Reference< XPreparedStatement > xPrep(m_xConnection->prepareStatement(sQuery)); Reference< XPreparedStatement > xPrep(m_xConnection->prepareStatement(sQuery));
Reference< XParameters > xParameter(xPrep,UNO_QUERY); Reference< XParameters > xParameter(xPrep,UNO_QUERY);
// and then the values of the where condition // and then the values of the where condition
SelectColumnsMetaData::iterator aKeyIter = m_pKeyColumnNames->begin();
SelectColumnsMetaData::iterator aKeyEnd = m_pKeyColumnNames->end();
sal_Int32 i = 1; sal_Int32 i = 1;
for(;aKeyIter != aKeyEnd;++aKeyIter) for (auto const& keyColumn : *m_pKeyColumnNames)
{ {
if ( aKeyIter->second.sTableName == aSqlIter->first ) if ( keyColumn.second.sTableName == elem.first )
{ {
setParameter(i++,xParameter,io_aRow[aKeyIter->second.nPosition],aKeyIter->second.nType,aKeyIter->second.nScale); setParameter(i++,xParameter,io_aRow[keyColumn.second.nPosition],keyColumn.second.nType,keyColumn.second.nScale);
} }
} }
Reference<XResultSet> xRes = xPrep->executeQuery(); Reference<XResultSet> xRes = xPrep->executeQuery();
...@@ -603,13 +580,12 @@ void OptimisticSet::fillMissingValues(ORowSetValueVector::Vector& io_aRow) const ...@@ -603,13 +580,12 @@ void OptimisticSet::fillMissingValues(ORowSetValueVector::Vector& io_aRow) const
if ( xRow.is() && xRes->next() ) if ( xRow.is() && xRes->next() )
{ {
i = 1; i = 1;
aColIter = m_pColumnNames->begin(); for (auto const& columnName : *m_pColumnNames)
for(;aColIter != aColEnd;++aColIter)
{ {
if ( aColIter->second.sTableName == aSqlIter->first ) if ( columnName.second.sTableName == elem.first )
{ {
io_aRow[aColIter->second.nPosition].fill(i++, aColIter->second.nType, xRow); io_aRow[columnName.second.nPosition].fill(i++, columnName.second.nType, xRow);
io_aRow[aColIter->second.nPosition].setModified(true); io_aRow[columnName.second.nPosition].setModified(true);
} }
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment