【问题标题】:how to use SQLite with Qt如何在 Qt 中使用 SQLite
【发布时间】:2017-11-25 21:24:12
【问题描述】:

我只想在tableview 中的 qt 中显示我的数据库中的一行。 这是我当前的代码:

void Favorites::on_pushButton_load_fav_clicked()
{
MainWindow conn;
QSqlQueryModel *modal = new QSqlQueryModel();
conn.connOpen();
QSqlQuery *qry = new QSqlQuery(conn.mydb);
qry->prepare("select username from Waehrung_MMI"); 
qry->exec();
modal->setQuery(*qry);
ui->tableView_favs->setModel(modal);

 conn.connClose();
qDebug () << (modal->rowCount());
}

现在它显示了整列,但我只想显示例如该列的第 17 行。

【问题讨论】:

  • 为什么选择所有行?
  • 您需要了解第 17 行的特殊之处并相应地构建您的查询!

标签: c++ mysql database qt sqlite


【解决方案1】:

您可以使用 SQL 的 limit 功能来获取单行。

   void Favorites::on_pushButton_load_fav_clicked() {
       MainWindow conn;
       QSqlQueryModel * modal = new QSqlQueryModel();
       conn.connOpen();
       QSqlQuery * qry = new QSqlQuery(conn.mydb);
       qry->prepare("select username from Waehrung_MMI limit 1");
       qry->exec();
       modal->setQuery( * qry);
       ui->tableView_favs->setModel(modal);
       conn.connClose();
       qDebug() << (modal->rowCount());
   }

【讨论】:

    【解决方案2】:

    正如@h-gomaa 所说,您需要正确编写查询。

    当你调用prepare 时,它应该是这样的,假设你的表中有一个id

    qry->prepare(QString("SELECT username FROM Waehrung_MMI WHERE id = :id"));
    qry->bindValue(":id", 17);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-20
      • 1970-01-01
      • 2020-10-07
      • 2020-03-30
      • 1970-01-01
      • 2015-03-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多