summaryrefslogtreecommitdiffstats
path: root/connectivity/source/drivers/odbc/OResultSet.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'connectivity/source/drivers/odbc/OResultSet.cxx')
-rw-r--r--connectivity/source/drivers/odbc/OResultSet.cxx31
1 files changed, 28 insertions, 3 deletions
diff --git a/connectivity/source/drivers/odbc/OResultSet.cxx b/connectivity/source/drivers/odbc/OResultSet.cxx
index 9e6bb3d91887..b38d81b3a4eb 100644
--- a/connectivity/source/drivers/odbc/OResultSet.cxx
+++ b/connectivity/source/drivers/odbc/OResultSet.cxx
@@ -443,8 +443,33 @@ template < typename T > T OResultSet::getValue( sal_Int32 columnIndex )
checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
fillColumn(columnIndex);
m_bWasNull = m_aRow[columnIndex].isNull();
- return m_aRow[columnIndex];
+ auto const & row = m_aRow[columnIndex];
+ if constexpr ( std::is_same_v<css::util::Time, T> )
+ return row.getTime();
+ else if constexpr ( std::is_same_v<css::util::DateTime, T> )
+ return row.getDateTime();
+ else if constexpr ( std::is_same_v<css::util::Date, T> )
+ return row.getDate();
+ else if constexpr ( std::is_same_v<OUString, T> )
+ return row.getString();
+ else if constexpr ( std::is_same_v<sal_Int64, T> )
+ return row.getLong();
+ else if constexpr ( std::is_same_v<sal_Int32, T> )
+ return row.getInt32();
+ else if constexpr ( std::is_same_v<sal_Int16, T> )
+ return row.getInt16();
+ else if constexpr ( std::is_same_v<sal_Int8, T> )
+ return row.getInt8();
+ else if constexpr ( std::is_same_v<float, T> )
+ return row.getFloat();
+ else if constexpr ( std::is_same_v<double, T> )
+ return row.getDouble();
+ else if constexpr ( std::is_same_v<bool, T> )
+ return row.getBool();
+ else
+ return row;
}
+
sal_Bool SAL_CALL OResultSet::getBoolean( sal_Int32 columnIndex )
{
return getValue<bool>( columnIndex );
@@ -469,7 +494,7 @@ Sequence< sal_Int8 > SAL_CALL OResultSet::getBytes( sal_Int32 columnIndex )
case DataType::BINARY:
case DataType::VARBINARY:
case DataType::LONGVARBINARY:
- nRet = m_aRow[columnIndex];
+ nRet = m_aRow[columnIndex].getSequence();
break;
default:
{
@@ -1764,7 +1789,7 @@ void OResultSet::fillNeededData(SQLRETURN _nRet)
case DataType::VARBINARY:
case DataType::LONGVARBINARY:
case DataType::BLOB:
- aSeq = m_aRow[nColumnIndex];
+ aSeq = m_aRow[nColumnIndex].getSequence();
N3SQLPutData (m_aStatementHandle, aSeq.getArray(), aSeq.getLength());
break;
case SQL_WLONGVARCHAR: