Qt World Summit: Register Today!

writing txt file by making query SQLITE database than INSERT query result another column than DELETE it

  • Hello,

    I create a SQLITE database like below and add my maillists reading txt files,

    db = QSqlDatabase::addDatabase("QSQLITE", "TxtFileDB");
    db.setDatabaseName(qApp->applicationDirPath() + "/mails.DB");

    i seperated tables for countries (Germany, Switzerland, Spain etc.) and show by tablewidget

    i want to create a maillist txt it takes random mails from the tables how many mail i write the tablewidget next column

    for example

    germany 100
    spain 50
    switzerland 150

    totally 300 mail.

    i made this but i need to delete mail from unsent mail column and add to sent column for all tables

    please give me an advice because i just tried take mails from databese randomly and write txt file but i thought i have to make a query for all cycle in while(query.next())

    maybe there is a way for take my query result paste sent column than delete from unsent column..

    so any idea will be accepted.

    void MainWindow::on_createMailListBtn_clicked()
    QDateTime now = QDateTime::currentDateTime();
    QString timestamp = now.toString(QLatin1String("yyyyMMdd-hhmmsszzz"));
    QString fileName = QString::fromLatin1("mailList_%1.txt").arg(timestamp);
    QFile newMailListFile(fileName);
    newMailListFile.open(QIODevice::WriteOnly | QIODevice::Text);
    QTextStream out(&newMailListFile);

    QStringList tables = db.tables();
    QSqlQuery query(db);
    QString tableName;
    QString mailingCount;
    for (int i = 0; i < tables.size(); i++)
        tableName = ui->mailsTable->item(i,0)->text();
        mailingCount = ui->mailsTable->item(i,1)->text();
        qDebug() << tableName;
        qDebug() << mailingCount;
       query.prepare("SELECT * FROM " + tableName + " ORDER BY RANDOM() LIMIT " + mailingCount );
          qCritical() << query.lastQuery();
          qCritical() << query.lastError().databaseText();
          qCritical() << query.lastError().driverText();
          out << query.value("mail").toString() << "\n";


  • Lifetime Qt Champion


    You can keep a list of the ids/primary key of the mails you are going to modify and then execute an update query using them.

    Hope it helps

  • if i take all ids for an array than can i use all of than in a query to take from unsent table to sent table once?

    for example

    QList<int> mailsUpdated;

            out << query.value("mail").toString() << "\n";

    would you please give me an example for what you think about?


  • Lifetime Qt Champion

    Translate the list in a string of comma separated numbers and use it in the update statement

Log in to reply