• 4485阅读
  • 3回复

莫名其妙的问题 [复制链接]

上一主题 下一主题
离线jorneyr
 

只看楼主 正序阅读 楼主  发表于: 2009-10-16
使用sqlite作为数据库, 使用下面一的代码, 程序在查询数据库的时候莫名其妙的退出, 试过N次, 皆一样:
1.
    QString sql = QString("SELECT amount, rate FROM items WHERE batch=%1")
                  .arg(ui->batchLineEdit->text().toInt());
    QSqlQuery query(sql, DBUtil::getDatabase());

    while(query.next()) {
        ................
    }

2.
但是, 如果换成下面这样的, 程序就一直运行正常:
    QString sql = QString("SELECT amount, rate FROM items WHERE batch=%1")
                  .arg(ui->batchLineEdit->text().toInt());
    QSqlQuery query(DBUtil::getDatabase());
    query.exec(sql);

    while(query.next()) {
        ................
    }

原因不名.
离线foxyz

只看该作者 3楼 发表于: 2009-10-16
执行一次还是两次对于查询来说都是一样的.
关键是,你得判断一下query.exec是否成功,没有成功,你就看看lastError
离线jorneyr

只看该作者 2楼 发表于: 2009-10-16
Constructs a QSqlQuery object using the SQL query and the database db. If db is not specified, the application's default database is used. If query is not an empty string, it will be executed.

按文档中的说明,  由于我给的sql语句和数据库连接都是有效的, 在构造这个query的时候, 查询已经被执行了一次, 如按楼上所言, 加了query.exec(), 那么这条sql语句就会被执行两次.
离线foxyz

只看该作者 1楼 发表于: 2009-10-16
1.
    QString sql = QString("SELECT amount, rate FROM items WHERE batch=%1")
                  .arg(ui->batchLineEdit->text().toInt());
    QSqlQuery query(sql, DBUtil::getDatabase());
  
    这里加上query.exec();
    while(query.next()) {
        ................
    }
快速回复
限100 字节
 
上一个 下一个