最近、QtCreatorとC++を使い始め、ニーズに合わせてPostgreSQLデータベースを使用したいと考えました。そこで、ドライバーを取得する方法を理解し、必要なすべてのタグを含めて、いくつかのクエリの実行を開始しました。
新しいテーブルを作成し、いくつかのデータを挿入し、後で更新しました。いくつかの行を選択しようとするまでは、すべて問題なく機能しました。クエリはエラーメッセージとNULLの応答なしで終了しました。
コマンドは単純なSELECT
-Commandでした:
query = db.exec("SELECT id FROM users WHERE name = 'Testuser';");
しかし、基本SELECT
も機能しません:
query = db.exec("SELECT * FROM users;");
このクエリを正確にコピーして、SQLステートメントとして直接pgAdminに配置すると、正常に機能し、ユーザーIDで応答します。
私はテーブル名に引用符を試しSELECT users.id FROM public.users WHERE users.name = 'Testuser';
ました。グーグルからのいくつかのヒントのために、完全な行名()と大小の文字を試しました-何も機能しませんでした。
すべてのクエリは問題なく機能しますが、を試してみると、SELECT
常にNULLで応答します。このSELECT
-QueryのすべてがpgAdminで問題なく機能しますが。
誰かアイデアはありますか?
次のタグが使用されます。
#include <QDebug>
#include <QtCore/QCoreApplication>
#include <QtSql/QPSQLDriver>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QCryptographicHash>
#include <QSqlError>
完全なコードは次のようになります。
QString response;
QSqlQuery query;
QSqlDatabase db = QSqlDatabase::addDatabase("QPSQL");
db.setHostName("127.0.0.1");
db.setPort(5432);
db.setDatabaseName("postgres");
db.setUserName("postgres");
db.setPassword("password");
if (db.open())
{
query = db.exec("SELECT id FROM users WHERE name = 'Testuser';");
response = query.value(0).toString();
}
db.close();