2012-03-17 92 views
4
... 
query.exec("insert into person values(104, 'Roberto', 'Robitaille')"); 
query.exec("insert into person values(105, 'Maria', 'Papadopoulos')"); 
... 

这些可以在一个单一的query.exec()被结合?QtSql多个查询执行

回答

12

我想你试图在批处理中执行你的查询。是的,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