summaryrefslogtreecommitdiff
path: root/connectivity/source/commontools/DateConversion.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'connectivity/source/commontools/DateConversion.cxx')
-rw-r--r--connectivity/source/commontools/DateConversion.cxx61
1 files changed, 38 insertions, 23 deletions
diff --git a/connectivity/source/commontools/DateConversion.cxx b/connectivity/source/commontools/DateConversion.cxx
index e58e292bb91b..010cfbcf5f34 100644
--- a/connectivity/source/commontools/DateConversion.cxx
+++ b/connectivity/source/commontools/DateConversion.cxx
@@ -45,6 +45,7 @@
#include "TConnection.hxx"
#include "diagnose_ex.h"
#include <comphelper/numbers.hxx>
+#include <rtl/ustrbuf.hxx>
using namespace ::connectivity;
@@ -63,7 +64,7 @@ using namespace ::com::sun::star::beans;
::rtl::OUString DBTypeConversion::toSQLString(sal_Int32 eType, const Any& _rVal, sal_Bool bQuote,
const Reference< XTypeConverter >& _rxTypeConverter)
{
- ::rtl::OUString aRet;
+ ::rtl::OUStringBuffer aRet;
if (_rVal.hasValue())
{
try
@@ -78,23 +79,28 @@ using namespace ::com::sun::star::beans;
if (_rVal.getValueType().getTypeClass() == ::com::sun::star::uno::TypeClass_BOOLEAN)
{
if (::cppu::any2bool(_rVal))
- aRet = ::rtl::OUString::createFromAscii("1");
+ aRet.appendAscii("1");
else
- aRet = ::rtl::OUString::createFromAscii("0");
+ aRet.appendAscii("0");
}
else
- _rxTypeConverter->convertToSimpleType(_rVal, TypeClass_STRING) >>= aRet;
+ {
+ ::rtl::OUString sTemp;
+ _rxTypeConverter->convertToSimpleType(_rVal, TypeClass_STRING) >>= sTemp;
+ aRet.append(sTemp);
+ }
break;
case DataType::CHAR:
case DataType::VARCHAR:
+ case DataType::LONGVARCHAR:
if (bQuote)
- aRet += ::rtl::OUString::createFromAscii("'");
+ aRet.appendAscii("'");
{
::rtl::OUString aTemp;
_rxTypeConverter->convertToSimpleType(_rVal, TypeClass_STRING) >>= aTemp;
sal_Int32 nIndex = (sal_Int32)-1;
- ::rtl::OUString sQuot(RTL_CONSTASCII_USTRINGPARAM("\'"));
- ::rtl::OUString sQuotToReplace(RTL_CONSTASCII_USTRINGPARAM("\'\'"));
+ const ::rtl::OUString sQuot(RTL_CONSTASCII_USTRINGPARAM("\'"));
+ const ::rtl::OUString sQuotToReplace(RTL_CONSTASCII_USTRINGPARAM("\'\'"));
do
{
nIndex += 2;
@@ -103,17 +109,22 @@ using namespace ::com::sun::star::beans;
aTemp = aTemp.replaceAt(nIndex,sQuot.getLength(),sQuotToReplace);
} while (nIndex != -1);
- aRet += aTemp;
+ aRet.append(aTemp);
}
if (bQuote)
- aRet += ::rtl::OUString::createFromAscii("'");
+ aRet.appendAscii("'");
break;
case DataType::REAL:
case DataType::DOUBLE:
case DataType::DECIMAL:
case DataType::NUMERIC:
case DataType::BIGINT:
- _rxTypeConverter->convertToSimpleType(_rVal, TypeClass_STRING) >>= aRet;
+ default:
+ {
+ ::rtl::OUString sTemp;
+ _rxTypeConverter->convertToSimpleType(_rVal, TypeClass_STRING) >>= sTemp;
+ aRet.append(sTemp);
+ }
break;
case DataType::TIMESTAMP:
{
@@ -122,9 +133,11 @@ using namespace ::com::sun::star::beans;
// check if this is really a timestamp or only a date
if ( _rVal >>= aDateTime )
{
- if (bQuote) aRet += ::rtl::OUString::createFromAscii("{TS '");
- aRet += DBTypeConversion::toDateTimeString(aDateTime);
- if (bQuote) aRet += ::rtl::OUString::createFromAscii("'}");
+ if (bQuote)
+ aRet.appendAscii("{TS '");
+ aRet.append(DBTypeConversion::toDateTimeString(aDateTime));
+ if (bQuote)
+ aRet.appendAscii("'}");
break;
}
break;
@@ -133,20 +146,22 @@ using namespace ::com::sun::star::beans;
{
Date aDate;
OSL_VERIFY_RES( _rVal >>= aDate, "DBTypeConversion::toSQLString: _rVal is not date!");
- if (bQuote) aRet += ::rtl::OUString::createFromAscii("{D '");
- aRet += DBTypeConversion::toDateString(aDate);;
- if (bQuote) aRet += ::rtl::OUString::createFromAscii("'}");
+ if (bQuote)
+ aRet.appendAscii("{D '");
+ aRet.append(DBTypeConversion::toDateString(aDate));
+ if (bQuote)
+ aRet.appendAscii("'}");
} break;
case DataType::TIME:
{
Time aTime;
OSL_VERIFY_RES( _rVal >>= aTime,"DBTypeConversion::toSQLString: _rVal is not time!");
- if (bQuote) aRet += ::rtl::OUString::createFromAscii("{T '");
- aRet += DBTypeConversion::toTimeString(aTime);
- if (bQuote) aRet += ::rtl::OUString::createFromAscii("'}");
+ if (bQuote)
+ aRet.appendAscii("{T '");
+ aRet.append(DBTypeConversion::toTimeString(aTime));
+ if (bQuote)
+ aRet.appendAscii("'}");
} break;
- default:
- _rxTypeConverter->convertToSimpleType(_rVal, TypeClass_STRING) >>= aRet;
}
}
catch ( const Exception& )
@@ -155,8 +170,8 @@ using namespace ::com::sun::star::beans;
}
}
else
- aRet = ::rtl::OUString::createFromAscii(" NULL ");
- return aRet;
+ aRet.appendAscii(" NULL ");
+ return aRet.makeStringAndClear();
}
// -----------------------------------------------------------------------------
Date DBTypeConversion::getNULLDate(const Reference< XNumberFormatsSupplier > &xSupplier)