1 #ifndef _det_VSQLManager_impl_h_
2 #define _det_VSQLManager_impl_h_
10 VSQLManager::FetchRow(T&
data,
const bool freeResult)
13 if (fResult && (FetchRow() == SQLITE_ROW)) {
14 if (sqlite3_column_count(fResult) >= 1) {
17 if (sqlite3_column_type(fResult, 0) == SQLITE_NULL) {
23 data = boost::lexical_cast<T>(sqlite3_column_text(fResult, 0));
25 catch (
const boost::bad_lexical_cast& e) {
40 VSQLManager::FetchRow(std::vector<T>&
data,
const bool freeResult)
44 if ( fResult && (FetchRow() == SQLITE_ROW) ) {
46 for (
int i = 0; i < sqlite3_column_count(fResult); ++i) {
48 if ( sqlite3_column_bytes(fResult, i) ) {
51 boost::lexical_cast<T>(sqlite3_column_text(fResult, i)));
53 catch (
const boost::bad_lexical_cast& e) {
72 template<
typename TH,
typename TT>
74 VSQLManager::FetchRowTuple(boost::tuples::cons<TH, TT>& tuple,
const int idx)
77 if (idx < sqlite3_column_count(fResult)) {
79 tuple.get_head() = boost::lexical_cast<TH>(
80 sqlite3_column_text(fResult, idx));
82 catch (
const boost::bad_lexical_cast& e) {
85 return FetchRowTuple(tuple.get_tail(), idx + 1);
92 template<
typename TH,
typename TT>
94 VSQLManager::FetchRowMany(boost::tuples::cons<TH, TT>& tuple,
const bool freeResult)
97 if (fResult && (FetchRow() == SQLITE_ROW)) {
98 const Status status = FetchRowTuple(tuple);
99 if (status == eNotFound || freeResult)
110 VSQLManager::FetchColumn(std::vector<T>&
data)
115 while (FetchRow() == SQLITE_ROW) {
116 if (sqlite3_column_count(fResult) >= 1) {
119 boost::lexical_cast<T>(sqlite3_column_text(fResult, 0)));
121 catch (
const boost::bad_lexical_cast& e) {
133 #endif // _det_VSQLManager_impl_h_
Status
Return code for seek operation.
#define ERROR(message)
Macro for logging error messages.
Status
Specifies success or (eventually) various possible failure modes.