aboutsummaryrefslogtreecommitdiff
path: root/odb/mysql/statement.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'odb/mysql/statement.cxx')
-rw-r--r--odb/mysql/statement.cxx24
1 files changed, 20 insertions, 4 deletions
diff --git a/odb/mysql/statement.cxx b/odb/mysql/statement.cxx
index 3a76c4d..d1b90e1 100644
--- a/odb/mysql/statement.cxx
+++ b/odb/mysql/statement.cxx
@@ -68,7 +68,7 @@ namespace odb
end_ (false),
cached_ (false),
rows_ (0),
- cond_ (cond),
+ cond_ (&cond),
cond_version_ (0),
data_ (data),
data_version_ (0)
@@ -79,6 +79,22 @@ namespace odb
translate_error (conn_, stmt_);
}
+ select_statement::
+ select_statement (connection& conn, const string& s, binding& data)
+ : statement (conn),
+ end_ (false),
+ cached_ (false),
+ rows_ (0),
+ cond_ (0),
+ data_ (data),
+ data_version_ (0)
+ {
+ conn_.clear ();
+
+ if (mysql_stmt_prepare (stmt_, s.c_str (), s.size ()) != 0)
+ translate_error (conn_, stmt_);
+ }
+
void select_statement::
execute ()
{
@@ -93,12 +109,12 @@ namespace odb
if (mysql_stmt_reset (stmt_))
translate_error (conn_, stmt_);
- if (cond_version_ != cond_.version)
+ if (cond_ != 0 && cond_version_ != cond_->version)
{
- if (mysql_stmt_bind_param (stmt_, cond_.bind))
+ if (mysql_stmt_bind_param (stmt_, cond_->bind))
translate_error (conn_, stmt_);
- cond_version_ = cond_.version;
+ cond_version_ = cond_->version;
}
if (data_version_ != data_.version)