Russian Qt Forum

Qt => Базы данных => Тема начата: Yegor от Октябрь 07, 2016, 16:34



Название: MySQL и QSqlQuery::execBatch
Отправлено: Yegor от Октябрь 07, 2016, 16:34
Всем здравствуйте!

Использую MySQL и Qt5.6.

Нужно большое количество данных вставить в таблицу, чтобы была экономия времени и ресурсов. Смотрел в Assistant про QSqlQuery. Там для таких целей есть QSqlQuery::execBatch - который одним единственным запросом вставляет большой объем данных. Но вот только в Assistante пишут, что
Цитировать
If the database doesn't support batch executions, the driver will simulate it using conventional exec() calls.
Что означает, что не со всеми базами данных такое возможно. Если не возможно, то пакет данных разбивается на множество мелких и для каждого отдельно делается QSqlQuery::exec - что делает всю затею бесполезной.

Вопрос, а поддерживает ли MySQL такую функцию?

Спасибо!


Название: Re: MySQL и QSqlQuery::execBatch
Отправлено: Johnik от Октябрь 07, 2016, 17:25
bool QSqlDriver::hasFeature(DriverFeature feature) const (http://doc.qt.io/qt-5/qsqldriver.html#hasFeature)
QSqlDriver::BatchOperations (http://doc.qt.io/qt-5/qsqldriver.html#DriverFeature-enum)

а вообще в исходниках (src\qtbase\src\sql\drivers\mysql\qsql_mysql.cpp):
Код
C++ (Qt)
...
   case BatchOperations:
   case SimpleLocking:
   case EventNotifications:
   case FinishQuery:
   case CancelQuery:
       return false;
...
 


Название: Re: MySQL и QSqlQuery::execBatch
Отправлено: Yegor от Октябрь 07, 2016, 19:45
Спасибо большое, Johnik!