C++からADOを使う

C++からADOを使う必要が出てきました。ADOとは"Active Data Object"の略です(多分。ActiveXではなかったような……)。マイクロソフトが提供する汎用データアクセスエンジンで、データベースなどにアクセスする場合に「VBでは」良く使われます。大変良く出来たインターフェイスだとみはえるは思います(ADO.NETの方がわかりやすいですけどね)

データベースにアクセスしたい場合、VBではADOを含むCOMを参照設定に追加するだけでインターフェイスが全て用意され、かつVARIANT型*1のおかげでDB内の情報をほとんど苦労なしに取得する事が出来ます。

当然C++にはそんな事はできません。

まずインターフェイスをバイナリから取り込む機能がありません。"#import"という特別なディレクティブを使って、COMインターフェイスを取得します。VARIANT型なんて便利な物もありません。_variant_tというけったいな名称の型を駆使してデータベースにアクセスします。VBと同じ意味のコードを書くのに、3倍くらいのステップ数を要します。どうにかしてくれ!

*1:実行時に型を識別し、任意型を格納する事の出来る、COM特有の型。原理としては主要型にIDが振ってあって、そのIDと実体をペアで保存し、必要に応じてキャストメソッドが呼ばれて任意型に変換して返すという単純な物。しかしC++ではたかだかこれくらいの事も簡単には出来ない(まあ、別にできなくても困らないような気はする)