summaryrefslogtreecommitdiff
path: root/mysqlc
diff options
context:
space:
mode:
Diffstat (limited to 'mysqlc')
-rw-r--r--mysqlc/source/mysqlc_prepared_resultset.cxx3
-rw-r--r--mysqlc/source/mysqlc_preparedstatement.cxx21
2 files changed, 14 insertions, 10 deletions
diff --git a/mysqlc/source/mysqlc_prepared_resultset.cxx b/mysqlc/source/mysqlc_prepared_resultset.cxx
index 3bc6b9424752..6ef50bea7116 100644
--- a/mysqlc/source/mysqlc_prepared_resultset.cxx
+++ b/mysqlc/source/mysqlc_prepared_resultset.cxx
@@ -239,6 +239,9 @@ double SAL_CALL OPreparedResultSet::getDouble(sal_Int32 column)
}
m_bWasNull = false;
+ if (m_aFields[column - 1].type == MYSQL_TYPE_FLOAT)
+ return *reinterpret_cast<float*>(m_aData[column - 1].buffer);
+
return *reinterpret_cast<double*>(m_aData[column - 1].buffer);
}
diff --git a/mysqlc/source/mysqlc_preparedstatement.cxx b/mysqlc/source/mysqlc_preparedstatement.cxx
index 88b899a55814..9c6da76913e6 100644
--- a/mysqlc/source/mysqlc_preparedstatement.cxx
+++ b/mysqlc/source/mysqlc_preparedstatement.cxx
@@ -439,23 +439,24 @@ void SAL_CALL OPreparedStatement::setObjectWithInfo(sal_Int32 parameterIndex, co
case DataType::DECIMAL:
case DataType::NUMERIC:
{
- double nValue(0);
+ double nValue(0.0);
+ rtl::OUString sValue;
if ( value >>= nValue )
{
setDouble( parameterIndex, nValue );
break;
}
- else
+ else if ( value >>= sValue )
{
- rtl::OUString sValue;
- if( value >>= sValue )
- {
- m_binds[nIndex].buffer_type = MYSQL_TYPE_NEWDECIMAL;
- mysqlc_sdbc_driver::resetSqlVar(&m_binds[nIndex].buffer, sValue.getStr(), MYSQL_TYPE_LONGLONG, sValue.getLength());
- m_bindMetas[nIndex].is_null = 0;
- }
-
+ rtl::OString sAscii = rtl::OUStringToOString(sValue, getOwnConnection()->getConnectionEncoding());
+ std::stringstream sStream{sAscii.getStr()};
+ sStream >> nValue;
+ m_binds[nIndex].buffer_type = MYSQL_TYPE_DOUBLE;
+ mysqlc_sdbc_driver::resetSqlVar(&m_binds[nIndex].buffer, &nValue, MYSQL_TYPE_DOUBLE, sValue.getLength());
+ m_bindMetas[nIndex].is_null = 0;
+ break;
}
+
#if defined __GNUC__ && __GNUC__ >= 7
[[fallthrough]];
#else