From c1b5f35457db2cccdebc9bef93126758476a15c1 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Fri, 19 Sep 2014 14:43:55 +0200 Subject: Call tracer::prepare() before actually preparing statement This way we give the user the ability to see an invalid statement that would cause the preparation step to fail. --- odb/mssql/statement.cxx | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/odb/mssql/statement.cxx b/odb/mssql/statement.cxx index e2022fa..15037a0 100644 --- a/odb/mssql/statement.cxx +++ b/odb/mssql/statement.cxx @@ -204,13 +204,6 @@ namespace odb if (!SQL_SUCCEEDED (r)) translate_error (r, conn_, stmt_); - // Prepare the statement. - // - r = SQLPrepareA (stmt_, (SQLCHAR*) text_, (SQLINTEGER) text_size); - - if (!SQL_SUCCEEDED (r)) - translate_error (r, conn_, stmt_); - { odb::tracer* t; if ((t = conn_.transaction_tracer ()) || @@ -218,11 +211,19 @@ namespace odb (t = conn_.database ().tracer ())) t->prepare (conn_, *this); } + + // Prepare the statement. + // + r = SQLPrepareA (stmt_, (SQLCHAR*) text_, (SQLINTEGER) text_size); + + if (!SQL_SUCCEEDED (r)) + translate_error (r, conn_, stmt_); } statement:: ~statement () { + if (stmt_ != 0) { odb::tracer* t; if ((t = conn_.transaction_tracer ()) || -- cgit v1.1