summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/sql/drivers/sqlite/qsql_sqlite.cpp28
1 files changed, 18 insertions, 10 deletions
diff --git a/src/sql/drivers/sqlite/qsql_sqlite.cpp b/src/sql/drivers/sqlite/qsql_sqlite.cpp
index 27bc80e63f..c98d6438fc 100644
--- a/src/sql/drivers/sqlite/qsql_sqlite.cpp
+++ b/src/sql/drivers/sqlite/qsql_sqlite.cpp
@@ -599,24 +599,32 @@ bool QSQLiteDriver::open(const QString & db, const QString &, const QString &, c
if (db.isEmpty())
return false;
+
+ int timeOut = 5000;
bool sharedCache = false;
- int openMode = SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, timeOut=5000;
- QStringList opts=QString(conOpts).remove(QLatin1Char(' ')).split(QLatin1Char(';'));
- foreach(const QString &option, opts) {
+ bool openReadOnlyOption = false;
+ bool openUriOption = false;
+
+ const QStringList opts = QString(conOpts).remove(QLatin1Char(' ')).split(QLatin1Char(';'));
+ foreach (const QString &option, opts) {
if (option.startsWith(QLatin1String("QSQLITE_BUSY_TIMEOUT="))) {
bool ok;
- int nt = option.mid(21).toInt(&ok);
+ const int nt = option.mid(21).toInt(&ok);
if (ok)
timeOut = nt;
- }
- if (option == QLatin1String("QSQLITE_OPEN_READONLY"))
- openMode = SQLITE_OPEN_READONLY;
- if (option == QLatin1String("QSQLITE_OPEN_URI"))
- openMode |= SQLITE_OPEN_URI;
- if (option == QLatin1String("QSQLITE_ENABLE_SHARED_CACHE"))
+ } else if (option == QLatin1String("QSQLITE_OPEN_READONLY")) {
+ openReadOnlyOption = true;
+ } else if (option == QLatin1String("QSQLITE_OPEN_URI")) {
+ openUriOption = true;
+ } else if (option == QLatin1String("QSQLITE_ENABLE_SHARED_CACHE")) {
sharedCache = true;
+ }
}
+ int openMode = (openReadOnlyOption ? SQLITE_OPEN_READONLY : (SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE));
+ if (openUriOption)
+ openMode |= SQLITE_OPEN_URI;
+
sqlite3_enable_shared_cache(sharedCache);
if (sqlite3_open_v2(db.toUtf8().constData(), &d->access, openMode, NULL) == SQLITE_OK) {