1 #ifndef _det_VSQLManager_h_
2 #define _det_VSQLManager_h_
12 #include <boost/tuple/tuple.hpp>
13 #include <boost/lexical_cast.hpp>
15 #include <det/VManager.h>
16 #include <utl/RealTimeStopwatch.h>
22 #define VSQLMANAGER_GETDATA_GETDBDATA(_T_...) \
23 VMANAGER_GETDATA_CALL(GetDBData, _T_)
53 virtual void Init(
const std::string& configLink);
56 Status Query(
const std::ostringstream& os,
const std::string& what =
"")
const
57 {
return Query(os.str(), what); }
59 Status Query(
const std::string& query,
const std::string& what =
"")
const;
61 Status Query(
const std::ostringstream& os,
const std::ostringstream& what)
const
62 {
return Query(os.str(), what.str()); }
73 template<
typename TH,
typename TT>
75 const bool freeResult =
true)
const;
86 template<
typename TH,
typename TT>
91 {
return sqlite3_column_count(
fResult); }
102 const std::string& tableName,
103 const std::string& columnName,
121 const std::string& tableName,
122 const std::string& columnName,
145 template<
typename TH,
typename TT>
165 #include <det/VSQLManager_impl_SQLite.h>
Status GetDBData(T &returnData, const std::string &tableName, const std::string &columnName, const IndexMap &componentIndex) const
virtual Status GetDBResVector(const std::string &, const std::string &, const IndexMap &) const
overload this in all derived managers that need it
Status GetDBData(std::vector< T > &returnData, const std::string &tableName, const std::string &columnName, const IndexMap &componentIndex) const
Status FetchRowTuple(const MYSQL_ROW, const boost::tuples::null_type &, const int) const
stop taking tuples
Status FetchRowMany(boost::tuples::cons< TH, TT > &tuple, const bool freeResult=true) const
Get a tuple of values from the first row of an SQLite query result.
sqlite3 * fDb
SQLite database object pointer.
Status FetchRowTuple(const boost::tuples::null_type &, const int) const
Helper function that stops the recursion of FetchRowTuple.
Status FetchNextRow(T &result) const
Fetch first item (may be a tuple) from current row.
VSQLManager & operator=(const VSQLManager &)
std::string fDatabaseSoftwareVersion
Interface for detector managers.
Status Query(const std::ostringstream &os, const std::ostringstream &what) const
virtual void Init(const std::string &configLink)
Manager Initialization. configLink is the CentralConfig hook for the configuration file...
Interface for detector managers that use MySQL.
sqlite3_stmt * fResult
Storage for SQLite query results.
std::string fDatabaseName
Database filename.
Status FetchColumn(std::vector< T > &data) const
Get the first item from many rows of an SQLite query result.
MYSQL_ROW FetchRow() const
Status FetchNextRowMany(boost::tuples::cons< TH, TT > &result) const
workaround
virtual Status GetDBResFundamental(const std::string &, const std::string &, const IndexMap &) const
overload this in all derived managers that need it
std::map< std::string, std::string > IndexMap
Status Query(const std::ostringstream &os, const std::string &what="") const
query MySQL
static std::string MergeIndexMap(const IndexMap &componentIndex)
utl::RealTimeStopwatch fTime
Status
Specifies success or (eventually) various possible failure modes.
unsigned int NumFields() const