Sqlite: Don't copy values for binding

In Sqlite as you bind value you can bind or simply use a reference to the
bound values. Because we hold the values anyway we do not copy them.

Change-Id: I11c6fa5036ea958c8e48e3a117ad4a002d749c22
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
Reviewed-by: Marco Bubke <marco.bubke@qt.io>
This commit is contained in:
Marco Bubke
2017-09-18 15:53:51 +02:00
committed by Tim Jenssen
parent c870199823
commit ee5efe06e6
2 changed files with 9 additions and 9 deletions

View File

@@ -188,7 +188,7 @@ void Statement::bind(int index, Utils::SmallStringView text)
index,
text.data(),
int(text.size()),
SQLITE_TRANSIENT);
SQLITE_STATIC);
checkForBindingError(resultCode);
}

View File

@@ -84,26 +84,26 @@ protected:
}
template<typename... ValueType>
void bindValues(ValueType... values)
void bindValues(const ValueType&... values)
{
bindValuesByIndex(1, values...);
}
template<typename... ValueType>
void write(ValueType... values)
void write(const ValueType&... values)
{
bindValuesByIndex(1, values...);
execute();
}
template<typename... ValueType>
void bindNameValues(ValueType... values)
void bindNameValues(const ValueType&... values)
{
bindValuesByName(values...);
}
template<typename... ValueType>
void writeNamed(ValueType... values)
void writeNamed(const ValueType&... values)
{
bindValuesByName(values...);
execute();
@@ -420,26 +420,26 @@ private:
}
template<typename ValueType>
void bindValuesByIndex(int index, ValueType value)
void bindValuesByIndex(int index, const ValueType &value)
{
bind(index, value);
}
template<typename ValueType, typename... ValueTypes>
void bindValuesByIndex(int index, ValueType value, ValueTypes... values)
void bindValuesByIndex(int index, const ValueType &value, const ValueTypes&... values)
{
bind(index, value);
bindValuesByIndex(index + 1, values...);
}
template<typename ValueType>
void bindValuesByName(Utils::SmallStringView name, ValueType value)
void bindValuesByName(Utils::SmallStringView name, const ValueType &value)
{
bind(bindingIndexForName(name), value);
}
template<typename ValueType, typename... ValueTypes>
void bindValuesByName(Utils::SmallStringView name, ValueType value, ValueTypes... values)
void bindValuesByName(Utils::SmallStringView name, const ValueType &value, const ValueTypes&... values)
{
bind(bindingIndexForName(name), value);
bindValuesByName(values...);