0
クロスケーブルまたはワイヤレスを介してQPSQLデータベースに接続しようとしています。正しい情報を入力しても問題ありませんが、間違った情報を入力すると、qDebugメッセージを表示するのではなく、プログラムがクラッシュします。QPSQLへの接続に失敗するとQtプログラムがクラッシュする
失敗した接続connect()
返すNULLで
const char* driverName = "QPSQL";
QSQLDbHelper* qSQLDbHelper = new QSQLDbHelper(driverName);
postgres_db = qSQLDbHelper->connect(host,database,username,password,port);
if(postgres_db->open())
{
qDebug() <<"Opened Postgres Database"<< postgres_db->open();
}
else
{
qDebug() << "Something went Wrong:" << postgres_db->lastError().text();
}
qSQLDbHelper->disConnect();
delete qSQLDbHelper;
void QSQLDbHelper::disConnect()
{
qDebug() << "Disconnected From Postgres Database!";
postgres_db->close();
}
あなたの答えは正しいですが、私は、クラッシュしないように、接続に失敗した場合に何を返すのかと少し混乱しています。 – Tony
できれば 'connect'関数を編集して' db-> open() 'を返し、新しい関数を作成して' QSQLDbHelper-> db'プロパティにアクセスしてください。 'connect'がfalseを返すならば、[lastError()](http://doc.qt.io/qt-5/qsqldatabase.html#lastError)を使うことができます。 –
私は2つのアイデアを使って答えを更新しました。このヘルパーをそのまま使用すると、接続時にエラーをチェックすることはできません。そのクラスを編集する必要があります。 –