0

我试图用 Qt 创建一个 SQLite 数据库,我做到了!我将我的数据库称为“ prova_db ”,它包含下表:

marker_db

id     site (columns)
0      www.google.it
1      www.youtube.it
2      www.facebook.it

然后,我尝试查询我的 prova_db。这是代码:

int main () {
    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
    db.setDatabaseName("prova_db");
    if (!db.open()) { printf("DB doesn't exist\n");}
    else  {
        QSqlQuery query1;
            query1.exec( "SELECT site FROM marker_db WHERE id = 1");

        int i = query1.numRowsAffected();
        printf("result row: %d\n", i);
        while(query1.next()){
            QString str = query1.value(0).toString();
            printf("result: %s\n", str);
        }
    }
    db.close();
return 0;
}

结果是:

result row : 0
result : (strange char)

相反,结果应该是:

result row: 1
result : www.youtube.it

我在哪里做错了?

谢谢!

4

1 回答 1

1

我认为您有错误的期望:结果告诉您查询更改numRowsAffected()了多少行。您的查询不会改变任何内容,因此结果应该是或者未定义。因此,您不应该期望第一个输出是. 请改用该方法来找出与您的查询匹配的行数。0risultato riga: 1size()SELECT

第二个问题是您将一个QString对象传递给printf(),它需要一个指向以空值结尾的char值数组的指针(当您使用%s格式说明符时)。您需要将QString对象转换为指向 C 字符数组的指针。

于 2013-01-13T23:23:21.807 回答