首页 文章

QSqlQuery无法正确回答

提问于
浏览
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

我在哪里做错了?

谢谢!

1 回答

  • 1

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

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

相关问题