DateTime support & some test tidying

This commit is contained in:
Aleksandar Fabijanic 2007-08-20 11:55:18 +00:00
parent 2dbfb583c9
commit 3b66a355c2
23 changed files with 266 additions and 164 deletions

View File

@ -222,6 +222,42 @@ inline Poco::Any SessionImpl::dataTypeInfo(const std::string& rName)
}
inline void SessionImpl::setEnforceCapability(const std::string&, bool val)
{
_enforceCapability = val;
}
inline bool SessionImpl::getEnforceCapability(const std::string&)
{
return _enforceCapability;
}
inline void SessionImpl::autoBind(const std::string&, bool val)
{
_autoBind = val;
}
inline bool SessionImpl::isAutoBind(const std::string& name)
{
return _autoBind;
}
inline void SessionImpl::autoExtract(const std::string&, bool val)
{
_autoExtract = val;
}
inline bool SessionImpl::isAutoExtract(const std::string& name)
{
return _autoExtract;
}
} } } // namespace Poco::Data::ODBC

View File

@ -104,6 +104,7 @@ void ODBCColumn::init()
case SQL_CHAR:
case SQL_VARCHAR:
case SQL_LONGVARCHAR:
case -9:// SQL Server NVARCHAR
setType(MetaColumn::FDT_STRING); break;
case SQL_TINYINT:
setType(MetaColumn::FDT_INT8); break;

View File

@ -203,8 +203,12 @@ void SessionImpl::close()
{
if (!isConnected()) return;
commit();
checkError(SQLDisconnect(_db));
try
{
commit();
}catch (ConnectionException&) { }
SQLDisconnect(_db);
}
@ -265,40 +269,4 @@ int SessionImpl::maxStatementLength()
}
void SessionImpl::setEnforceCapability(const std::string&, bool val)
{
_enforceCapability = val;
}
bool SessionImpl::getEnforceCapability(const std::string&)
{
return _enforceCapability;
}
void SessionImpl::autoBind(const std::string&, bool val)
{
_autoBind = val;
}
bool SessionImpl::isAutoBind(const std::string& name)
{
return _autoBind;
}
void SessionImpl::autoExtract(const std::string&, bool val)
{
_autoExtract = val;
}
bool SessionImpl::isAutoExtract(const std::string& name)
{
return _autoExtract;
}
} } } // namespace Poco::Data::ODBC

View File

@ -49,28 +49,28 @@
using namespace Poco::Data;
using Poco::Data::ODBC::Utility;
using Poco::Data::ODBC::ConnectionException;
using Poco::Data::ODBC::StatementException;
using Poco::Data::ODBC::StatementDiagnostics;
using ODBC::Utility;
using ODBC::ConnectionException;
using ODBC::StatementException;
using ODBC::StatementDiagnostics;
using Poco::format;
using Poco::NotFoundException;
Poco::SharedPtr<Poco::Data::Session> ODBCAccessTest::_pSession = 0;
std::string ODBCAccessTest::_dbConnString;
Poco::Data::ODBC::Utility::DriverMap ODBCAccessTest::_drivers;
Session* ODBCAccessTest::_pSession = 0;
std::string ODBCAccessTest::_dbConnString;
ODBC::Utility::DriverMap ODBCAccessTest::_drivers;
ODBCAccessTest::ODBCAccessTest(const std::string& name):
CppUnit::TestCase(name)
{
ODBC::Connector::registerConnector();
}
ODBCAccessTest::~ODBCAccessTest()
{
ODBC::Connector::unregisterConnector();
}

View File

@ -72,7 +72,7 @@ private:
static Poco::Data::ODBC::Utility::DriverMap _drivers;
static std::string _dbConnString;
static Poco::SharedPtr<Poco::Data::Session> _pSession;
static Poco::Data::Session* _pSession;
bool _owner;
};

View File

@ -50,20 +50,21 @@
using namespace Poco::Data;
using Poco::Data::ODBC::Utility;
using Poco::Data::ODBC::ConnectionException;
using Poco::Data::ODBC::StatementException;
using Poco::Data::ODBC::StatementDiagnostics;
using ODBC::Utility;
using ODBC::ConnectionException;
using ODBC::StatementException;
using ODBC::StatementDiagnostics;
using Poco::format;
using Poco::Tuple;
using Poco::NotFoundException;
const bool ODBCDB2Test::bindValues[8] = {true, true, true, false, false, true, false, false};
Poco::SharedPtr<Poco::Data::Session> ODBCDB2Test::_pSession = 0;
Poco::SharedPtr<SQLExecutor> ODBCDB2Test::_pExecutor = 0;
std::string ODBCDB2Test::_dbConnString;
Poco::Data::ODBC::Utility::DriverMap ODBCDB2Test::_drivers;
ODBCDB2Test::SessionPtr ODBCDB2Test::_pSession = 0;
ODBCDB2Test::ExecPtr ODBCDB2Test::_pExecutor = 0;
std::string ODBCDB2Test::_dbConnString;
ODBCDB2Test::Drivers ODBCDB2Test::_drivers;
const bool ODBCDB2Test::bindValues[8] =
{true, true, true, false, false, true, false, false};
ODBCDB2Test::ODBCDB2Test(const std::string& name):

View File

@ -131,6 +131,10 @@ public:
static CppUnit::Test* suite();
private:
typedef Poco::Data::ODBC::Utility::DriverMap Drivers;
typedef Poco::SharedPtr<Poco::Data::Session> SessionPtr;
typedef Poco::SharedPtr<SQLExecutor> ExecPtr;
void dropObject(const std::string& type, const std::string& tableName);
void recreatePersonTable();
void recreatePersonBLOBTable();
@ -145,11 +149,11 @@ private:
static bool init(const std::string& driver, const std::string& dsn);
static bool canConnect(const std::string& driver, const std::string& dsn);
static Poco::Data::ODBC::Utility::DriverMap _drivers;
static Drivers _drivers;
static std::string _dbConnString;
static Poco::SharedPtr<Poco::Data::Session> _pSession;
static Poco::SharedPtr<SQLExecutor> _pExecutor;
static const bool bindValues[8];
static SessionPtr _pSession;
static ExecPtr _pExecutor;
static const bool bindValues[8];
};

View File

@ -50,20 +50,21 @@
using namespace Poco::Data;
using Poco::Data::ODBC::Utility;
using Poco::Data::ODBC::ConnectionException;
using Poco::Data::ODBC::StatementException;
using Poco::Data::ODBC::StatementDiagnostics;
using ODBC::Utility;
using ODBC::ConnectionException;
using ODBC::StatementException;
using ODBC::StatementDiagnostics;
using Poco::format;
using Poco::Tuple;
using Poco::NotFoundException;
const bool ODBCMySQLTest::bindValues[8] = {true, true, true, false, false, true, false, false};
Poco::SharedPtr<Poco::Data::Session> ODBCMySQLTest::_pSession = 0;
Poco::SharedPtr<SQLExecutor> ODBCMySQLTest::_pExecutor = 0;
std::string ODBCMySQLTest::_dbConnString;
Poco::Data::ODBC::Utility::DriverMap ODBCMySQLTest::_drivers;
ODBCMySQLTest::SessionPtr ODBCMySQLTest::_pSession = 0;
ODBCMySQLTest::ExecPtr ODBCMySQLTest::_pExecutor = 0;
std::string ODBCMySQLTest::_dbConnString;
ODBCMySQLTest::Drivers ODBCMySQLTest::_drivers;
const bool ODBCMySQLTest::bindValues[8] =
{true, true, true, false, false, true, false, false};
ODBCMySQLTest::ODBCMySQLTest(const std::string& name):

View File

@ -133,6 +133,10 @@ public:
static CppUnit::Test* suite();
private:
typedef Poco::Data::ODBC::Utility::DriverMap Drivers;
typedef Poco::SharedPtr<Poco::Data::Session> SessionPtr;
typedef Poco::SharedPtr<SQLExecutor> ExecPtr;
void dropObject(const std::string& type, const std::string& name);
void recreatePersonTable();
void recreatePersonBLOBTable();
@ -147,11 +151,11 @@ private:
static bool init(const std::string& driver, const std::string& dsn);
static bool canConnect(const std::string& driver, const std::string& dsn);
static Poco::Data::ODBC::Utility::DriverMap _drivers;
static Drivers _drivers;
static std::string _dbConnString;
static Poco::SharedPtr<Poco::Data::Session> _pSession;
static Poco::SharedPtr<SQLExecutor> _pExecutor;
static const bool bindValues[8];
static SessionPtr _pSession;
static ExecPtr _pExecutor;
static const bool bindValues[8];
};

View File

@ -51,21 +51,22 @@
using namespace Poco::Data;
using Poco::Data::ODBC::Utility;
using Poco::Data::ODBC::ConnectionException;
using Poco::Data::ODBC::StatementException;
using Poco::Data::ODBC::StatementDiagnostics;
using ODBC::Utility;
using ODBC::ConnectionException;
using ODBC::StatementException;
using ODBC::StatementDiagnostics;
using Poco::format;
using Poco::Tuple;
using Poco::DateTime;
using Poco::NotFoundException;
const bool ODBCOracleTest::bindValues[8] = {true, true, true, false, false, true, false, false};
Poco::SharedPtr<Poco::Data::Session> ODBCOracleTest::_pSession = 0;
Poco::SharedPtr<SQLExecutor> ODBCOracleTest::_pExecutor = 0;
std::string ODBCOracleTest::_dbConnString;
Poco::Data::ODBC::Utility::DriverMap ODBCOracleTest::_drivers;
ODBCOracleTest::SessionPtr ODBCOracleTest::_pSession = 0;
ODBCOracleTest::ExecPtr ODBCOracleTest::_pExecutor = 0;
std::string ODBCOracleTest::_dbConnString;
ODBC::Utility::DriverMap ODBCOracleTest::_drivers;
const bool ODBCOracleTest::bindValues[8] =
{true, true, true, false, false, true, false, false};
ODBCOracleTest::ODBCOracleTest(const std::string& name):
@ -79,10 +80,8 @@ ODBCOracleTest::~ODBCOracleTest()
}
void ODBCOracleTest::testBareboneODBC()
void ODBCOracleTest::testBarebone()
{
if (!_pSession) fail ("Test not available.");
std::string tableCreateString = "CREATE TABLE Test "
"(First VARCHAR(30),"
"Second VARCHAR(30),"
@ -1297,6 +1296,15 @@ bool ODBCOracleTest::init(const std::string& driver, const std::string& dsn)
_pExecutor = new SQLExecutor(driver + " SQL Executor", _pSession);
// Workaround:
//
// Barebone ODBC test is called initially for Oracle only.
// The test framework does not exit cleanly if
// Oracle tests are enabled (i.e. Oracle driver is found)
// but no tests are executed.
// The exact reason for this behavior is unknown at this time.
testBarebone();
return true;
}

View File

@ -131,6 +131,12 @@ public:
static CppUnit::Test* suite();
private:
typedef Poco::Data::ODBC::Utility::DriverMap Drivers;
typedef Poco::SharedPtr<Poco::Data::Session> SessionPtr;
typedef Poco::SharedPtr<SQLExecutor> ExecPtr;
static void testBarebone();
void dropObject(const std::string& type, const std::string& name);
void recreatePersonTable();
void recreatePersonBLOBTable();
@ -145,12 +151,18 @@ private:
static bool init(const std::string& driver, const std::string& dsn);
static bool canConnect(const std::string& driver, const std::string& dsn);
static Poco::Data::ODBC::Utility::DriverMap _drivers;
static Drivers _drivers;
static std::string _dbConnString;
static Poco::SharedPtr<Poco::Data::Session> _pSession;
static Poco::SharedPtr<SQLExecutor> _pExecutor;
static const bool bindValues[8];
static SessionPtr _pSession;
static ExecPtr _pExecutor;
static const bool bindValues[8];
};
inline void ODBCOracleTest::testBareboneODBC()
{
return testBarebone();
}
#endif // ODBCOracleTest_INCLUDED

View File

@ -51,22 +51,25 @@
using namespace Poco::Data;
using Poco::Data::ODBC::Utility;
using Poco::Data::ODBC::ODBCException;
using Poco::Data::ODBC::ConnectionException;
using Poco::Data::ODBC::StatementException;
using Poco::Data::ODBC::StatementDiagnostics;
using ODBC::Utility;
using ODBC::ODBCException;
using ODBC::ConnectionException;
using ODBC::StatementException;
using ODBC::StatementDiagnostics;
using Poco::format;
using Poco::Tuple;
using Poco::DateTime;
using Poco::NotFoundException;
const bool ODBCPostgreSQLTest::bindValues[8] = {true, true, true, false, false, true, false, false};
Poco::SharedPtr<Poco::Data::Session> ODBCPostgreSQLTest::_pSession = 0;
Poco::SharedPtr<SQLExecutor> ODBCPostgreSQLTest::_pExecutor = 0;
std::string ODBCPostgreSQLTest::_dbConnString;
Poco::Data::ODBC::Utility::DriverMap ODBCPostgreSQLTest::_drivers;
ODBCPostgreSQLTest::SessionPtr ODBCPostgreSQLTest::_pSession = 0;
ODBCPostgreSQLTest::ExecPtr ODBCPostgreSQLTest::_pExecutor = 0;
std::string ODBCPostgreSQLTest::_dbConnString;
ODBCPostgreSQLTest::Drivers ODBCPostgreSQLTest::_drivers;
const bool ODBCPostgreSQLTest::bindValues[8] =
{true, true, true, false, false, true, false, false};
#ifdef POCO_OS_FAMILY_WINDOWS
const std::string ODBCPostgreSQLTest::libDir = "C:\\\\Program Files\\\\PostgreSQL\\\\8.2\\\\lib\\\\";
#else
@ -1222,7 +1225,7 @@ bool ODBCPostgreSQLTest::init(const std::string& driver, const std::string& dsn)
CppUnit::Test* ODBCPostgreSQLTest::suite()
{
if (init("PostgreSQL ANSI", "PocoDataPostgreSQLTest"))
//if (init("Mammoth ODBCng Beta", "Mammoth ODBCng beta"))
//if (init("Mammoth ODBCng Beta", "Mammoth ODBCng Beta"))
{
CppUnit::TestSuite* pSuite = new CppUnit::TestSuite("ODBCPostgreSQLTest");

View File

@ -132,6 +132,10 @@ public:
static CppUnit::Test* suite();
private:
typedef Poco::Data::ODBC::Utility::DriverMap Drivers;
typedef Poco::SharedPtr<Poco::Data::Session> SessionPtr;
typedef Poco::SharedPtr<SQLExecutor> ExecPtr;
void dropObject(const std::string& type, const std::string& name);
void recreatePersonTable();
void recreatePersonBLOBTable();
@ -154,11 +158,12 @@ private:
/// modify the function and recompile.
/// Alternative is direct database configuration for PL/pgSQL usage.
static Poco::Data::ODBC::Utility::DriverMap _drivers;
static Drivers _drivers;
static std::string _dbConnString;
static Poco::SharedPtr<Poco::Data::Session> _pSession;
static Poco::SharedPtr<SQLExecutor> _pExecutor;
static const bool bindValues[8];
static SessionPtr _pSession;
static ExecPtr _pExecutor;
static const bool bindValues[8];
static const std::string libDir;
/// Varible determining the location of the library directory
/// on the database installation system.

View File

@ -51,21 +51,22 @@
using namespace Poco::Data;
using Poco::Data::ODBC::Utility;
using Poco::Data::ODBC::ConnectionException;
using Poco::Data::ODBC::StatementException;
using Poco::Data::ODBC::StatementDiagnostics;
using ODBC::Utility;
using ODBC::ConnectionException;
using ODBC::StatementException;
using ODBC::StatementDiagnostics;
using Poco::format;
using Poco::Tuple;
using Poco::DateTime;
using Poco::NotFoundException;
const bool ODBCSQLServerTest::bindValues[8] = {true, true, true, false, false, true, false, false};
Poco::SharedPtr<Poco::Data::Session> ODBCSQLServerTest::_pSession = 0;
Poco::SharedPtr<SQLExecutor> ODBCSQLServerTest::_pExecutor = 0;
std::string ODBCSQLServerTest::_dbConnString;
Poco::Data::ODBC::Utility::DriverMap ODBCSQLServerTest::_drivers;
ODBCSQLServerTest::SessionPtr ODBCSQLServerTest::_pSession = 0;
ODBCSQLServerTest::ExecPtr ODBCSQLServerTest::_pExecutor = 0;
std::string ODBCSQLServerTest::_dbConnString;
ODBCSQLServerTest::Drivers ODBCSQLServerTest::_drivers;
const bool ODBCSQLServerTest::bindValues[8] =
{true, true, true, false, false, true, false, false};
ODBCSQLServerTest::ODBCSQLServerTest(const std::string& name):

View File

@ -134,6 +134,10 @@ public:
static CppUnit::Test* suite();
private:
typedef Poco::Data::ODBC::Utility::DriverMap Drivers;
typedef Poco::SharedPtr<Poco::Data::Session> SessionPtr;
typedef Poco::SharedPtr<SQLExecutor> ExecPtr;
void dropObject(const std::string& type, const std::string& name);
void recreatePersonTable();
void recreatePersonBLOBTable();
@ -149,10 +153,10 @@ private:
static bool init(const std::string& driver, const std::string& dsn);
static bool canConnect(const std::string& driver, const std::string& dsn);
static Poco::Data::ODBC::Utility::DriverMap _drivers;
static Drivers _drivers;
static std::string _dbConnString;
static Poco::SharedPtr<Poco::Data::Session> _pSession;
static Poco::SharedPtr<SQLExecutor> _pExecutor;
static SessionPtr _pSession;
static ExecPtr _pExecutor;
static const bool bindValues[8];
};

View File

@ -49,19 +49,20 @@
using namespace Poco::Data;
using Poco::Data::ODBC::Utility;
using Poco::Data::ODBC::ConnectionException;
using Poco::Data::ODBC::StatementException;
using Poco::Data::ODBC::StatementDiagnostics;
using ODBC::Utility;
using ODBC::ConnectionException;
using ODBC::StatementException;
using ODBC::StatementDiagnostics;
using Poco::format;
using Poco::NotFoundException;
const bool ODBCSQLiteTest::bindValues[8] = {true, true, true, false, false, true, false, false};
Poco::SharedPtr<Poco::Data::Session> ODBCSQLiteTest::_pSession = 0;
Poco::SharedPtr<SQLExecutor> ODBCSQLiteTest::_pExecutor = 0;
std::string ODBCSQLiteTest::_dbConnString;
Poco::Data::ODBC::Utility::DriverMap ODBCSQLiteTest::_drivers;
ODBCSQLiteTest::SessionPtr ODBCSQLiteTest::_pSession = 0;
ODBCSQLiteTest::ExecPtr ODBCSQLiteTest::_pExecutor = 0;
std::string ODBCSQLiteTest::_dbConnString;
ODBCSQLiteTest::Drivers ODBCSQLiteTest::_drivers;
const bool ODBCSQLiteTest::bindValues[8] =
{true, true, true, false, false, true, false, false};
ODBCSQLiteTest::ODBCSQLiteTest(const std::string& name):

View File

@ -128,6 +128,10 @@ public:
static CppUnit::Test* suite();
private:
typedef Poco::Data::ODBC::Utility::DriverMap Drivers;
typedef Poco::SharedPtr<Poco::Data::Session> SessionPtr;
typedef Poco::SharedPtr<SQLExecutor> ExecPtr;
void dropObject(const std::string& type, const std::string& name);
void recreatePersonTable();
void recreatePersonBLOBTable();
@ -142,11 +146,11 @@ private:
static bool init(const std::string& driver, const std::string& dsn);
static bool canConnect(const std::string& driver, const std::string& dsn);
static Poco::Data::ODBC::Utility::DriverMap _drivers;
static Drivers _drivers;
static std::string _dbConnString;
static Poco::SharedPtr<Poco::Data::Session> _pSession;
static Poco::SharedPtr<SQLExecutor> _pExecutor;
static const bool bindValues[8];
static SessionPtr _pSession;
static ExecPtr _pExecutor;
static const bool bindValues[8];
};

View File

@ -56,16 +56,19 @@ CppUnit::Test* ODBCTestSuite::suite()
// nativeError=160
// System error 127 is "The specified procedure could not be found."
//
// 2) When Oracle test is loaded after DB2, the test application does not exit cleanly.
// All tests pass, though.
// Workaround is to connect to DB2 after connecting to PostgreSQL.
//
// Workaround is to connect to DB2 after connecting to PostgreSQL and Oracle.
// The reason causing these errors is not known.
// 2) When Oracle driver is found, but no tests executed, the test application does not exit cleanly.
//
// Workaround is to run barebone ODBC test upon initialization of Oracle test.
// (see ODBCOracleTest::init())
//
// The reason causing the above errors is not known at this time.
addTest(pSuite, ODBCOracleTest::suite());
addTest(pSuite, ODBCPostgreSQLTest::suite());
addTest(pSuite, ODBCDB2Test::suite());
addTest(pSuite, ODBCMySQLTest::suite());
addTest(pSuite, ODBCOracleTest::suite());
addTest(pSuite, ODBCSQLiteTest::suite());
addTest(pSuite, ODBCSQLServerTest::suite());
#if defined(POCO_OS_FAMILY_WINDOWS)

View File

@ -56,12 +56,12 @@
using namespace Poco::Data;
using Poco::Data::ODBC::Utility;
using Poco::Data::ODBC::Preparation;
using Poco::Data::ODBC::ConnectionException;
using Poco::Data::ODBC::StatementException;
using Poco::Data::ODBC::DataTruncatedException;
using Poco::Data::ODBC::StatementDiagnostics;
using ODBC::Utility;
using ODBC::Preparation;
using ODBC::ConnectionException;
using ODBC::StatementException;
using ODBC::DataTruncatedException;
using ODBC::StatementDiagnostics;
using Poco::format;
using Poco::Tuple;
using Poco::Any;
@ -1832,6 +1832,12 @@ void SQLExecutor::dateTime()
catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail (funct); }
catch(StatementException& se){ std::cout << se.toString() << std::endl; fail (funct); }
assert (res == born);
Statement stmt = (*_pSession << "SELECT Born FROM Person", now);
RecordSet rset(stmt);
res = rset["Born"].convert<DateTime>();
assert (res == born);
}

View File

@ -294,6 +294,31 @@ public:
throw Poco::BadCastException();
}
void convert(Poco::Timestamp& val) const
{
throw Poco::BadCastException();
}
void convert(Poco::DateTime& val) const
{
throw Poco::BadCastException();
}
void convert(Poco::LocalDateTime& val) const
{
throw Poco::BadCastException();
}
bool isArray() const
{
return false;
}
virtual bool isStruct() const
{
return false;
}
void convert(std::string& val) const
{
val.assign(_val.begin(), _val.end());

View File

@ -36,6 +36,10 @@
#include "Poco/Data/RecordSet.h"
#include "Poco/Data/Session.h"
#include "Poco/DateTime.h"
using Poco::DateTime;
namespace Poco {
@ -77,18 +81,19 @@ DynamicAny RecordSet::value(std::size_t col, std::size_t row) const
switch (columnType(col))
{
case MetaColumn::FDT_BOOL:
case MetaColumn::FDT_INT8: return value<Int8>(col, row);
case MetaColumn::FDT_UINT8: return value<UInt8>(col, row);
case MetaColumn::FDT_INT16: return value<Int16>(col, row);
case MetaColumn::FDT_UINT16: return value<UInt16>(col, row);
case MetaColumn::FDT_INT32: return value<Int32>(col, row);
case MetaColumn::FDT_UINT32: return value<UInt32>(col, row);
case MetaColumn::FDT_INT64: return value<Int64>(col, row);
case MetaColumn::FDT_UINT64: return value<UInt64>(col, row);
case MetaColumn::FDT_FLOAT: return value<float>(col, row);
case MetaColumn::FDT_DOUBLE: return value<double>(col, row);
case MetaColumn::FDT_STRING: return value<std::string>(col, row);
case MetaColumn::FDT_BLOB: return value<BLOB>(col, row);
case MetaColumn::FDT_INT8: return value<Int8>(col, row);
case MetaColumn::FDT_UINT8: return value<UInt8>(col, row);
case MetaColumn::FDT_INT16: return value<Int16>(col, row);
case MetaColumn::FDT_UINT16: return value<UInt16>(col, row);
case MetaColumn::FDT_INT32: return value<Int32>(col, row);
case MetaColumn::FDT_UINT32: return value<UInt32>(col, row);
case MetaColumn::FDT_INT64: return value<Int64>(col, row);
case MetaColumn::FDT_UINT64: return value<UInt64>(col, row);
case MetaColumn::FDT_FLOAT: return value<float>(col, row);
case MetaColumn::FDT_DOUBLE: return value<double>(col, row);
case MetaColumn::FDT_STRING: return value<std::string>(col, row);
case MetaColumn::FDT_BLOB: return value<BLOB>(col, row);
case MetaColumn::FDT_TIMESTAMP: return value<DateTime>(col, row);
default:
throw Poco::InvalidArgumentException("Data type not supported.");
}
@ -100,18 +105,19 @@ DynamicAny RecordSet::value(const std::string& name, std::size_t row) const
switch (columnType(name))
{
case MetaColumn::FDT_BOOL:
case MetaColumn::FDT_INT8: return value<Int8>(name, row);
case MetaColumn::FDT_UINT8: return value<UInt8>(name, row);
case MetaColumn::FDT_INT16: return value<Int16>(name, row);
case MetaColumn::FDT_UINT16: return value<UInt16>(name, row);
case MetaColumn::FDT_INT32: return value<Int32>(name, row);
case MetaColumn::FDT_UINT32: return value<UInt32>(name, row);
case MetaColumn::FDT_INT64: return value<Int64>(name, row);
case MetaColumn::FDT_UINT64: return value<UInt64>(name, row);
case MetaColumn::FDT_FLOAT: return value<float>(name, row);
case MetaColumn::FDT_DOUBLE: return value<double>(name, row);
case MetaColumn::FDT_STRING: return value<std::string>(name, row);
case MetaColumn::FDT_BLOB: return value<BLOB>(name, row);
case MetaColumn::FDT_INT8: return value<Int8>(name, row);
case MetaColumn::FDT_UINT8: return value<UInt8>(name, row);
case MetaColumn::FDT_INT16: return value<Int16>(name, row);
case MetaColumn::FDT_UINT16: return value<UInt16>(name, row);
case MetaColumn::FDT_INT32: return value<Int32>(name, row);
case MetaColumn::FDT_UINT32: return value<UInt32>(name, row);
case MetaColumn::FDT_INT64: return value<Int64>(name, row);
case MetaColumn::FDT_UINT64: return value<UInt64>(name, row);
case MetaColumn::FDT_FLOAT: return value<float>(name, row);
case MetaColumn::FDT_DOUBLE: return value<double>(name, row);
case MetaColumn::FDT_STRING: return value<std::string>(name, row);
case MetaColumn::FDT_BLOB: return value<BLOB>(name, row);
case MetaColumn::FDT_TIMESTAMP: return value<DateTime>(name, row);
default:
throw Poco::InvalidArgumentException("Data type not supported.");
}

View File

@ -91,6 +91,12 @@ bool SessionImpl::isConnected()
}
bool SessionImpl::isTransaction()
{
return false;
}
bool SessionImpl::getConnected(const std::string& name)
{
return _connected;

View File

@ -75,6 +75,9 @@ public:
/// Returns true if session is connected to the database,
/// false otherwise.
bool isTransaction();
/// Returns true iff a transaction is a transaction is in progress, false otherwise.
void setConnected(const std::string& name, bool value);
bool getConnected(const std::string& name);
/// Sets/gets the connected property.