summaryrefslogtreecommitdiff
path: root/connectivity/source/drivers/file/FStatement.cxx
diff options
context:
space:
mode:
authorOliver Bolte <obo@openoffice.org>2003-09-04 07:25:44 +0000
committerOliver Bolte <obo@openoffice.org>2003-09-04 07:25:44 +0000
commit2407781992403acc79f913eb37d5d50ce104449f (patch)
tree6521e6c2ade87c5dfb987e583716816ed45d0810 /connectivity/source/drivers/file/FStatement.cxx
parentde3c85effb040fe6efc343fe68750f4cc134e1fe (diff)
INTEGRATION: CWS oj4 (1.29.86); FILE MERGED
2003/06/27 13:37:54 oj 1.29.86.1: #i14648# implement string functions for file based drivers
Diffstat (limited to 'connectivity/source/drivers/file/FStatement.cxx')
-rw-r--r--connectivity/source/drivers/file/FStatement.cxx38
1 files changed, 22 insertions, 16 deletions
diff --git a/connectivity/source/drivers/file/FStatement.cxx b/connectivity/source/drivers/file/FStatement.cxx
index 677de63b430f..8483af39530c 100644
--- a/connectivity/source/drivers/file/FStatement.cxx
+++ b/connectivity/source/drivers/file/FStatement.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: FStatement.cxx,v $
*
- * $Revision: 1.29 $
+ * $Revision: 1.30 $
*
- * last change: $Author: oj $ $Date: 2002-07-05 07:54:18 $
+ * last change: $Author: obo $ $Date: 2003-09-04 08:25:44 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -527,15 +527,19 @@ void OStatement_Base::construct(const ::rtl::OUString& sql) throw(SQLException,
m_xColNames = m_pTable->getColumns();
Reference<XIndexAccess> xNames(m_xColNames,UNO_QUERY);
// set the binding of the resultrow
- m_aRow = new OValueVector(xNames->getCount());
- (*m_aRow)[0].setBound(sal_True);
- ::std::for_each(m_aRow->begin()+1,m_aRow->end(),TSetBound(sal_False));
+ m_aRow = new OValueRefVector(xNames->getCount());
+ (*m_aRow)[0]->setBound(sal_True);
+ ::std::for_each(m_aRow->begin()+1,m_aRow->end(),TSetRefBound(sal_False));
// set the binding of the resultrow
- m_aEvaluateRow = new OValueVector(xNames->getCount());
+ m_aEvaluateRow = new OValueRefVector(xNames->getCount());
- (*m_aEvaluateRow)[0].setBound(sal_True);
- ::std::for_each(m_aEvaluateRow->begin()+1,m_aEvaluateRow->end(),TSetBound(sal_False));
+ (*m_aEvaluateRow)[0]->setBound(sal_True);
+ ::std::for_each(m_aEvaluateRow->begin()+1,m_aEvaluateRow->end(),TSetRefBound(sal_False));
+
+ // set the select row
+ m_aSelectRow = new OValueRefVector(m_aSQLIterator.getSelectColumns()->size());
+ ::std::for_each(m_aSelectRow->begin(),m_aSelectRow->end(),TSetRefBound(sal_True));
// create the column mapping
createColumnMapping();
@@ -563,7 +567,7 @@ void OStatement_Base::createColumnMapping()
Reference<XIndexAccess> xNames(m_xColNames,UNO_QUERY);
// now check which columns are bound
- OResultSet::setBoundedColumns(m_aRow,xColumns,xNames,sal_True,m_xDBMetaData,m_aColMapping);
+ OResultSet::setBoundedColumns(m_aRow,m_aSelectRow,xColumns,xNames,sal_True,m_xDBMetaData,m_aColMapping);
}
// -----------------------------------------------------------------------------
void OStatement_Base::initializeResultSet(OResultSet* _pResult)
@@ -577,8 +581,10 @@ void OStatement_Base::initializeResultSet(OResultSet* _pResult)
_pResult->setColumnMapping(m_aColMapping);
_pResult->setEvaluationRow(m_aEvaluateRow);
_pResult->setAssignValues(m_aAssignValues);
+ _pResult->setSelectRow(m_aSelectRow);
- m_pEvaluationKeySet = m_pSQLAnalyzer->bindResultRow(m_aEvaluateRow); // Werte im Code des Compilers setzen
+ m_pSQLAnalyzer->bindSelectRow(m_aRow);
+ m_pEvaluationKeySet = m_pSQLAnalyzer->bindEvaluationRow(m_aEvaluateRow); // Werte im Code des Compilers setzen
_pResult->setEvaluationKeySet(m_pEvaluationKeySet);
}
// -----------------------------------------------------------------------------
@@ -677,7 +683,7 @@ void OStatement_Base::GetAssignValues()
}
}
else if(pRow_Value_Const->isToken())
- ParseAssignValues(aColumnNameList,pRow_Value_Const,i);
+ ParseAssignValues(aColumnNameList,pRow_Value_Const,static_cast<xub_StrLen>(i));
else
{
if(pRow_Value_Const->count() == aColumnNameList.size())
@@ -795,7 +801,7 @@ void OStatement_Base::SetAssignValue(const String& aColumnName,
// Alles geprueft und wir haben den Namen der Column.
// Jetzt eine Value allozieren, den Wert setzen und die Value an die Row binden.
if (bSetNull)
- (*m_aAssignValues)[nId].setNull();
+ (*m_aAssignValues)[nId]->setNull();
else
{
switch (::comphelper::getINT32(xCol->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_TYPE))))
@@ -803,16 +809,16 @@ void OStatement_Base::SetAssignValue(const String& aColumnName,
// Kriterium je nach Typ als String oder double in die Variable packen ...
case DataType::CHAR:
case DataType::VARCHAR:
- (*m_aAssignValues)[nId] = aValue;
+ *(*m_aAssignValues)[nId] = ORowSetValue(aValue);
// Zeichensatz ist bereits konvertiert, da ja das gesamte Statement konvertiert wurde
break;
case DataType::BIT:
{
if (aValue.EqualsIgnoreCaseAscii("TRUE") || aValue.GetChar(0) == '1')
- (*m_aAssignValues)[nId] = sal_True;
+ *(*m_aAssignValues)[nId] = sal_True;
else if (aValue.EqualsIgnoreCaseAscii("FALSE") || aValue.GetChar(0) == '0')
- (*m_aAssignValues)[nId] = sal_False;
+ *(*m_aAssignValues)[nId] = sal_False;
else
{
// aStatus.Set(SQL_STAT_ERROR); // nyi: genauer!
@@ -831,7 +837,7 @@ void OStatement_Base::SetAssignValue(const String& aColumnName,
case DataType::TIME:
case DataType::TIMESTAMP:
{
- (*m_aAssignValues)[nId] = aValue; // .ToDouble
+ *(*m_aAssignValues)[nId] = ORowSetValue(aValue); // .ToDouble
// try
// {
// double n = xValue->toDouble();