diff options
author | Bruno de Oliveira Abinader <bruno@mapbox.com> | 2017-01-04 11:09:45 -0400 |
---|---|---|
committer | Bruno de Oliveira Abinader <bruno@mapbox.com> | 2017-01-23 19:06:53 +0200 |
commit | 80d72123dfe3cb9f560b6a150a998eeda480b9de (patch) | |
tree | f002717a45c7179e66b02c630b94eca5dbb5f047 /platform/default/sqlite3.cpp | |
parent | 97b433edc99f5b7212915aab483e119f60fde101 (diff) | |
download | qtlocation-mapboxgl-80d72123dfe3cb9f560b6a150a998eeda480b9de.tar.gz |
[core] Move lastInsertRowId/changes to sqlite::Statement
Diffstat (limited to 'platform/default/sqlite3.cpp')
-rw-r--r-- | platform/default/sqlite3.cpp | 25 |
1 files changed, 15 insertions, 10 deletions
diff --git a/platform/default/sqlite3.cpp b/platform/default/sqlite3.cpp index 8e882f4455..251433638a 100644 --- a/platform/default/sqlite3.cpp +++ b/platform/default/sqlite3.cpp @@ -56,6 +56,8 @@ public: } sqlite3_stmt* stmt = nullptr; + int64_t lastInsertRowId = 0; + int64_t changes = 0; }; template <typename T> @@ -133,16 +135,6 @@ Statement Database::prepare(const char *query) { return Statement(this, query); } -int64_t Database::lastInsertRowid() const { - assert(impl); - return sqlite3_last_insert_rowid(impl->db); -} - -uint64_t Database::changes() const { - assert(impl); - return sqlite3_changes(impl->db); -} - Statement::Statement(Database *db, const char *sql) : impl(std::make_unique<StatementImpl>(db->impl->db, sql)) { @@ -292,6 +284,8 @@ void Statement::bind( bool Statement::run() { assert(impl); const int err = sqlite3_step(impl->stmt); + impl->lastInsertRowId = sqlite3_last_insert_rowid(sqlite3_db_handle(impl->stmt)); + impl->changes = sqlite3_changes(sqlite3_db_handle(impl->stmt)); if (err == SQLITE_DONE) { return false; } else if (err == SQLITE_ROW) { @@ -390,6 +384,17 @@ void Statement::clearBindings() { sqlite3_clear_bindings(impl->stmt); } +int64_t Statement::lastInsertRowId() const { + assert(impl); + return impl->lastInsertRowId; +} + +uint64_t Statement::changes() const { + assert(impl); + auto changes = impl->changes; + return (changes < 0 ? 0 : changes); +} + Transaction::Transaction(Database& db_, Mode mode) : db(db_) { switch (mode) { |