QSqlQuery无法正确回答

时间:2013-01-13 23:10:26

标签: c++ sqlite qt qsqlquery

我尝试用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

我在哪里做错了?

谢谢!

1 个答案:

答案 0 :(得分:1)

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

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