2017-09-29 36 views
1

PostgreSQLデータベースに正常に接続しましたが、照会できませんでした。いくつかの照会を試みましたが、このエラーが発生しました。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()); 
     } 
    } 
} 

は、誰もがあなたが間違ってQtの機能を使用している私に

+0

あなたはPostgreSQLサーバ上のログファイルに見ていましたか? –

答えて

1

を啓発してくださいすることができます。

QSqlQuery query("select * from company");は直接クエリを実行するため、exec()を呼び出す必要はありません。 exec()を呼び出すと、事前に準備されたクエリが実行されますが、エラーの原因となっているものを準備していません。

あなたはExecuting SQL StatementsSqlQuery reference

EDITに相談することをお勧めします。このような構築物は、私の作品:

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(); 
} 
+0

私はこれを試しましたが、エラーはありませんが、今はクエリを実行していません。 – Tony

+1

正しいデータベースでクエリを実行していることは確かですか? Postgresをデータベースの名前として指定しました。コードを変更したら、変更内容を反映するために質問を編集して、自分が何をしているかを把握してください。 – Eelke

+0

クエリを実行した後のエラーをチェックすることは、常に良い考えです。私の答えに私のサンプルコードを見てください。 – Eelke

関連する問題