#include #include #include #include #include #include #include #include #include #include // // Oracle : create table actlist(tag varchar2(40), action varchar2(40)); // // sqlite : create table actlist (tag varchar2(40), action varchar2(40)); // sqlite : create index ix_actlist on actlist (tag); // sqlite : select * from actlist where tag = '00000000-01234567890123456789'; // // mysql : create table actlist (tag varchar(40), action varchar(40)); // sqlite : create index ix_actlist on actlist (tag); // sqlite : select * from actlist where tag = '00000000-01234567890123456789'; // // // // To execute the program : // // ./ActList QSQLITE /mnt/Wrk/manu/Sice/pruebas/ActList.dbf manu manu 10 --> 1:42 // ./ActList QOCI ora11g2 manu manu 10 --> > 60' // ./ActList QMYSQL manu manu manu 10 --> 24:26 // QSqlDatabase Db; bool createConnections(QString &_stHost, QString &_stDriver, QString &_stDbName, QString &_stUser, QString &_stPasswd) { qDebug() << "createConnections Host:" << _stHost; qDebug() << "createConnections Driver:" << _stDriver; qDebug() << "createConnections DbName:" << _stDbName; qDebug() << "createConnections User:" << _stUser; qDebug() << "createConnections Passwd:" << _stPasswd; Db = QSqlDatabase::addDatabase(_stDriver); Db.setDatabaseName( _stDbName ); Db.setHostName( _stHost ); Db.setUserName( _stUser ); Db.setPassword( _stPasswd ); if ( ! Db.open() ) { qCritical("createconn: Cannot open database: %s (%s)", Db.lastError().text().toLatin1().data(), qt_error_string().toLocal8Bit().data()); return FALSE; } qDebug() << "createconn: valid:" << Db.isValid(); // Returns false qDebug() << "createconn: DriverName:" << Db.driverName(); // Returns false qDebug() << "createconn: Driver's:" << Db.drivers(); // Returns false if (Db.driver()->hasFeature(QSqlDriver::Transactions) == true) qDebug() << "createconn: trans: transactions supported"; else qDebug() << "createconn: trans: transactions NOT supported"; if (Db.driver()->hasFeature(QSqlDriver::PreparedQueries) == true) qDebug() << "createconn: trans: PreparedQueries supported"; else qDebug() << "createconn: trans: PreparedQueries NOT supported"; if (Db.driver()->hasFeature(QSqlDriver::BLOB) == true) qDebug() << "createconn: trans: BLOB supported"; else qDebug() << "createconn: trans: BLOB NOT supported"; return TRUE; } int main( int argc, char *argv[] ) { QString stCampo1, stCampo2, stHost; QHostInfo hiHost; int siMany, siWk1, siWk2; size_t szSize = 50; char scWk1[szSize]; QString stDriver(argv[1]), stDbName(argv[2]), stUser(argv[3]), stPasswd(argv[4]); QApplication app( argc, argv, FALSE ); stHost = hiHost.localHostName(); siMany = ::QString(argv[5]).toInt(); if ( createConnections(stHost, stDriver, stDbName, stUser, stPasswd) ) { qDebug() << "main: DriverName:" << Db.driverName(); qDebug() << "main: Driver's:" << Db.drivers(); qDebug() << "main: Database:" << Db.databaseName(); qDebug() << "main: Hostname:" << Db.hostName(); qDebug() << "main: Records:" << siMany; QSqlQuery sqIn(Db); if (Db.transaction()) { qDebug() << ::QString("Transaction started normally"); } else { qDebug() << ::QString("Cannot start transaction"); exit(-1); } sqIn.prepare("insert into actlist (tag, action) values (:P1, :P2)"); siWk2 = 5000; for (siWk1=1; siWk1 10) { if (siWk1 == siWk2) { qDebug() << siWk2; siWk2 += 5000; } } else qDebug() << stCampo1 << stCampo2; if (sqIn.exec() != true) { qDebug() << ::QString("Write actlist error: %1") .arg(sqIn.lastError().text()); exit(-1); } if (siWk1 > 10000) break; } sqIn.finish(); if (Db.rollback()) { qDebug() << ::QString("Normal rollback"); } else { qDebug() << ::QString("Cannot made rollback"); } } else { qDebug() << ::QString("Not connected exit:"); } return 0; }