QtSql выполнение нескольких запросов - PullRequest
5 голосов
/ 17 марта 2012
 ...
 query.exec("insert into person values(104, 'Roberto', 'Robitaille')");
 query.exec("insert into person values(105, 'Maria', 'Papadopoulos')");
 ...

Можно ли их связать в одном query.exec () ?

1 Ответ

12 голосов
/ 17 марта 2012

Полагаю, вы пытаетесь выполнить пакетный запрос.Да, qt поддерживает этот сценарий.

bool QSqlQuery::execBatch ( BatchExecutionMode mode = ValuesAsRows )

Выполняет предварительно подготовленный SQL-запрос в пакете.Все связанные параметры должны быть списками вариантов.Если база данных не поддерживает пакетное выполнение, драйвер будет имитировать ее с помощью обычных вызовов exec ().Возвращает true, если запрос выполнен успешно;в противном случае возвращает false.

 QSqlQuery q;
 q.prepare("insert into myTable values (?, ?)");

 QVariantList ints;
 ints << 1 << 2 << 3 << 4;
 q.addBindValue(ints);

 QVariantList names;
 names << "Harald" << "Boris" << "Trond" << QVariant(QVariant::String);
 q.addBindValue(names);

 if (!q.execBatch())
     qDebug() << q.lastError();

http://doc.qt.io/archives/qt-4.7/qsqlquery.html#execBatch

...