From 55dc8fa7bef00c0d382860b2f9b0245731db2bcb Mon Sep 17 00:00:00 2001 From: Dan Goodliffe Date: Thu, 24 Dec 2015 04:00:01 +0000 Subject: PostgreSQL files prefixed with pq- --- libpqpp/pq-modifycommand.cpp | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 libpqpp/pq-modifycommand.cpp (limited to 'libpqpp/pq-modifycommand.cpp') diff --git a/libpqpp/pq-modifycommand.cpp b/libpqpp/pq-modifycommand.cpp new file mode 100644 index 0000000..e07af0b --- /dev/null +++ b/libpqpp/pq-modifycommand.cpp @@ -0,0 +1,44 @@ +#include "pq-modifycommand.h" +#include "pq-error.h" +#include +#include "pq-connection.h" + +PQ::ModifyCommand::ModifyCommand(const Connection * conn, const std::string & sql, unsigned int no) : + DB::Command(sql), + DB::ModifyCommand(sql), + PQ::Command(conn, sql, no), + prepared(false) +{ +} + +PQ::ModifyCommand::~ModifyCommand() +{ +} + +void +PQ::ModifyCommand::prepare() const +{ + if (!prepared) { + std::string psql; + psql.reserve(sql.length() + 20); + prepareSql(psql, sql); + c->checkResultFree(PQprepare( + c->conn, stmntName.c_str(), psql.c_str(), values.size(), NULL), PGRES_COMMAND_OK); + prepared = true; + } +} + +unsigned int +PQ::ModifyCommand::execute(bool anc) +{ + prepare(); + PGresult * res = PQexecPrepared(c->conn, stmntName.c_str(), values.size(), &values.front(), &lengths.front(), &formats.front(), 0); + c->checkResult(res, PGRES_COMMAND_OK, PGRES_TUPLES_OK); + unsigned int rows = atoi(PQcmdTuples(res)); + PQclear(res); + if (rows == 0 && !anc) { + throw Error("No rows affected"); + } + return rows; +} + -- cgit v1.2.3