gpt4 book ai didi

c++ - QSqlQuery 没有正确回答

转载 作者:行者123 更新时间:2023-11-28 07:48:41 27 4
gpt4 key购买 nike

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

我哪里做错了??

谢谢!

最佳答案

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

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

关于c++ - QSqlQuery 没有正确回答,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14309330/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com