Delphi / C++Builderユーザーのためのオープンソースコンポーネントを使ったDBアクセス
キムラデービー(http://kimuradb.com)
代表 木村明治(KIMURA, Meiji)
Info@kimuradb.com

著作権者の許可なく、本文書の一部または全部の転載を禁止します。

第２回 ボーランド デベロッパー キャンプ木村明治プロフィール
 [1991]日立中国ソフトウエア(現: 日立中国ソリューションズ)入社。日立ソフトウエア工場(現: 日立ソフトウエア事業部)で、日本初の並列RDBであるHiRDBの開発に関わる。
 [1996]ジャストシステム入社。自社DB, Oracle, Microsoft DB関連(SQLServer, Access, DAO, ODBC), InterBase/Firebirdを使った開発にかかわる。
主な製品開発は次のとおり。

1. デスクトップデータベース五郎(本体、各種ゲートウェイ)開発
2. Megavi TV/DV開発プロマネ [2001]本業と並行しInterBase/Firebird関連ドキュメント翻訳・公開をはじめる。
 [2003]サイボウズ株式会社入社。サイボウズガルーン1.5のPM、サイボウズOffice6のPMを担当。
 [2005]キムラデービー開業。 「DBを使った開発において、心理的・物理的負担を下げる」を合い言葉に、自営で活動中。
 [2006]2006年度Firebird日本ユーザー会理事長

2
著作権者の許可なく、本文書の一部または全部の転載を禁止します。

1第２回 ボーランド デベロッパー キャンプサマリー
 本ドキュメントの目的
 データベースアクセス概略
 サードパーティ製品とオープンソースコンポーネント
 ZeosLib紹介
 ZeosLibコンポーネント
 ZeosLib使用例・デモ C/C++アクセスライブラリOpenDBX紹介
 参考ドキュメント・URL

3
著作権者の許可なく、本文書の一部または全部の転載を禁止します。

第２回 ボーランド デベロッパー キャンプ

本ドキュメントの目的 ここらへんを知ってもらう データベースへのアクセス手法って？
 Borland純正、サードパーティ、オープンソース、それぞれのコンポーネン
トにはどんなものがあるの？
 なんでオープンソースコンポーネント使うの？

ここらを説明 それぞれにあったコンポーネントを知ってもらう、使ってもらう。

4
著作権者の許可なく、本文書の一部または全部の転載を禁止します。

2第２回 ボーランド デベロッパー キャンプ

データベースアクセス概略
Borlandのデータベースアクセス
 BDE
 IBX
 dbExpress
 BDP

Kylix
DelphiC++Builder

ParadoxdBase
BDE

RDBMS(旧)BDP
dbExpress

Ｅｎｔ
Ｐｒｏ

各種RDBMSMySQL

IBXInterBase5
著作権者の許可なく、本文書の一部または全部の転載を禁止します。

第２回 ボーランド デベロッパー キャンプ

BDE(Borland Database Engine) BDE: 古くからあるアクセス手法
 SQL Linkドライバが必要 ベンダーのDBドライバからビルドが必要 ベンダーのDBリリースにキャッチアップするのは困難
 SQL Linkドライバはもう拡張されない。Paradox, dBaseアクセス
用に残されている。(InterBaseアクセスもOK)
 http://bdn.borland.com/article/0,1410,28688,00.html
 既存のBDEを使ったアプリケーションは今後どうすればよい？
 Kylixでは未対応。dbExpressを使う。
6
著作権者の許可なく、本文書の一部または全部の転載を禁止します。

3第２回 ボーランド デベロッパー キャンプIBX IBX: InterBaseと親和性が高いアクセス手法
 InterBaseに特化するならよい。
 InterBaseから分岐したオープンソースDB Firebird今後のリリースには未対応。

7
著作権者の許可なく、本文書の一部または全部の転載を禁止します。

第２回 ボーランド デベロッパー キャンプ

dbExpress, BDP(Borland Data Provider) dbExpress: 今後のBorland製品標準のアクセス手法
 クロスプラットフォームサポート(Delphi, C++Builder, and Kylix)
 ドライバの開発がより簡単に
 Professional版でアクセスできるのはInterBase, MySQL｡
 商用御三家(Oracle, IBM DB2, MS SQL Server)にアクセスするためにはEnterprise版以上が必要。
 そのため気軽にアクセス、というわけにはいかない。

 BDP
 C#Builder1.0やDelphi8 for .NETから提供される。
 ADO.NETのデータプロバイダと互換性を持つI/F。

8
著作権者の許可なく、本文書の一部または全部の転載を禁止します。

4

第２回 ボーランド デベロッパー キャンプ

サードパーティ製品とオープンソースコンポーネント
 BDEからの移行
 dbExpress
 長所
 Borland製品のメインストリーム
 短所
 IntreBase, MySQL以外のアクセスにはEnterprise版以上が必要。
 Firebirdの今後の版には未対応→サードパーティドライバやOpenDBXあり。

 IBObject: サードパーティ製品。Firebird/InterBaseに最適化。
 ZeosLib: オープンソースコンポーネント。各DBにネイティブ接続。

 IBXからの移行
 FIBPlus: サードパーティ製品。Firebird/IntreBaseに最適化。
9
著作権者の許可なく、本文書の一部または全部の転載を禁止します。

第２回 ボーランド デベロッパー キャンプ

ZeorLib紹介
オープンソースコンポーネント
ライセンスはLGPL
最新安定バージョンは6.1.5
各バージョン

構成コンポーネント
 TZConnection
 TZTable
 TZQuery TZReadOnlyQuery TZStoredProc

 6.1.5-stable(2004/03)
 C++Builder4～6
 Delphi4～7 Kylix1～3

 TZUpdateSQL TZSQLProcessor
 TZSQLMonitor
 TZSQLMetadata 6.5.1-alpha(2005/09)
 Delphi9(2005), lazarus

 6.5.1-TestingBranch Delphi10(2006)10
著作権者の許可なく、本文書の一部または全部の転載を禁止します。

5

第２回 ボーランド デベロッパー キャンプ

ZeosLibコンポーネント

TZTableDBTZConnection

TZQuery

DataAccess

Data
Controls

TZReadOnlyQuery11
著作権者の許可なく、本文書の一部または全部の転載を禁止します。

第２回 ボーランド デベロッパー キャンプ

ZeosLibインストール
 Delphi 7以前であれば、ZeosLib 6.1.5
 Delphi 9(2005)以降であれば、ZeosLib 6.5.1
 ダウンロードして解凍し、Package内の開発環境バージョンにあったサブディレクトリ下のZeosDboを開く。

 そして、コンポーネントを以下の順番でインストールする。
 Zcore.bpl
 ZParseSQL.bpl
 Zplain.bpl
 ZDbc.bpl
 Zcomponent.bpl
12
著作権者の許可なく、本文書の一部または全部の転載を禁止します。

6

第２回 ボーランド デベロッパー キャンプ

ZeosLib使用例(1) TZConnection
 BDEのTDatabaseにあたるもので、トランザクションを取り扱う。
 TZQuery BDEのTQueryにあたるもの。
 TZReadOnlyQuery TZQueryでリザルトセットがリードオンリーになる。TZUpdateSQLにアサインできない。
 TZUpdateSQL BDEのTUpdateSQLにあたるもの。

13
著作権者の許可なく、本文書の一部または全部の転載を禁止します。

第２回 ボーランド デベロッパー キャンプ

ZeosLib使用例(2) TZTable
 BDEのTTableにあたるもの。オープン時に全データをクライアントに持ってくるため、C/S環境では、小さなテーブルしか指定しないようにする。
 SELECT * FROM yourtableのようなもの。

 TZStoredProc
 BDEのTStoredProcにあたるもの。
 違いは、Prepareがいるか、いらないか。

14
著作権者の許可なく、本文書の一部または全部の転載を禁止します。

7

第２回 ボーランド デベロッパー キャンプ

ZeosLib使用例(3) TZSQLProcessor
 LoadFromStream()または、LoadFromFile()メソッド呼び出し
によりロードされたSQLスクリプトを処理するコンポーネント。

 TZSQLMonitor
 ZEOSデータベースコンポーネントのアクションやイベントのログを取得する。
 取得先はファイルやTmemoオブジェクト

 TZSQLMetaData メタデータにアクセスする。
15
著作権者の許可なく、本文書の一部または全部の転載を禁止します。

第２回 ボーランド デベロッパー キャンプ

ZeosLibデモ 実際にZeosLibを使ったデモンストレーションを行います。

16
著作権者の許可なく、本文書の一部または全部の転載を禁止します。

8

第２回 ボーランド デベロッパー キャンプ

C/C++アクセスライブラリOpenDBX紹介
 C++Builderでも、もちろんZeosLib使えます。
 現状用意されているパッケージはバージョン６まで。

 Data AccessやData Controlsを使わないで、単純にC APIを使うだ
けならOpenDBXもOK。

 dbExpress用のOpenDBXとは同名だが違うライブラリ。
 http://www.linuxnetworks.de/opendbx/

 InterBase/Firebird対応だけであれば、IBPPというクラスライブラリがある。(無料)

 http://www.ibpp.org/

 クロスデータベース対応ならSQLAPI++が選択肢にあがる。(有料) http://www.sqlapi.com
17
著作権者の許可なく、本文書の一部または全部の転載を禁止します。

第２回 ボーランド デベロッパー キャンプ

参考ドキュメント・URL
 オープンソース
 ZeosLib http://sourceforge.net/projects/zeoslib/
 http://zeos.firmos.at/ http://users.telenet.be/mdaems/

 OpenDBX
 http://sourceforge.net/projects/opendbx/

 サードパーティ製品
 IBObject
 http://www.ibobjects.com/

 FIBPlus http://www.devrace.com/en/fibplus/
18
著作権者の許可なく、本文書の一部または全部の転載を禁止します。

9

Thank you

著作権者の許可なく、本文書の一部または全部の転載を禁止します。

10