summaryrefslogtreecommitdiff
path: root/libmysqlpp/command.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'libmysqlpp/command.cpp')
-rw-r--r--libmysqlpp/command.cpp174
1 files changed, 0 insertions, 174 deletions
diff --git a/libmysqlpp/command.cpp b/libmysqlpp/command.cpp
deleted file mode 100644
index 51db90f..0000000
--- a/libmysqlpp/command.cpp
+++ /dev/null
@@ -1,174 +0,0 @@
-#include "command.h"
-#include "connection.h"
-#include <stdlib.h>
-#include <string.h>
-
-MySQL::Command::Command(const Connection * conn, const std::string & sql) :
- DB::Command(sql),
- c(conn),
- stmt(mysql_stmt_init(&conn->conn)),
- paramsNeedBinding(false)
-{
- if (!stmt) {
- throw Error(mysql_error(&conn->conn));
- }
- if (mysql_stmt_prepare(stmt, sql.c_str(), sql.length())) {
- throw Error(mysql_stmt_error(stmt));
- }
- binds.resize(mysql_stmt_param_count(stmt));
- if (binds.size()) {
- paramsNeedBinding = true;
- for (Binds::iterator i = binds.begin(); i != binds.end(); ++i) {
- memset(&*i, 0, sizeof(MYSQL_BIND));
- i->buffer_type = MYSQL_TYPE_NULL;
- }
- }
-}
-
-MySQL::Command::~Command()
-{
- for (Binds::const_iterator i = binds.begin(); i != binds.end(); ++i) {
- free(i->buffer);
- }
- mysql_stmt_close(stmt);
-}
-
-void *
-MySQL::Command::realloc(void * buffer, size_t size)
-{
- void * newBuffer = ::realloc(buffer, size);
- if (buffer != newBuffer) {
- paramsNeedBinding = true;
- }
- return newBuffer;
-}
-
-void
-MySQL::Command::bindParamI(unsigned int n, int v)
-{
- binds[n].buffer_type = MYSQL_TYPE_LONG;
- binds[n].buffer = realloc(binds[n].buffer, sizeof(int));
- *static_cast<int*>(binds[n].buffer) = v;
- binds[n].is_unsigned = 0;
-}
-void
-MySQL::Command::bindParamI(unsigned int n, long int v)
-{
- binds[n].buffer_type = MYSQL_TYPE_LONGLONG;
- binds[n].buffer = realloc(binds[n].buffer, sizeof(long long int));
- *static_cast<long long int*>(binds[n].buffer) = v;
- binds[n].is_unsigned = 0;
-}
-void
-MySQL::Command::bindParamI(unsigned int n, long long int v)
-{
- binds[n].buffer_type = MYSQL_TYPE_LONGLONG;
- binds[n].buffer = realloc(binds[n].buffer, sizeof(long long int));
- *static_cast<long long int*>(binds[n].buffer) = v;
- binds[n].is_unsigned = 0;
-}
-void
-MySQL::Command::bindParamI(unsigned int n, unsigned int v)
-{
- binds[n].buffer_type = MYSQL_TYPE_LONG;
- binds[n].buffer = realloc(binds[n].buffer, sizeof(int));
- *static_cast<int*>(binds[n].buffer) = v;
- binds[n].is_unsigned = 1;
-}
-void
-MySQL::Command::bindParamI(unsigned int n, long unsigned int v)
-{
- binds[n].buffer_type = MYSQL_TYPE_LONGLONG;
- binds[n].buffer = realloc(binds[n].buffer, sizeof(long long int));
- *static_cast<long long int*>(binds[n].buffer) = v;
- binds[n].is_unsigned = 1;
-}
-void
-MySQL::Command::bindParamI(unsigned int n, long long unsigned int v)
-{
- binds[n].buffer_type = MYSQL_TYPE_LONGLONG;
- binds[n].buffer = realloc(binds[n].buffer, sizeof(long long int));
- *static_cast<long long int*>(binds[n].buffer) = v;
- binds[n].is_unsigned = 1;
-}
-void
-MySQL::Command::bindParamB(unsigned int n, bool v)
-{
- binds[n].buffer_type = MYSQL_TYPE_TINY;
- binds[n].buffer = realloc(binds[n].buffer, sizeof(bool));
- *static_cast<bool*>(binds[n].buffer) = (v ? 1 : 0);
- binds[n].is_unsigned = 1;
-}
-void
-MySQL::Command::bindParamF(unsigned int n, double v)
-{
- binds[n].buffer_type = MYSQL_TYPE_DOUBLE;
- binds[n].buffer = realloc(binds[n].buffer, sizeof(double));
- *static_cast<double*>(binds[n].buffer) = v;
-}
-void
-MySQL::Command::bindParamF(unsigned int n, float v)
-{
- binds[n].buffer_type = MYSQL_TYPE_FLOAT;
- binds[n].buffer = realloc(binds[n].buffer, sizeof(float));
- *static_cast<float*>(binds[n].buffer) = v;
-}
-void
-MySQL::Command::bindParamS(unsigned int n, const Glib::ustring & s)
-{
- binds[n].buffer_type = MYSQL_TYPE_STRING;
- binds[n].buffer = realloc(binds[n].buffer, s.bytes());
- s.copy(static_cast<char*>(binds[n].buffer), s.bytes());
- binds[n].buffer_length = s.bytes();
- binds[n].is_unsigned = 0;
-}
-void
-MySQL::Command::bindParamT(unsigned int n, const boost::posix_time::ptime & v)
-{
- binds[n].buffer_type = MYSQL_TYPE_DATETIME;
- binds[n].buffer = realloc(binds[n].buffer, sizeof(MYSQL_TIME));
- MYSQL_TIME & ts = *static_cast<MYSQL_TIME*>(binds[n].buffer);
- ts.year = v.date().year();
- ts.month = v.date().month();
- ts.day = v.date().day();
- ts.hour = v.time_of_day().hours();
- ts.minute = v.time_of_day().minutes();
- ts.second = v.time_of_day().seconds();
- ts.second_part = v.time_of_day().total_microseconds() % 1000000;
- ts.neg = 0;
-}
-void
-MySQL::Command::bindParamT(unsigned int n, const boost::posix_time::time_duration & v)
-{
- binds[n].buffer_type = MYSQL_TYPE_TIME;
- binds[n].buffer = realloc(binds[n].buffer, sizeof(MYSQL_TIME));
- MYSQL_TIME & ts = *static_cast<MYSQL_TIME*>(binds[n].buffer);
- ts.year = 0;
- ts.month = 0;
- ts.day = 0;
- ts.hour = v.hours();
- ts.minute = v.minutes();
- ts.second = v.seconds();
- ts.second_part = v.total_microseconds() % 1000000;
- ts.neg = (v.is_negative() ? 1 : 0);
-}
-void
-MySQL::Command::bindNull(unsigned int n)
-{
- binds[n].buffer_type = MYSQL_TYPE_NULL;
- binds[n].buffer = NULL;
- free(binds[n].buffer);
-}
-
-void
-MySQL::Command::bindParams()
-{
- if (paramsNeedBinding) {
- if (mysql_stmt_bind_param(stmt, &binds.front())) {
- throw Error(mysql_stmt_error(stmt));
- paramsNeedBinding = false;
- }
- }
-}
-
-