summaryrefslogtreecommitdiff
path: root/libodbcpp/modifycommand.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'libodbcpp/modifycommand.cpp')
-rw-r--r--libodbcpp/modifycommand.cpp33
1 files changed, 33 insertions, 0 deletions
diff --git a/libodbcpp/modifycommand.cpp b/libodbcpp/modifycommand.cpp
new file mode 100644
index 0000000..706b3fd
--- /dev/null
+++ b/libodbcpp/modifycommand.cpp
@@ -0,0 +1,33 @@
+#include "modifycommand.h"
+#include "error.h"
+
+ODBC::ModifyCommand::ModifyCommand(const ODBC::Connection &c, String sql) :
+ Command(c, sql)
+{
+}
+
+ODBC::ModifyCommand::~ModifyCommand()
+{
+}
+
+unsigned int
+ODBC::ModifyCommand::execute(bool anc)
+{
+ RETCODE rc = SQLExecute(hStmt);
+ if (rc != SQL_SUCCESS) {
+ if (rc != SQL_NO_DATA || !anc) {
+ throw Error(rc, SQL_HANDLE_STMT, hStmt, "%s: SQLExecute",
+ __FUNCTION__);
+ }
+ }
+ SQLINTEGER rows;
+ if ((rc = SQLRowCount(hStmt, &rows)) != SQL_SUCCESS) {
+ throw Error(rc, SQL_HANDLE_STMT, hStmt, "%s: SQLRowCount",
+ __FUNCTION__);
+ }
+ if (rows > 0 || anc) {
+ return rows;
+ }
+ throw Error("%s: No rows affected", __FUNCTION__);
+}
+