QSqlDatabase从表中删除所有行

时间:2015-07-25 15:46:50

标签: mysql qt qsqlquery qsqldatabase

您好我需要删除QSqlDatabase表中的所有行,我的代码看起来

      QString dbName = QDir::currentPath()+"/DB";
      QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
      db.setDatabaseName(dbName);
      if(db.open()){
        QSqlQuery query(db);
        query.prepare("truncate fRecogtable"); // this not working
        //query.prepare("Delete from fRecogtable"); //this working

        if(!query.exec() )
          qDebug() << "deletion failed";
        query.clear();
        db.close();
        }

问题是命令truncate fRecogtable没有从Delete from fRecogtable工作的表中删除记录。我需要使用truncate,因为我必须重置自动增量字段。

可能是什么问题?

修改

最后,我成功地与

合作
query.prepare("Delete from fRecogtable");
 if(!query.exec() )
    qDebug() << "deletion failed";

 query.clear();
 query.prepare("DELETE FROM SQLITE_SEQUENCE WHERE name='fRecogtable'");
 if(!query.exec() )
     qDebug() << "deletion failed";

由于 哈里斯

1 个答案:

答案 0 :(得分:1)

在PyQt中,此问题可以通过query.exec_('TRUNCATE my_table;')解决,您不需要prepare()