无法查询PostgreSQL数据库

时间:2017-09-29 09:43:39

标签: postgresql qt

我已经成功连接到PostgreSQL数据库,但我似乎无法查询它我已经尝试了几个查询但是仍然面对这个错误。

Connection Successful
QSqlError("42601", "QPSQL: Unable to create query", "ERROR:  syntax error at 
end of input\nLINE 1: EXECUTE \n                ^\n(42601)")

我的代码

void MainWindow::connection()
{
    QSqlDatabase db;
    db = QSqlDatabase::addDatabase("QPSQL");
    db.setHostName("localhost");
    db.setDatabaseName("postgres");
    db.setUserName("postgres");
    db.setPassword("xxx");
    db.setPort(5433);
    if (db.open())
        qDebug() << "Connection Successful";
    else
        qDebug() << "Connection Failed!";
}

void MainWindow::query()
{
    QSqlQuery query("select * from company");
    if( !query.exec())
            qDebug() << query.lastError();
    else
    {
        while(query.next())
        {
            qDebug() << query.value(0).toString();
            ui->label_2->setText(query.value(0).toString());
        }
    }
}

任何人都可以请赐教我

1 个答案:

答案 0 :(得分:2)

您正在错误地使用Qt功能。

QSqlQuery query("select * from company");直接执行查询,无需调用exec()。调用exec()会运行以前准备好的查询,但是您没有准备任何导致错误的查询。

您可能需要咨询Executing SQL StatementsSqlQuery reference

编辑:像这样的结构对我有用:

QSqlQuery query("select * from company");
QSqlError error = query.lastError();
if (error.type() == QSqlError::NoError) {
    while(query.next())
    {
        qDebug() << query.value(0).toString();
        ui->label_2->setText(query.value(0).toString());
    }
}
else {
    qDebug() << error.text();
}