summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Sommerseth <dazo@users.sourceforge.net>2009-09-01 18:46:52 +0200
committerDavid Sommerseth <dazo@users.sourceforge.net>2009-09-01 18:46:52 +0200
commit42a6c774802371482cc008caba1168ad274a8687 (patch)
tree8608b73c1c13fab22fc28588a010326320b15a1c
parent2fcbada9a862ee19a77ee0505452ebed1f3926b1 (diff)
downloadeurephia-42a6c774802371482cc008caba1168ad274a8687.tar.gz
eurephia-42a6c774802371482cc008caba1168ad274a8687.tar.xz
eurephia-42a6c774802371482cc008caba1168ad274a8687.zip
SQLite3 - Added support for "affected rows" count on INSERT/UPDATE/DELETE queries
-rw-r--r--database/sqlite/sqlite.c10
-rw-r--r--database/sqlite/sqlite.h2
2 files changed, 12 insertions, 0 deletions
diff --git a/database/sqlite/sqlite.c b/database/sqlite/sqlite.c
index 0bc6bb2..ab94783 100644
--- a/database/sqlite/sqlite.c
+++ b/database/sqlite/sqlite.c
@@ -242,6 +242,11 @@ dbresult *sqlite_query(eurephiaCTX *ctx, char *fmt, ... ) {
if( strcasestr(sql, "INSERT INTO") != NULL) {
glob_results->last_insert_id = sqlite3_last_insert_rowid((sqlite3 *) dbc->dbhandle);
};
+ if( strcasestr(sql, "SELECT ") == NULL ) {
+ // If not a SELECT query, then get the number of affected records
+ glob_results->affected_rows = sqlite3_changes((sqlite3 *) dbc->dbhandle);
+ }
+
glob_results->srch_tuples = glob_results->tuples;
glob_results->srch_headerrec = glob_results->headerrec;
sqlite3_free(sql); sql = NULL;
@@ -544,6 +549,11 @@ int sqlite_get_numtuples(dbresult *res) {
return (res != NULL ? res->num_tuples : 0);
}
+// Retrieve number of tuples in current dbresult structure
+int sqlite_get_affected_rows(dbresult *res) {
+ return (res != NULL ? res->affected_rows : 0);
+}
+
#ifdef SQLITE_DEBUG
// Just a simple test program ... to debug this sqlite wrapper
int main() {
diff --git a/database/sqlite/sqlite.h b/database/sqlite/sqlite.h
index 928fd10..67b231d 100644
--- a/database/sqlite/sqlite.h
+++ b/database/sqlite/sqlite.h
@@ -61,6 +61,7 @@ typedef struct __sqlite_dbresult {
size_t num_tuples;
size_t num_fields;
sqlite_int64 last_insert_id;
+ int affected_rows;
// Used for search functions
_sqlite_tuples *srch_tuples;
@@ -81,6 +82,7 @@ xmlNodePtr sqlite_xml_value(xmlNodePtr node, xmlFieldType xmltyp, char *name, db
#endif
void sqlite_dump_result(FILE *, dbresult *);
int sqlite_get_numtuples(dbresult *);
+int sqlite_get_affected_rows(dbresult *);
#endif
#endif /* !SQLITE_H_ */