UbuntuでQt5からSQLServer2019に接続する
前回の続きです。
unixODBC と Microsoft 版 ODBCドライバでの接続が確認できたので、次は Qt5 からアクセスしてみます。
ちなみに、Qt5 の SQLServer 用データベースドライバは QODBC ですが、Unix と macOS 環境の QODBC には unixODBC のヘッダとライブラリが利用されているため、事前に unixODBC 単体で接続確認をした次第です。
1. 環境
- Ubuntu Desktop 18.04.4 LTS 日本語Remix (Linux Kernel 5.3.0-28-generic)
- SQL Server 2019 (RTM-CU1) (KB4527376) - 15.0.4003.23 (X64) on Linux
- mssql-tools unixodbc-dev パッケージは導入済み
- 評価用のデータベースを NorthwindJ にしていますが、各々の環境に置き換えてください。
2. Qt5 環境の準備
LTS 版は Qt 5.12.4 ですが、最新版を試したくなり、Qt 5.14.1 の環境を準備しました。
※ Qt5 のインストール手順については言及しません。
3. Qt コンソールアプリケーション での評価
(1) プロジェクトの準備
SQLServer 上のデータベース NorthwindJ に接続して、クエリを実行結果を表示するプロジェクト mssqltest を作成します。
- Qt Creator を起動
- 「ファイル」-「ファイル/プロジェクトの新規作成」を選択
- プロジェクト「アプリケーション」の「Qt コンソールアプリケーション」を選択し、[ 選択 ] ボタンをクリック
- [ プロジェクトパス ] で、名前に mssqltest と入力し、パスは任意の場所を設定して [ 次へ ] ボタンをクリック
- [ ビルドシステムの定義 ] で、そのまま [ 次へ ] ボタンをクリック
- [ Translation File ] で、そのまま [ 次へ ] ボタンをクリック
- [ キットの選択 ] で、そのまま [ 次へ ] ボタンをクリック
- [ プロジェクト管理 ] で、そのまま [ 完了 ] ボタンをクリック
自動的にプロジェクトが生成され、main.cpp の編集画面になります。
(2) プロジェクト編集
まず、mssqltest.pro の編集です。プロジェクトにQT += sql
を追記します。
QT -= qui
QT += sql
次に main.cpp を編集します。
上の例では Connection String を記述して、DSN-less で接続しています。
DSN を指定する場合、次のように変更してください。
編集が終わったら、「ファイル」-「すべて保存」を選択します。
(3) ビルドと実行
試すだけなので、Qt Creator の「ファイル」-「実行」を選択します。
正常にビルドが終了すると、プロジェクトが起動して、次のように表示されます。
これで、Qt 5.14 から unixODBC と MS 版 ODBC ドライバ を経由して、SQLServer への接続が確認できました。
4. 補足
前述のプロジェクトは5・6年前に試したコードを少し修正したものなので、現状の推奨される書き方と異なるかもしれません。
後でデータベースの扱いについて調べたら、とても参考になる記事がありましたので、こちらをお勧めします。
Qt5 はマルチプラットホームな開発環境なので、Linux と macOS でお世話になってます。公式サンプルも色々試せるので、とても勉強になります。
なお、公式サンプルの SQL Browser を試したら、変更を加える事なく動作しました。
Connection String 指定と DSN 指定どちらも問題ないです。
接続ダイアログが表示されたら、入力項目「Database Name: 」に接続文字列を入力して、他の入力項目は未入力のまま [ OK ] ボタンをクリックすれば DSN 指定のように接続されます。