2011年10月19日水曜日

C++Builder 4 / 6 で MySQL を直に操る ~その1 設定編~

C++Builder 4 / 6 で MySQL を直に操る ~その1 設定編~



今更だが、

C++ で MySQL API でガリガリやっていた頃の覚え書きを載せておく。

C++ と言っても VC++ ではなく、Borland C++Builder 4/6 である。

ODBC は使わず、libmysql.lib を直接参照して、C API でコーディングする。



DLL / LIB 辺りが VC++ と全く違うところだが、コーディングは殆ど同じにできるので、移植可能だが「コードまんま」は到底無理なのでやめましょう。

そんなこんなもあって、VCL はなるべく使わないようにしているが、ところどころ出現するかもなので気をつけましょう。



以上をよく理解してから突入してください。



MySQL はフリーのデータベースにしてはあまりにも出来すぎだ。

「ストレージエンジン」という考え方が既にクールなんだが、そのストレージエンジンも、MyISAM だけならまだしも、トランザクション機能が付いた InnoDB の出現はまさに奇跡と言っても過言ではないかもしれない。

この2つは、「お互いに無いものを持っている」とよく言われるが、その通りだと思う。

どちらのストレージエンジンが良いかという質問は、ぶっきらぼうに「フェラーリとベンツ、どちらが良いですか?」と質問するのと同じくらいベタな質問だということにいい加減気付くべきだと思う。

ケースバイケースの最たるものだ。

この話はまた別の機会に、または詳細なベンチマークを行っているサイトに行って見極めるべし。



私は、Borland C++Builder 1 の頃からのユーザだが、Delphi のアメリカでの衝撃的なデビューはよく知らないが、C++Builder 1 を初めて使ったときの衝撃は今でもよく覚えている。

Borland の初期の Delphi、C++Builder 1 という名器を生んだ人達の多くが、Microsoft に移籍し、.NET や C# が生まれた。

という話を聞くと、何だか鼻高々な気分になったものだ。



それにもかかわらず、C++Builder の VC++ に対するアドバンテージは限りなく「0」に近い...

いや、厳密に言うと、.NET が出てくるまでは結構な位置にあった。

ということは、VC++ に負けたというより、C# や VB.NET に負けたといった方が良いのかもしれない。



.NET や C# を生んだ旧 Borland の人達は「ざまぁみろ!」と言った感じかもしれない。



現に私は、C++Builder は「6」を最後に使っていない。

今は、ご多分に漏れず UNICODE な「2010」や「XE」なんだが、「2010」を持っているがイマイチな使い勝手でして...

使い勝手の悪い一例を挙げると、「コード補完機能」のレスポンスの悪さたるや半端ない! (まぁ伝統的なんだが)

Visual Studio 特に VB.NET 2010 のコード補完機能を一度味わってしまうと、Eclipse でさえ不満に感じるが、Eclipse はフリーなので何とでも言い訳できる。

なので私は昔から Builder のコード補完機能は使わないようにしている。

たかが「コード補完機能」だが、デスクトップアプリケーション程度のツールの生産性を問題にするとき、両方を使ったことのある人ならおそらく10人中10人が VB.NET の方が生産性は高いと答えるだろう。



話が長くなってしまった。

今回は、インストールと C++Builder 用の LIB ファイルの作成とプロジェクト作成方法までを。



一応環境を。



OS:     Windows XP Pro (sp3) / 7 Ultimate
C++Builder:     4 / 6
MySQL:     5.1.x


Builder だけ古風な感じになっているが、今回 Win7 と MySQL 5.1.x で改めて確認したため。



なお、以下のパス文字列内にある $(MySQL) は MySQL をインストールしたルートフォルダ、

$(BCB) は C++Builder がインストールされているルートフォルダを意味する。



また、ファイアウォールソフトが常駐している場合は、念のため以下を検討すること。

ポート単位での例外設定が可能なら、TCP の 3306 (MySQL Server のポート番号で変更した場合はその番号) を送受信許可に設定する。



MySQL のインストール


まずは MySQL のインストールから

MySQL はバイナリでインストールする

・ essential 版は、Typical ではなく Custom を選択して、include ファイルもインストールする。

・ zip 版は、include ファイルを抽出する。



※なお、include ファイルなどのライブラリは、それだけで提供されているが、バージョンは合わせた方が良いので、出来るだけバラバラにインストールするのは避け、バイナリのパッケージ版でインストールする。



libmysql.lib の作成


libmysql.lib はデフォルトで VC 用に最適化されているため、implib.exe を使用して Builder 用に変換する。

・ コマンドプロンプトで以下を入力

   implib "[適当なディレクトリ]\libmysql.lib" "$(MySQL)\bin\libmysql.dll"

  上記を実行して、Builder 用の libmysql.lib を作成する。



・ 上記で作成した libmysql.lib を $(BCB)\lib へコピーする



※作成先を $(MySQL)\lib にしても良いが、その場合は当然上書きになるので注意。



プロジェクトを作成する前に


C++Builder の [プロジェクト] - [オプション] - [ディレクトリ/条件] タブで、

・ インクルードパスに、$(MySQL)\include を追加 (ヘッダファイルリンクのため)

・ インクルードパスに、$(MySQL)\bin を追加 (libmysql.dll をリンクするため (以下の※を参照) )

・ ライブラリパスに、$(MySQL)\lib を追加しない! (Builder 用に変換した libmysql.lib を $(BCB)\lib にコピーしているため)



※ libmysql.dll はアプリケーションパスに置いても良いが (その場合 $(MySQL)\bin を追加しなくても良い)、上記の設定をデフォルトにしておけば、いつでも MySQL アプリケーションを作成できる。



プロジェクトの作成


C++Builder で新規プロジェクトを作成したら、

・ [プロジェクト] - [プロジェクトに追加] で $(BCB)\lib\libmysql.lib を追加する



以上で、C++Builder プロジェクトが作成される。

実際のコーディングは次回に






0 件のコメント:

コメントを投稿