Могу ли я использовать ту же переменную QSQLQuery
для выполнения нескольких операторов в Qt 5.3.2 с использованием SQLite? Должен ли я вызвать функцию finish
или clear
после каждого выполнения?Можно ли использовать ту же переменную QSQLQuery для выполнения нескольких операторов?
Например:
QSqlQuery query;
query.prepare("INSERT INTO myTable (id, name) VALUES (:id, :name)");
query.bindValue(":id", id);
query.bindValue(":name", name);
if(!query.exec())
{
qDebug() << "Error";
}
query.finish() // or query.clear()?
query.prepare("INSERT INTO myProducts (product, price) VALUES (:product, :price)");
query.bindValue(":product", product);
query.bindValue(":price", price);
if(!query.exec())
{
qDebug() << "Error";
}
query.finish() // or query.clear()?
Примечание: Я думаю, что нужно использовать функцию finish
, но я не понял, что именно эта функция делает clear
. В документации указано:
Очищает результирующий набор и освобождает любые ресурсы, хранящиеся в запросе. Задает состояние запроса неактивным.
Что происходит, когда вы запускаете его? Отключив память, я использовал тот же QSqlQuery, что и вы, без выполнения функции finish() или clear(). Мое предположение - такие вещи, как lastError() и isValid(), вероятно, ошибочно, без этого. –