2012-01-09 14 views
7

複数のデータベースに接続できるはずのアプリケーションを作成したいと考えています(これは起動時にパラメータによって設定されます)。アプリケーションはデータベースエンジンごとに異なるクエリを持ちますが、これは問題ではありません。C/C++用のマルチデータベースライブラリの代替手段は何ですか?

問題は、別のデータベースエンジンに接続できるようにすることです。 JavaにはJDBCがあり、PerlにはDBIがあります。 C++には何がありますか?

さらに厳しいライセンス(商用版)のデータベースドライバを使用したくありません。 GPLは可能かもしれませんが、私はそれを避けたいと思います。

+0

"ベスト"キーワードのため閉鎖される場合があります。それをコミュニティのwikiにすることを検討してください。 –

+0

コメントありがとう、私は質問を変更しました。 –

+0

SOCI http://soci.sourceforge.net/ - 議論の終わり。 –

答えて

1

事実上、存在するすべてのデータベースエンジンはODBCインターフェイスを提供します。私はJDBCが実際にはODBCのクローンだと思う。

が何をしたい、そして、データベースリソースはたとえばなど、例外の場合に解放されていることを確認するRAIIを実装するC++のODBC APIのラッパー、次のとおりです。http://simpledb.sourceforge.net/

0

古いOLE接続があります。 OLEを使用すると、適切なドライバがインストールされている場合は、フラットファイル、Oracle、SQL、またはMySqlデータベースに接続できます。

0

ODBCが最も互換性があり、最も低いレベルです。 OLE DBはより高いレベルで扱いやすくなっています。したがって、すべてのDBシステムでOLE DBプロバイダが見つかった場合は、それを実行する方法です。そうしないと、事実上すべてのDBシステムがそれをサポートするので、ODBCが選択肢です。

編集:このリンクを表示:http://blogs.msdn.com/b/sqlnativeclient/archive/2011/08/29/microsoft-is-aligning-with-odbc-for-native-relational-data-access.aspxこれは、ODBCを唯一の適切な選択肢にします。 :)

0

C++オブジェクトリレーショナルマッピングシステムODB CodesynthesisはGPLバージョン2ソフトウェアで使用することができる会社から。ここで

http://codesynthesis.com/products/odb/

彼らはデータベースに接続する代わりに、ODBCのネイティブC APIを使用することを選択した理由を、彼らは説明ブログのエントリです。

http://codesynthesis.com/~boris/blog/2011/12/09/oci-mingw/

スピードが理由の一つでした。