【A6】Delphi/C++Builderテクニカルセッション

RAD Studio×DBX4によるデータベース接続
キムラデービー(http://kimuradb.com)代表
Firebird日本ユーザー会理事長
木村明治(きむらめいじ)

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

1アジェンダ• データベースアクセス概略• DBX4• 概略• 実例• Unicodeアプリケーション• InterBase/Firebirdの例• MySQLの例• デモ＆メモ、注意点
本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

2

1

データベースアクセス概略

3

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

データベースアクセス概略(BDS2007以前)• Borlandのデータベースアクセス

Paradox
dBase

• BDE
• IBXBDE• dbExpress

RDBMS(旧)• BDPBDPKylix
DelphiC++BuilderdbExpress

EntPro各種RDBMS
MySQL

IBX
InterBase
本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

42

データベースアクセス概略(BDS2007)• Borlandのデータベースアクセス

Paradox
dBase

• BDE
• IBX

BDE

• dbExpress

RDBMS(旧)

• BDP

Kylix
DelphiC++Builder

BDP
DBX4(dbExpress4)

Ent
Pro

各種RDBMSMySQL

IBXInterBase
本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

5

DBX4概略本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

63

DBX4
• Delphi 2007で登場• Unicode対応(InterBaseとOracle, MySQL)• Object Pascalで書かれたドライバ• Win32でも、.NETでも使える• BDPとDBXの融合• dbExpressからならほとんど変更なしで使える本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

7DBX4• その他にも利点あり。
• ツールが作成できる (Data Explorers 等)• アプリケーションでトレースや、コネクションプーリングが可能• Unit Testが書ける

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

84

TDBXアーキテクチャ
アプリケーション
DBX VCLADODBXBridgeプロバイダ

DBXCommon(TDBXフレームワーク)
DBX Dynalink
ドライバ
動的リンク

DBXExports
DbxAdapter
ドライバ
DBX4
ドライバ
DBX3
ドライバ

DBX リモート
ドライバ

DBX <Direct>
ドライバ

リモート

継承

DBX.Server
TDBX ADO.NET
ドライバ ドライバ

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

Delphi

DBX ADOブ
リッジドライバ
ブリッジC#又はDelphi
ネイティブマネッジド
ドライバ
ドライバ

ADO.NetProviders

注: RAD Studio 付属ドキュメントを基に作成。

9

DBX4実例

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

105

INIファイルの設定(1) 新機能• [DBXPoolConnection]• DriverName=DBXPool• MaxConnections=16• MinConnections=0• ConnectTimeout=0• [DBXTraceConnection]• DriverName=DBXTrace• ;TraceFile=c:¥temp¥dbxtrace.txt• ;TraceFlags=PARAMETER;ERROR;EXECUTE;COMMAND;CONNECT;TRANSACT;BLOB;MISC;VENDOR;READER;DRIVER_LOAD;METADATA• ;TraceDriver=true• TraceFlags=NONE

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

11

DBXPoolConnection• コネクションプーリング• DB処理のかなり大きな部分をコネクションの生成・破棄に使う。
• だが「つなぎっぱなし」だと、接続資源が心配。
• 数を決めて、その数は「つなぎっぱなし」「再利用」するのがコネクションプーリング• 各ドライバのエントリに以下の行を追加する。
• DelegateConnection=DBXPoolConnection

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

126

DBXTraceConnection• 接続のログを取る。
• 各ドライバのエントリで以下の行があるので;を取り除いて有効化する• ;DelegateConnection=DBXTraceConnection

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

13同時使用• [DBXPoolConnection]• DriverName=DBXPool• MaxConnections=16• MinConnections=0• ConnectTimeout=0• DelegateConnection=DBXTraceConnection ←この行を追加

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

147

INIファイルの設定(2) InterBase• [IBConnection]• ;DelegateConnection=DBXTraceConnection• DriverName=Interbase• Database=database.gdb• RoleName=RoleName• User_Name=sysdba• Password=masterkey• ServerCharSet=• SQLDialect=3• ErrorResourceFile=• LocaleCode=0000• BlobSize=-1• CommitRetain=False• WaitOnLocks=True• Interbase TransIsolation=ReadCommited• Trim Char=False
本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

15

INIファイルの設定(3) MySQL• [MySQLConnection]• DriverName=MySQL• HostName=localhost• Database=world• User_Name=root• Password=• BlobSize=-1• ErrorResourceFile=• LocaleCode=0000• Compressed=False• Encrypted=False

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

168

InterBase接続図

参照: http://support.codegear.com/jp/article/35485
17

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

MySQL 接続図Java
CodeGearC#
アプリ アプリ 開発ツール

Web
アプリ

ネイティブ
アプリケーション

Conne Connect
ctor/J or/Net

Perl,PHP,
PythonRuby

Connector/
ODBC,
C/C++

DBX4

C言語ライブラリlibmysql.dll
ワイヤ・プロトコルMySQL
本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

189

DBX4 デモ＆メモ

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

19

Unicodeアプリケーション

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

2010

今時のUnicode対応• Vista登場より前のUnicode対応• 主にUNICODE_FSSレベルの対応• Max 3-byte• Vista登場以降のUnicode対応• JIS X 0213対応• サロゲートペアへの考慮も必要

21

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

サロゲートペア
上位サロゲート

0x000065536文字0xD8002048文字
0xDFFF

0xFFFF

サロゲート領域

0x00020000

1024文字

0xDBFF×1024文字1048576
文字

0xD8000xDC000xDFFF下位サロゲート

0x0010FFFF

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

22

11

JIS X 0208とJIS X 0213
0x000065536文字0xFFFF• この16ビット×１で表現できる文字セットを
BMP(Basic Multilingual Plane)と呼ぶ。
• JIS X 0208はこれでOK。
• JIS X 0213は、文字の一部がサロゲートペアを使っている。

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

23

JIS X 0213を考慮する理由• 2006～2007年Vistaがリリースされた。
• IMEデフォルトでJIS X 0213が入力可能。
• IME設定で入力を制限することもできる。

• 2004年9月の戸籍法施行規則の改定。
• 追加された人名用漢字488文字。このうちの107文字がJIS X 0208に含まれていない。
• 幸いなことに、この107文字はBMP範囲内。

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

2412

具体的な対応策• 対策案１: JIS X 0208に限定する。
• 対策案2: JIS X 0213のうち、サロゲートペア文字のみ制限する。
• 対策案３: JIS X 0213を全て受け入れる。

25

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

それぞれのレイヤでUnicode対応が必要
UIコンポーネント

TMS Unicode Component
Pack

http://www.tmssoftware.com/tmsuni.htm

クライアントミドルウエアDBX4(Delphi 2007 for Wind32)
またはFIBPlus(http://devrace.com)

データベースUnicode対応データベース

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

26

13

TMS Unicode Component Pack
• 含まれるコンポーネント• Standard• Additional

既存コンポーネントにTntを付加した名で提供↓例) TEdit → TTntEdit• Win32• Data Controls• System• Dialogs• Others, Delphi IDE Enhancements
27

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

Data Controls• TTntDBGrid• TTntDBText

サンプルで使ってみる• TTntDBEdit• TTntDBComboBox• TTntDBCheckBox• TTntDBRichEdit• TTntDBLookupComboBox• TTntDBLookupListBox
本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

28

14

InterBaseの例• InterBase 7.xまではUNICODE_FSSをサポート• InterBase 2007からはUTF8もサポート

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

29

Firebird 1.5/2.0の例• Firebird 1.5まではUNICODE_FSSをサポート。
• Firebird 2.0からはUTF8もサポート。

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

3015

MySQLの例• 新しいMySQLのドライバはdbxmys30.dll• このドライバがUnicodeをサポート• このドライバはMySQL 4.1, 5.0のlibmysql.dllのみサポート• 4.0とそれ以前のlibmysql.dllはサポートしない• その場合は古いドライバdbxmysA30.dllを使う• 現状のUnicodeサポート(UTF8)は,InterBase/FirebirdのUNICODE_FSS相当。

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

31

Unicodeアプリ デモ
TTntDBEdit
TTntDBGrid

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

32

16

Unicodeアプリデモ 動作環境
UIコンポーネント
クライアントTMS Unicode Component Pack

http://www.tmssoftware.com/tmsuni.htm

Delphi 2007 for Win 32

ミドルウエアDBX4

データベースInterBase 2007

Windows XP SP2
33

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

Unicodeアプリデモ 動作環境
UIコンポーネント
クライアントミドルウエア
データベースWindows XP SP2
本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

Windows XPでJIS2004に対応するなら、いずれにせよ「対応するフォント」を導入しなければ表示できない！
↓Windows XP 向けJIS2004 対応
MS ゴシック & MS 明朝フォント
パッケージについて
http://www.microsoft.com/japan/
windows/products/windowsvista/
jp_font/jis04/default.mspx
34

17

Unicodeアプリデモ 動作環境
UIコンポーネント
クライアントミドルウエアUnicode対応ということで、
UNICODE_FSSまたはUTF8でデータベースを作成する。
↓SQL> create database "c:¥db.gdb" user
'SYSDBA' password 'masterkey' default
character set utf8;

データベースWindows XP SP235

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

Unicodeアプリデモ 動作環境
UIコンポーネント
クライアントミドルウエアサーバーのキャラクタセットをUnicodeにしたので、その設定をDBX4側でも設定する。
↓TSQLConnectionの接続パラメー
タとして、ServerCharSet=UTF8(もしくはUNICODE_FSS)で指定する。

データベースWindows XP SP2
本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

3618

Unicodeアプリデモ 動作環境
UIコンポーネント
クライアントミドルウエア

デフォルトで使われるフォントセットでは、JIS2004がうまく表示できない。そのため、メイリオで置換された以下のフォントをデフォルトにする。
↓MS UI Gothic

データベースWindows XP SP2
37

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

Unicodeアプリデモ JIS2004文字の入力•最新のMS-IMEやATOKでは、入力出来るようですが、手元にないので、ブラウザで出力して、コピペします。
•左記のようなtest.htmlを作成して、ブラウザから読み込みます。

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

3819

Unicodeアプリデモ JIS2004文字の表示•「あ」• JIS0208文字•「･」• JIS0213文字。サロゲートペアなし。

•最後の文字• JIS0213文字。サロゲート
ペアあり。

•これをコピペでアプリへ。

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

39

参考ドキュメント・URL• [1] RAD Studio Ducument• CodeGear/RAD Studio/5.0/source/database/docs/• Delphi2007Win32/WhatsNew.htm• dbx4/dbx4.htm• [2] Delphi DBX4 programming - Felix John COLIBRI.
• http://www.felixcolibri.com/papers/db/delphi_dbx4_programming/delphi_dbx
4_programming.html• フェリックスさんはDelphi, IntreBaseの良い記事を多く執筆。

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

40

20