fix(Data): Poco::Data::ODBC-dbEncoding property not used for insert/update #3396

This commit is contained in:
Alex Fabijanic
2022-05-03 13:56:24 -05:00
parent 87a1294c75
commit 08d68ea474
22 changed files with 467 additions and 72 deletions

View File

@@ -13,6 +13,7 @@
#include "Poco/Data/AbstractExtractor.h"
#include "Poco/Data/Transcoder.h"
#include "Poco/Exception.h"
@@ -22,16 +23,8 @@ namespace Data {
AbstractExtractor::AbstractExtractor(Poco::TextEncoding::Ptr pDBEncoding,
Poco::TextEncoding::Ptr pToEncoding):
_pDBEncoding(pDBEncoding),
_pToEncoding(pToEncoding ?
pToEncoding : _pDBEncoding ?
Poco::TextEncoding::find("UTF-8") : nullptr),
_pConverter(_pDBEncoding ?
new Poco::TextConverter(*pDBEncoding, *_pToEncoding) :
nullptr)
_pTranscoder(Transcoder::create(pDBEncoding, pToEncoding))
{
poco_assert_dbg((!_pDBEncoding && !_pToEncoding) ||
(_pDBEncoding && _pToEncoding));
}
@@ -40,6 +33,20 @@ AbstractExtractor::~AbstractExtractor()
}
void AbstractExtractor::transcode(const std::string& from, std::string& to)
{
if (_pTranscoder)
_pTranscoder->transcode(from, to);
}
void AbstractExtractor::reverseTranscode(const std::string& from, std::string& to)
{
if (_pTranscoder)
_pTranscoder->reverseTranscode(from, to);
}
bool AbstractExtractor::extract(std::size_t pos, std::vector<Poco::Int8>& val)
{
throw NotImplementedException("std::vector extractor must be implemented.");