diff options
Diffstat (limited to 'libsqlitepp/selectcommand.cpp')
-rw-r--r-- | libsqlitepp/selectcommand.cpp | 83 |
1 files changed, 0 insertions, 83 deletions
diff --git a/libsqlitepp/selectcommand.cpp b/libsqlitepp/selectcommand.cpp deleted file mode 100644 index a79b031..0000000 --- a/libsqlitepp/selectcommand.cpp +++ /dev/null @@ -1,83 +0,0 @@ -#include "selectcommand.h" -#include "connection.h" -#include "error.h" -#include <string.h> -#include <boost/multi_index_container.hpp> -#include <boost/multi_index/ordered_index.hpp> - -namespace SQLite { - class Column : public DB::Column { - public: - Column(const Glib::ustring & n, unsigned int i, sqlite3_stmt * s) : - DB::Column(n, i), - stmt(s) - { - } - - bool isNull() const { - return (SQLITE_NULL == sqlite3_column_type(stmt, colNo)); - } - - void apply(DB::HandleField & h) const { - switch (sqlite3_column_type(stmt, colNo)) { - case SQLITE_INTEGER: - h.integer(sqlite3_column_int64(stmt, colNo)); - return; - case SQLITE_FLOAT: - h.floatingpoint(sqlite3_column_double(stmt, colNo)); - return; - case SQLITE_TEXT: - { - auto t = sqlite3_column_text(stmt, colNo); - auto l = sqlite3_column_bytes(stmt, colNo); - h.string(reinterpret_cast<const char *>(t), l); - return; - } - case SQLITE_NULL: - h.null(); - return; - case SQLITE_BLOB: - throw std::runtime_error("Blobs not supported"); - } - } - - void rebind(DB::Command*, unsigned int) const { - throw std::runtime_error("Not implemented"); - } - - private: - sqlite3_stmt * const stmt; - }; -} - -SQLite::SelectCommand::SelectCommand(const Connection * conn, const std::string & sql) : - DB::Command(sql), - DB::SelectCommand(sql), - SQLite::Command(conn, sql) -{ -} - -void -SQLite::SelectCommand::execute() -{ - // No explicit execute required -} - -bool -SQLite::SelectCommand::fetch() -{ - switch (sqlite3_step(stmt)) { - case SQLITE_ROW: - if (columns->empty()) { - for (int c = sqlite3_data_count(stmt) - 1; c >= 0; c -= 1) { - insertColumn(DB::ColumnPtr(new Column(sqlite3_column_name(stmt, c), c, stmt))); - } - } - return true; - case SQLITE_DONE: - return false; - default: - throw Error(sqlite3_errmsg(c->db)); - } -} - |