diff options
author | Thiago Marcos P. Santos <tmpsantos@gmail.com> | 2017-07-14 16:39:42 +0300 |
---|---|---|
committer | Thiago Marcos P. Santos <tmpsantos@gmail.com> | 2017-07-17 15:18:01 +0300 |
commit | d0cda490f32aa027d4d04e78185fa262dc8c7777 (patch) | |
tree | fb09eeaadfbd50935f31aca7d96af222d1bdd530 | |
parent | fef873f68f6cbe7970d0530b6927ed743495af75 (diff) | |
download | qtlocation-mapboxgl-d0cda490f32aa027d4d04e78185fa262dc8c7777.tar.gz |
[Qt] Align database creation behavior with the default implementation
Qt doesn't throw a Exception::Code::CANTOPEN when trying to open
a database that doesn't exist without the Create flag.
-rw-r--r-- | platform/qt/src/sqlite3.cpp | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/platform/qt/src/sqlite3.cpp b/platform/qt/src/sqlite3.cpp index 8df279c25d..6ed55c541f 100644 --- a/platform/qt/src/sqlite3.cpp +++ b/platform/qt/src/sqlite3.cpp @@ -50,6 +50,15 @@ void checkDatabaseError(const QSqlDatabase &db) { } } +void checkDatabaseOpenError(const QSqlDatabase &db) { + // Assume every error when opening the data as CANTOPEN. Qt + // always returns -1 for `nativeErrorCode()` on database errors. + QSqlError lastError = db.lastError(); + if (lastError.type() != QSqlError::NoError) { + throw Exception { Exception::Code::CANTOPEN, "Error opening the database." }; + } +} + class DatabaseImpl { public: DatabaseImpl(const char* filename, int flags) { @@ -77,7 +86,7 @@ public: db->setDatabaseName(QString(filename)); if (!db->open()) { - checkDatabaseError(*db); + checkDatabaseOpenError(*db); } } @@ -143,7 +152,7 @@ void Database::setBusyTimeout(std::chrono::milliseconds timeout) { } impl->db->setConnectOptions(connectOptions); if (!impl->db->open()) { - checkDatabaseError(*impl->db); + checkDatabaseOpenError(*impl->db); } } |