データベースへの接続
QSqlQuery またはQSqlQueryModel を使ってデータベースにアクセスするには、1つ以上のデータベース接続を作成し、開きます。データベース接続は通常、データベース名ではなく接続名で識別されます。QSqlDatabase では、名前のない接続であるデフォルト接続の概念もサポートしています。接続名の引数を取るQSqlQuery またはQSqlQueryModel メンバ関数を呼び出す際、接続名を渡さなければデフォルト接続が使用されます。デフォルト接続の作成は、アプリケーションでデータベース接続が1つしか必要ない場合に便利です。
接続の作成とオープンの違いに注意してください。接続を作成するには、QSqlDatabase クラスのインスタンスを作成します。接続は開くまで使用できません。以下のスニペットは、デフォルトの接続を作成し、それを開く方法を示しています:
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName("bigblue"); db.setDatabaseName("flightdb"); db.setUserName("acarlson"); db.setPassword("1uTbSbAs"); bool ok = db.open();
最初の行で接続オブジェクトを作成し、最後の行でそれをオープンして使用しています。その間に、database name 、host name 、user name 、password などの接続情報を初期化しています。この場合、ホストbigblue
上の MySQL データベースflightdb
に接続しています。addDatabase() の"QMYSQL"
引数は、接続に使用するデータベース・ドライバーのタイプを指定します。Qt に含まれるデータベースドライバは、サポートされているデータベースドライバの表に示されています。
このスニペットの接続はデフォルトの接続になります。これは、addDatabase() の第2引数に接続名を渡していないからです。例えば、ここでは"first"
と"second"
という名前の2つのMySQLデータベース接続を確立します:
QSqlDatabase firstDB = QSqlDatabase::addDatabase("QMYSQL", "first"); QSqlDatabase secondDB = QSqlDatabase::addDatabase("QMYSQL", "second");
これらの接続が初期化された後、open() をそれぞれ実行し、接続を確立する。open() が失敗すると、false
が返される。この場合、QSqlDatabase::lastError ()を呼び出してエラー情報を取得する。
接続が確立されると、接続名を指定して静的関数QSqlDatabase::database() をどこからでも呼び出すことができ、そのデータベース接続へのポインタを取得できます。接続名を渡さなければ、デフォルトの接続が返されます。例えば
QSqlDatabase defaultDB = QSqlDatabase::database(); QSqlDatabase firstDB = QSqlDatabase::database("first"); QSqlDatabase secondDB = QSqlDatabase::database("second");
データベース接続を削除するには、まずQSqlDatabase::close() を使ってデータベースを閉じ、次に静的メソッドQSqlDatabase::removeDatabase() を使って削除します。
本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。