diff options
Diffstat (limited to 'src/dal')
-rw-r--r-- | src/dal/sqlitedataprovider.cpp | 14 | ||||
-rw-r--r-- | src/dal/sqlitedataprovider.h | 2 |
2 files changed, 13 insertions, 3 deletions
diff --git a/src/dal/sqlitedataprovider.cpp b/src/dal/sqlitedataprovider.cpp index 787088d1..b4feb3c6 100644 --- a/src/dal/sqlitedataprovider.cpp +++ b/src/dal/sqlitedataprovider.cpp @@ -381,21 +381,31 @@ const RecordSet &SqLiteDataProvider::processSql() } mRecordSet.setColumnHeaders(fieldNames); - while (sqlite3_step(mStmt) == SQLITE_ROW) + int ret; + + while (true) { + ret = sqlite3_step(mStmt); + if (ret != SQLITE_ROW) + break; + Row r; r.reserve(totalCols); for (int col = 0; col < totalCols; ++col) { const unsigned char *txt = sqlite3_column_text(mStmt, col); r.push_back(txt ? (char*)txt : std::string()); - } mRecordSet.add(r); } sqlite3_finalize(mStmt); + if (ret != SQLITE_DONE) + { + throw DbSqlQueryExecFailure(sqlite3_errmsg(mDb)); + } + return mRecordSet; } diff --git a/src/dal/sqlitedataprovider.h b/src/dal/sqlitedataprovider.h index 81e3a1d2..d78371f2 100644 --- a/src/dal/sqlitedataprovider.h +++ b/src/dal/sqlitedataprovider.h @@ -32,7 +32,7 @@ namespace dal /** * A SQLite Data Provider. */ -class SqLiteDataProvider: public DataProvider +class SqLiteDataProvider final : public DataProvider { public: SqLiteDataProvider() |