c++ QT中的查询未获得任何数据

nbewdwxp  于 2023-01-03  发布在  其他
关注(0)|答案(2)|浏览(132)

这是我的表中的行。

使用这段代码,我可以在控制台中“in”。

QSqlQuery qry;
qry.prepare("SELECT * FROM user");
qry.exec();
if(qry.size() > 0)
    qInfo() << "in";
else
    qInfo() << "error";

但是有了这个代码,我得到了“错误”。

QSqlQuery qry;
qry.prepare("SELECT age FROM user");
qry.exec();
if(qry.size() > 0)
    qInfo() << "in";
else
    qInfo() << "error";
nx7onnlm

nx7onnlm1#

试试看

QSqlQuery qry;
qry.prepare("SELECT age FROM \"user\"");
qry.exec();

问题出在表名上。由于user是一个保留字,一些工具(PgAdmin)会自动给名称"user"加上双引号,当应用到表时,您必须使用双引号。不幸的是,user在Postgres中是一个函数(相当于current_user),因此第一个查询返回一行,没有错误。
最好的解决方案是重命名表,并且不使用保留字作为Postgres标识符(表、列、视图、函数等的名称)。

lfapxunr

lfapxunr2#

QSqlQuery qry;
qry.prepare("SELECT age FROM user");
if(qry.exec()) {
    while(qry.next()) {
        qInfo()<<"in";
    }
} else {
    qInfo()<<"error";
}

相关问题