diff options
author | Dan Goodliffe <dan@randomdan.homeip.net> | 2015-12-23 23:15:18 +0000 |
---|---|---|
committer | Dan Goodliffe <dan@randomdan.homeip.net> | 2015-12-23 23:15:18 +0000 |
commit | f268aec98176049136bceb2741f3615841e5c516 (patch) | |
tree | 79b980073c32aa1bb08988d06151d194b4ac104c /libmysqlpp/selectcommand.cpp | |
parent | Use a b2 lib for mysql (diff) | |
download | libdbpp-mysql-f268aec98176049136bceb2741f3615841e5c516.tar.bz2 libdbpp-mysql-f268aec98176049136bceb2741f3615841e5c516.tar.xz libdbpp-mysql-f268aec98176049136bceb2741f3615841e5c516.zip |
MySQL files prefixed with my-
Diffstat (limited to 'libmysqlpp/selectcommand.cpp')
-rw-r--r-- | libmysqlpp/selectcommand.cpp | 99 |
1 files changed, 0 insertions, 99 deletions
diff --git a/libmysqlpp/selectcommand.cpp b/libmysqlpp/selectcommand.cpp deleted file mode 100644 index b24e8d7..0000000 --- a/libmysqlpp/selectcommand.cpp +++ /dev/null @@ -1,99 +0,0 @@ -#include "selectcommand.h" -#include "connection.h" -#include "column.h" -#include "error.h" -#include <string.h> - -MySQL::SelectCommand::SelectCommand(const Connection * conn, const std::string & sql) : - DB::Command(sql), - DB::SelectCommand(sql), - MySQL::Command(conn, sql), - prepared(false), - executed(false) -{ -} - -void -MySQL::SelectCommand::execute() -{ - if (!prepared) { - bindParams(); - fields.resize(mysql_stmt_field_count(stmt)); - for (Binds::iterator i = fields.begin(); i != fields.end(); ++i) { - memset(&*i, 0, sizeof(MYSQL_BIND)); - } - MYSQL_RES * prepare_meta_result = mysql_stmt_result_metadata(stmt); - MYSQL_FIELD * fieldDefs = mysql_fetch_fields(prepare_meta_result); - for (unsigned int i = 0; i < fields.size(); i += 1) { - switch (fieldDefs[i].type) { - case MYSQL_TYPE_TINY: - case MYSQL_TYPE_SHORT: - case MYSQL_TYPE_LONG: - case MYSQL_TYPE_INT24: - case MYSQL_TYPE_LONGLONG: - case MYSQL_TYPE_YEAR: - insertColumn(boost::shared_ptr<ColumnBase>(new Column<int64_t, MYSQL_TYPE_LONGLONG>(fieldDefs[i].name, i, &fields[i]))); - break; - case MYSQL_TYPE_DECIMAL: - case MYSQL_TYPE_NEWDECIMAL: - case MYSQL_TYPE_FLOAT: - case MYSQL_TYPE_DOUBLE: - insertColumn(boost::shared_ptr<ColumnBase>(new Column<double, MYSQL_TYPE_DOUBLE>(fieldDefs[i].name, i, &fields[i]))); - break; - case MYSQL_TYPE_TIMESTAMP: - case MYSQL_TYPE_DATE: - case MYSQL_TYPE_DATETIME: - insertColumn(boost::shared_ptr<ColumnBase>(new Column<MYSQL_TIME, MYSQL_TYPE_DATETIME>(fieldDefs[i].name, i, &fields[i]))); - break; - case MYSQL_TYPE_TIME: - insertColumn(boost::shared_ptr<ColumnBase>(new Column<MYSQL_TIME, MYSQL_TYPE_TIME>(fieldDefs[i].name, i, &fields[i]))); - break; - case MYSQL_TYPE_STRING: - case MYSQL_TYPE_VAR_STRING: - insertColumn(boost::shared_ptr<ColumnBase>(new StringColumn(fieldDefs[i].name, i, &fields[i], fieldDefs[i].length))); - break; - case MYSQL_TYPE_NULL: - insertColumn(boost::shared_ptr<ColumnBase>(new NullColumn(fieldDefs[i].name, i, &fields[i]))); - break; - case MYSQL_TYPE_BIT: - case MYSQL_TYPE_BLOB: - case MYSQL_TYPE_SET: - case MYSQL_TYPE_ENUM: - case MYSQL_TYPE_GEOMETRY: - default: - mysql_free_result(prepare_meta_result); - throw Error("Unexpected type"); - } - } - mysql_free_result(prepare_meta_result); - if (mysql_stmt_bind_result(stmt, &fields.front())) { - throw Error(mysql_stmt_error(stmt)); - } - prepared = true; - } - if (!executed) { - if (mysql_stmt_execute(stmt)) { - throw Error(mysql_stmt_error(stmt)); - } - if (mysql_stmt_store_result(stmt)) { - throw Error(mysql_stmt_error(stmt)); - } - executed = true; - } -} - -bool -MySQL::SelectCommand::fetch() -{ - execute(); - switch (mysql_stmt_fetch(stmt)) { - case 0: - return true; - case MYSQL_NO_DATA: - executed = false; - return false; - default: - throw Error(mysql_stmt_error(stmt)); - } -} - |