SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

MonoでDBMS用データプロバイダを使う

Monoで他のDBも使ってみたよ!(Firebird、DB2編)

MonoでFirebird、DB2を使う

  • X ポスト
  • このエントリーをはてなブックマークに追加

データプロバイダの準備

 ホストOS側で「System.Data.Odbc」の実行環境を準備します。「IBM Data Server Client」および「unixODBC」の設定を行います。

IBM Data Server Clientのインストールについて

 DB2 Express-Cと同様、いくつかのインストール方法が用意されています。IBM DB2 Database for Linux, UNIX, and Windows インフォメーション・センター内の「IBM データ・サーバー・クライアントのインストール (Linux および UNIX)」等を参考にして下さい。

補足

 Ubuntu(8.10、9.04)Desktop上で、「db2setup」コマンドを使用したインストールを行う場合、中身が何もないセットアップ画面が表示され、インストールを続行できない不具合が発生する場合があります。対処方法は次のとおりです。

  • db2setupコマンド実行前に「視覚効果」を「効果なし」に変更

    メニューバーから[システム]-[設定]-[外観の設定]を選択し、[視覚効果]タブ内の「効果なし」を選択する。

 筆者の環境では上記対処後、db2setupコマンドを実行した場合、セットアップ画面内の文字が化けて表示されたので、「LANG=C」も設定して実行しました。また上記の対処はインストール時の一時的な対処で構いません。

db2setup 実行例
$ sudo LANG=C ./db2setup

リモート・インスタンスの登録

 ゲストOS上のDB2インスタンス情報をノードとしてカタログ(登録)する必要があります。IBM Data Server Clientのインストール課程で作成されるユーザー(db2inst1)でカタログ操作を行います。書式は次のとおりです。

db2 catalog tcpip node ノード名 remote [サーバー名|サーバーアドレス] server インスタンスのポート番号
実行例
$ su - db2inst1
$ db2 catalog tcpip node u904sv remote 192.168.1.5 server 50000

リモート・データベースの登録

 ゲストOS上のDB2データベース情報をカタログ(登録)する必要があります。書式は次のとおりです。

db2 catalog database データベース名 at node 上記で登録したノード名
実行例
$ su - db2inst1
$ db2 catalog database testdata at node u904sv
接続確認

 db2コマンドを使用した接続確認が可能です。書式は次のとおりです。

db2 connect to 上記で登録したデータベース名 user ユーザー名 using パスワード
実行例
$ su - db2inst1
$ db2 connect to testdata user sta using password

   データベース接続情報

 データベース・サーバー                                   = DB2/LINUX 9.5.2
 SQL 許可 ID                                             = STA
 ローカル・データベース別名                                = TESTDATA

db2cli.iniの設定

 ODBCドライバが参照するデータベース情報を「/home/db2inst1/sqllib/cfg/db2cli.ini」に設定します。

db2cli.ini 設定例
...
[TestData_DB2]
dbalias=testdata
CurrentSchema=EXAMPLE_SCM
...

unixODBC

 unixODBCを導入すると、「libodbc.so.1」(ODBCドライバマネジャ)が「/usr/lib」にインストールされます。「System.Data.Odbc」はこのライブラリを通してODBCデータソースにアクセスすることになります。

 「System.Data.Odbc」ではP/Invokeを使用して、ODBCドライバマネジャを呼び出している訳ですが、「/path/to/mono/etc/mono/config」(本稿では「/opt/mono/2.4/etc/mono/config」)で定義しているインポートライブラリの設定を修正する必要があります。

config 修正例
...
<dllmap dll="i:odbc32.dll" target="libodbc.so.1" os="!windows"/>
...

 また、DB2 CLI/ODBCドライバの定義を、DBアクセスを実行するユーザーの「~/.odbc.ini」(本稿では「/home/sta/.odbc.ini」)に設定します。

~/.odbc.ini 設定例
[TestData_DB2]
Description = For DB2 Database TestData
Driver      = /home/db2inst1/sqllib/lib/libdb2.so
接続確認

 unixODBCに含まれるisqlコマンドを使用した接続確認が可能です。書式は次のとおりです。

isql データソース名 ユーザー名 パスワード
実行例
$ isql TestData_DB2 sta password
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL> select * from products
+------------+--------------------------+----------+-----------------------------+
| PRODUCTID  | PRODUCTNAME              | PRICE    | PRODUCTDESCRIPTION          |
+------------+--------------------------+----------+-----------------------------+
| 0          | DB2                      |          | DB2 Express-C 9.5.2         |
| 1          | Clamp                    | 12.48    | Workbench clamp             |
| 50         | Flat Head Screwdriver    | 3.17     | Flat head                   |
| 75         | Tire Bar                 |          | Tool for changing tires.    |
| 3000       | 3mm Bracket              | 0.52     |                             |
+------------+--------------------------+----------+-----------------------------+
SQLRowCount returns -1
5 rows fetched
SQL> quit

次のページ
DBアクセス

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
MonoでDBMS用データプロバイダを使う連載記事一覧

もっと読む

この記事の著者

sta(エステーエー)

風来坊blog:sta.blockhead

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/3975 2009/08/28 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング