summaryrefslogtreecommitdiffstats
path: root/app/sql/connection.cc
diff options
context:
space:
mode:
Diffstat (limited to 'app/sql/connection.cc')
-rw-r--r--app/sql/connection.cc20
1 files changed, 16 insertions, 4 deletions
diff --git a/app/sql/connection.cc b/app/sql/connection.cc
index 4878e1b..53ab07d 100644
--- a/app/sql/connection.cc
+++ b/app/sql/connection.cc
@@ -224,8 +224,10 @@ scoped_refptr<Connection::StatementRef> Connection::GetUniqueStatement(
return new StatementRef(this, stmt);
}
-bool Connection::DoesTableExist(const char* table_name) {
- Statement statement(GetUniqueStatement(
+bool Connection::DoesTableExist(const char* table_name) const {
+ // GetUniqueStatement can't be const since statements may modify the
+ // database, but we know ours doesn't modify it, so the cast is safe.
+ Statement statement(const_cast<Connection*>(this)->GetUniqueStatement(
"SELECT name FROM sqlite_master "
"WHERE type='table' AND name=?"));
if (!statement)
@@ -235,12 +237,14 @@ bool Connection::DoesTableExist(const char* table_name) {
}
bool Connection::DoesColumnExist(const char* table_name,
- const char* column_name) {
+ const char* column_name) const {
std::string sql("PRAGMA TABLE_INFO(");
sql.append(table_name);
sql.append(")");
- Statement statement(GetUniqueStatement(sql.c_str()));
+ // Our SQL is non-mutating, so this cast is OK.
+ Statement statement(const_cast<Connection*>(this)->GetUniqueStatement(
+ sql.c_str()));
if (!statement)
return false;
@@ -259,6 +263,14 @@ int64 Connection::GetLastInsertRowId() const {
return sqlite3_last_insert_rowid(db_);
}
+int Connection::GetLastChangeCount() const {
+ if (!db_) {
+ NOTREACHED();
+ return 0;
+ }
+ return sqlite3_changes(db_);
+}
+
int Connection::GetErrorCode() const {
if (!db_)
return SQLITE_ERROR;