Sqlite: Add Read and ReadWrite mode to database

We want open databases in read only mode too.

Change-Id: I3b20602d4bd7841c9fca3260edce082d21022052
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
Marco Bubke
2017-08-01 18:32:29 +02:00
parent 52a911b972
commit 98035954c9
7 changed files with 71 additions and 11 deletions

View File

@@ -101,13 +101,13 @@ void SqliteDatabaseBackend::checkpointFullWalLog()
checkIfLogCouldBeCheckpointed(resultCode);
}
void SqliteDatabaseBackend::open(Utils::SmallStringView databaseFilePath)
void SqliteDatabaseBackend::open(Utils::SmallStringView databaseFilePath, OpenMode mode)
{
checkCanOpenDatabase(databaseFilePath);
int resultCode = sqlite3_open_v2(databaseFilePath.data(),
&m_databaseHandle,
SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE,
openMode(mode),
NULL);
checkDatabaseCouldBeOpened(resultCode);
@@ -375,6 +375,18 @@ TextEncoding SqliteDatabaseBackend::pragmaToTextEncoding(Utils::SmallStringView
return static_cast<TextEncoding>(index);
}
int SqliteDatabaseBackend::openMode(OpenMode mode)
{
int sqliteMode = SQLITE_OPEN_CREATE;
switch (mode) {
case OpenMode::ReadOnly: sqliteMode |= SQLITE_OPEN_READONLY; break;
case OpenMode::ReadWrite: sqliteMode |= SQLITE_OPEN_READWRITE; break;
}
return sqliteMode;
}
void SqliteDatabaseBackend::throwExceptionStatic(const char *whatHasHappens)
{
throw SqliteException(whatHasHappens);