【问题标题】:QSqlDatabase delete all rows from tableQSqlDatabase 从表中删除所有行
【发布时间】:2015-07-25 15:46:49
【问题描述】:

您好,我需要从 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";

谢谢 哈里斯

【问题讨论】:

  • 只是做一个truncate table fRecogtable
  • 我也试过了,但也没用。
  • ```` query.exec("DELETE FROM table_name") ```` 工作但 ```` query.exec("DELETE FROM SQLITE_SEQUENCE WHERE name='table_name'") `` ``对我没用。

标签: mysql qt qsqlquery qsqldatabase


【解决方案1】:

在 PyQt 中,这个问题用 query.exec_('TRUNCATE my_table;') 解决,你不需要 prepare()

【讨论】:

    猜你喜欢
    • 2012-03-15
    • 2011-03-01
    • 2018-07-31
    • 2013-02-11
    • 1970-01-01
    • 1970-01-01
    • 2011-12-29
    • 2014-10-18
    • 1970-01-01
    相关资源
    最近更新 更多