12

sqlアプリケーション内でデータベースに接続して使用したいC++。私のアプリケーションは、継続的に成長し、異なるプロセス間で共有する必要があるいくつかのデータ(テーブルの形式で保存できます)を保存する必要があるため、データベースが必要です。sql初心者におすすめで、複数のライターが必要なため、選択しましたSQLite

検索すると、次のオプションが見つかりました(これらのオプションには、ORMS、API、およびドライバーが含まれる場合があり、これらのオプションの一部は含まれてはならない場合もあります-つまり、そのオプションの理解が完全に間違っていました。修正してください)

  1. SQLAPI++ -ソース(公式サイトも)
  2. MySQL Connector/C++ (そこにもいくつかの利点があります。) -ソース
  3. MySQL++
  4. CppDB
  5. SOCI
  6. Libodbc++ (ODBC 上で実行)
  7. データベース テンプレート ライブラリ-ソース
  8. Oracle テンプレート ライブラリ
  9. ODBC でのsql.h の使用: ODBC の
    選択: MYSQL コネクタ/ODBC b. EasySoft ODBC c. 他の何人か


これらの選択肢を見つけるのに役立ついくつかの SO のスレッド: T1T2T3T4

私の質問:

  1. どのオプションをいつ使用しますか? これらのオプションの長所/短所は? ( 、、 、基づいている可能性があります。)performancelearning curvecompatibilitypresent supportこれらのオプションから選択するためのベンチマークまたは提案はありますか。(私はこれらのオプションについて本当に知らないので、これらのオプションのいくつかをグループ化して機能させる必要があるかもしれません。つまり、オプションのいくつかは相互に依存している可能性があります。)
  2. これらのオプションに必要なツール セットは何ですか。
  3. ODBC依存ライブラリを使用している場合は、どれODBCを使用するか。(上記のリンク「いくつかのその他」に記載されている多くの ODBC があります。)
  4. それらを学ぶためのソース。(一部のオプションについては、すでにソースを言及しています。)
  5. 私が完全に見逃したものは他にありますか?
  6. アプリケーションが にある場合はどうなりCますか? (これは、を使用する C でアプリケーションを開発する必要があるためですsql)

私は求めすぎたことを知っています。おすすめのパーツを教えてください。

4

1 に答える 1

2

考慮する必要がある主な質問は、アプリケーションとデータベース側の両方で、どの程度クロスプラットフォームである必要があるかということです。

複数のリレーショナル データベース サーバー (たとえば、Oracle と MySQL または Firebird) に接続する必要がある可能性がある場合は、ODBC を使用する方がよいでしょう (価値があるため、UnixODBC を使用します)。私は SQLAPI++ や SOCI を使用したことがないので、これらが UnixODBC とどのように比較されるかについてはあまり言えません。

UnixODBC を使用すると、展開の選択肢が非常に多くなります。多くの場合、実際には UnixODBC をまったくインストールせず、代わりにアプリケーションを ODBC ドライバーに直接接続します (これは、特定のインスタンスが単一のデータベースとのみ通信する場合に役立ち、インストールする必要があるものを最小限に抑えます)。また、C++ と C の両方で動作します。

UnixODBC -> MS SQL Server では、FreeTDS ドライバーを使用します。最初はこれを使って製品化することを心配していましたが、実際にはワイヤ プロトコルが完全に指定されているため、これはリバース エンジニアリングによるハック以上のものであることがわかりました (また、FreeTDS を作成している同じ人が商用の EasySoft ドライバーも行っていると思います)。MySQL は、UnixODBC 互換のドライバー自体を提供します。

UnixODBC -> Oracle は試していません。既に直接の OCI (インスタント クライアント) インターフェイスを作成しており、常にこれを使用してきたからです。

UnixODBC は、OCI のようなワイヤ プロトコル アプローチを使用する場合よりもわずかに遅くなりますが、その差は心配するほど大きくはありません。OCI を使用する理由は、Oracle が Linux/AIX/Solaris プラットフォーム用に無料で提供しているからですが、これらのプラットフォーム用の ODBC オラクル ドライバーは見つかりませんでした。

于 2012-07-18T11:36:38.607 に答える