2012-03-17 2 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