forked from qt-creator/qt-creator
Sqlite: Add variadic bind and write functions
You can now write
SqliteWriteStatement statement("UPDATE test SET name=?, number=?
WHERE rowid=?", database);
statement.write("see", 7.23, 1);
and
SqliteWriteStatement statement("UPDATE test SET name=@name, number=@number
WHERE rowid=@id", database);
statement.writeNamed("@name", "see", "@number", 7.23, "@id", 1);
This is more type safe than using variants and performant too.
Change-Id: Ie1ed2a6d326b956be5c4ec056214f3f5b1531f45
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
@@ -48,8 +48,9 @@
|
||||
|
||||
namespace Sqlite {
|
||||
|
||||
SqliteDatabaseBackend::SqliteDatabaseBackend()
|
||||
: m_databaseHandle(nullptr),
|
||||
SqliteDatabaseBackend::SqliteDatabaseBackend(SqliteDatabase &database)
|
||||
: m_database(database),
|
||||
m_databaseHandle(nullptr),
|
||||
m_cachedTextEncoding(Utf8)
|
||||
{
|
||||
}
|
||||
@@ -124,8 +125,7 @@ sqlite3 *SqliteDatabaseBackend::sqliteDatabaseHandle()
|
||||
|
||||
void SqliteDatabaseBackend::setPragmaValue(Utils::SmallStringView pragmaKey, Utils::SmallStringView newPragmaValue)
|
||||
{
|
||||
SqliteReadWriteStatement statement(Utils::SmallString{"PRAGMA ", pragmaKey, "='", newPragmaValue, "'"}, *this);
|
||||
statement.step();
|
||||
execute(Utils::SmallString{"PRAGMA ", pragmaKey, "='", newPragmaValue, "'"});
|
||||
Utils::SmallString pragmeValueInDatabase = toValue<Utils::SmallString>("PRAGMA " + pragmaKey);
|
||||
|
||||
checkPragmaValue(pragmeValueInDatabase, newPragmaValue);
|
||||
@@ -160,7 +160,7 @@ TextEncoding SqliteDatabaseBackend::textEncoding()
|
||||
|
||||
Utils::SmallStringVector SqliteDatabaseBackend::columnNames(Utils::SmallStringView tableName)
|
||||
{
|
||||
SqliteReadWriteStatement statement("SELECT * FROM " + tableName, *this);
|
||||
SqliteReadWriteStatement statement("SELECT * FROM " + tableName, m_database);
|
||||
return statement.columnNames();
|
||||
}
|
||||
|
||||
@@ -176,7 +176,7 @@ int SqliteDatabaseBackend::totalChangesCount()
|
||||
|
||||
void SqliteDatabaseBackend::execute(Utils::SmallStringView sqlStatement)
|
||||
{
|
||||
SqliteReadWriteStatement statement(sqlStatement, *this);
|
||||
SqliteReadWriteStatement statement(sqlStatement, m_database);
|
||||
statement.step();
|
||||
}
|
||||
|
||||
@@ -391,7 +391,7 @@ void SqliteDatabaseBackend::throwException(const char *whatHasHappens) const
|
||||
template <typename Type>
|
||||
Type SqliteDatabaseBackend::toValue(Utils::SmallStringView sqlStatement)
|
||||
{
|
||||
SqliteReadWriteStatement statement(sqlStatement, *this);
|
||||
SqliteReadWriteStatement statement(sqlStatement, m_database);
|
||||
|
||||
statement.next();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user