MySQL 5.1 リファレンスマニュアル :: 24 MySQL コネクタ :: 24.1 MySQL Connector/ODBC :: 24.1.6 Connector/ODBC に関する注釈とヒント :: 24.1.6.2 Connector/ODBC アプリケーション別情報
« 24.1.6.1 Connector/ODBC 一般機能

24.1.6.3 Connector/ODBC エラーコード と 解決法 : »
Section Navigation      [Toggle]
  • 24.1.6 Connector/ODBC に関する注釈とヒント
  • 24.1.6.1 Connector/ODBC 一般機能
  • 24.1.6.2 Connector/ODBC アプリケーション別情報
  • 24.1.6.3 Connector/ODBC エラーコード と 解決法 :

24.1.6.2. Connector/ODBC アプリケーション別情報

[+/-]

24.1.6.2.1. Connector/ODBC の Microsoft アプリケーションとの使用
24.1.6.2.2. Connector/ODBC の Borland アプリケーションとの使用
24.1.6.2.3. ColdFusion を使った Connector/ODBC の使用
24.1.6.2.4. OpenOffice を使った Connector/ODBC の使用
24.1.6.2.5. Sambar Server を使った Connector/ODBC の使用
24.1.6.2.6. Pervasive Software DataJunction を使った Connector/ODBC の使用
24.1.6.2.7. SunSystems Vision を使った Connector/ODBC の使用

ほとんどのプログラムは Connector/ODBC に対応しますが、以下にリストされているものにはそれぞれに、 Connector/ODBC とそのアプリケーションとの作業を向上拡大するための注釈とアドバイスがあります。

すべてのアプリケーションで、Connector/ODBC ドライバ、ODBC Manager 、およびアプリケーションで使われているライブラリとインターフェイス全部が最新バージョンになっているか確認してください。例えば Windows では、最新バージョンの Microsoft Data Access Components (MDAC) を使うことによって、ODBC との全体的な互換性、そして Connector/ODBC ドライバとの互換性が向上します。

24.1.6.2.1. Connector/ODBC の Microsoft アプリケーションとの使用

[+/-]

24.1.6.2.1.1. Microsoft Access
24.1.6.2.1.2. Microsoft Excel と カラム タイプ
24.1.6.2.1.3. Microsoft Visual Basic
24.1.6.2.1.4. Microsoft Visual InterDev
24.1.6.2.1.5. Visual Objects
24.1.6.2.1.6. Microsoft ADO
24.1.6.2.1.7. Active Server Pages (ASP) との Connector/ODBC の使用
24.1.6.2.1.8. Visual Basic (ADO, DAO and RDO) および ASP を使った Connector/ODBC の使用

Microsoft Office 、Microsoft Access 、そして ASP と Microsoft Visual Studio でサポートされている様々なプログラム言語を含む Microsoft アプリケーションの大多数は、Connector/ODBC との使用がテストで確認済みです。

Connector/ODBC に不具合が発生し、またそのプログラムが OLEDB にも対応する場合は、OLEDB ドライバの使用をお勧めします。

24.1.6.2.1.1. Microsoft Access

Connector/ODBC を通して Microsoft Access と MySQL の融合性を高めたい場合 :

  • すべてのバージョンの Access で、Connector/ODBC Return matching rows オプションを有効にしてください。Access 2.0 では、Simulate ODBC 1.0 オプションも加えて有効にしてください。

  • アップデートしたいすべてのテーブルに、TIMESTAMP カラムを設けてください。ポータビリティを最大にするには、カラム宣言 ( MySQL 4.1 より前のバージョンではサポートされていません ) で長さ指定を使わないでください。

  • Access で使いたい MySQL テーブル個々に基本キーを設置してください。それを行わない場合、新規またはアップデートされた行が #DELETED# と表示される場合があります。

  • DOUBLE 浮動小数点フィールドのみを使用。単精度浮動小数点値と比較する際、Access に不具合が起きるためです。この徴候では通常、新規またはアップデートされた行が #DELETED# と表示される、または行の検出もしくはアップデートができなくなるということがあります。

  • Connector/ODBC を使って BIGINT カラムのあるテーブルへリンクしている場合、結果が #DELETED# と表示されます。この問題を避けるには :

    • データタイプとして、TIMESTAMP にもうひとつダミー カラムを設ける。

    • ODBC DSN Administrator の接続ダイアログで、Change BIGINT columns to INT オプションを選択。

    • Access からテーブル リンクを削除し、また再作成する。

    古い記録がまだ #DELETED# と表示されるが、新しく加えられた、またはアップデートされた記録は正常に表示される。

  • TIMESTAMP カラムを設けた後でも、エラー Another user has changed your data が発生する場合は、次の手段で解決することもあります :

    table データシート ビューを使用しない。代わりに、希望のフィールドでフォームを作成し、その form データシート ビューを使用する。TIMESTAMP カラムの DefaultValue プロパティを、NOW() に設定。後のユーザの混乱を避けるため、TIMESTAMP カラムをビューから隠すとよい。

  • あるケースでは、Access が MySQL には理解不能な SQL 文を発行することがあります。Access のメニューから "Query|SQLSpecific|Pass-Through" を選択すると、これを解決できます。

  • Windows NT では、Access は BLOB カラムを OLE OBJECTS として報告します。代わりに MEMO カラムを希望する場合は、ALTER TABLE で BLOB カラムを TEXT に変更してください。

  • Access は MySQL DATE カラムを、常に正常に処理できるというわけではありません。もし問題がある場合は、カラムを DATETIME に変更してください。

  • Access に BYTE と定義されたカラムがある場合、Access はこれを TINYINT UNSIGNED ではなく TINYINT としてエクスポートしようとします。そのカラムに 127 より大きな値がある場合、これが問題となります。

  • Access に極めて大規模な ( 長い ) テーブルがある場合、それらを開くのに長い時間がかかる場合があります。または、仮想メモリが不足していると、最終的には ODBC Query Failed エラーが発生し、テーブルを開くことができません。この問題に対処するには、次のオプションを選んでください :

    • Return Matching Rows (2)

    • Allow BIG Results (8).

    これらを足した値は 10 ( OPTION=10 ) になります。

Access、ODBC および Connector/ODBC の使用に役立つ外部からの記事や情報 :

  • How to Trap ODBC Login Error Messages in Access 参照。

  • Access ODBC アプリケーションの最適化

    • Optimizing for Client/Server Performance

    • Tips for Converting Applications to Using ODBCDirect

    • Tips for Optimizing Queries on Attached SQL Tables

  • Access や ODBC データソースで使用できるツールのリストに関しては、http://www.mysql.com/portal/software/convertors/ セクションを参照してください。

24.1.6.2.1.2. Microsoft Excel と カラム タイプ

Microsoft Excel へのデータのインポート、特に数値やデータ、タイム値のインポートで問題がある場合は、ワークシート内のセルにデータがインサートされる時、ソース データのカラム タイプでデータ タイプが定義される Excel のバグが原因だと思われます。その結果、Excel がコンテントを誤って識別し、それが計算に使用される時、表示フォーマットとそのデータの双方に影響を及ぼします。

この問題を解消するには、CONCAT() 関数をクエリに使用してください。CONCAT() を使うことで、Excel が値をストリングとして扱うよう仕向け、それによって Excel が埋め込まれた情報を解析し、ほぼ正確に識別するようになります。

しかし、このオプションをもってしてもデータによっては、ソースデータに変化はないにもかかわらず、不正確にフォーマットされることがあります。Excel の Format Cells オプションを使用して、表示された情報のフォーマットを変えてください。

24.1.6.2.1.3. Microsoft Visual Basic

テーブルをアップデートするには、テーブルに基本キーを定義する必要があります。

ADO を使用した Visual Basic は、大きな整数を扱うことができません。つまり、SHOW PROCESSLIST のようなクエリは正常に作動しません。これを解決するには、ODBC 接続ストリングで OPTION=16384 を使用するか、Connector/ODBC 接続スクリーンで Change BIGINT columns to INT オプションを選択します。また、Return matching rows オプションを選択するのもよいでしょう。

24.1.6.2.1.4. Microsoft Visual InterDev

結果に BIGINT がある場合、[Microsoft][ODBC Driver Manager] Driver does not support this parameter エラーが発生する恐れがあります。Connector/ODBC 接続スクリーンで、Change BIGINT columns to INT オプションを選択してみましょう。

24.1.6.2.1.5. Visual Objects

Don't optimize column widths オプションを選択してください。

24.1.6.2.1.6. Microsoft ADO

ADO API と Connector/ODBC でコード作成をしている場合、MySQL サーバでサポートされていないデフォルトのプロパティに注意してください。例えば、CursorLocation Property を adUseServer として使用すると、–1 という結果が RecordCount Property に戻されます。正しい値を得るには、このプロパティを下記の VB コードのように、 adUseClient に設定する必要があります。

Dim myconn As New ADODB.Connection
Dim myrs As New Recordset
Dim mySQL As String
Dim myrows As Long

myconn.Open "DSN=MyODBCsample"
mySQL = "SELECT * from user"
myrs.Source = mySQL
Set myrs.ActiveConnection = myconn
myrs.CursorLocation = adUseClient
myrs.Open
myrows = myrs.RecordCount

myrs.Close
myconn.Close

もうひとつの回避法としては、類似するクエリに SELECT COUNT(*) 文を使用し、正しい行カウントを獲得します。

ADO の特定の SQL 文に影響を受けている行の数を検索するには、ADO execute メソッドに RecordsAffected プロパティを使用します。execute メソッドの使用に関する詳しい情報は、http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ado270/htm/mdmthcnnexecute.asp をご覧ください。

詳細は、ActiveX Data Objects(ADO) Frequently Asked Questions を参照。

24.1.6.2.1.7. Active Server Pages (ASP) との Connector/ODBC の使用

DSN で Return matching rows オプションを選択してください。

Connector/ODBC を使用し、ASP を介して MySQL にアクセスする方法は、次の資料を参考にしてください :

  • Using MyODBC To Access Your MySQL Database Via ASP

  • ASP and MySQL at DWAM.NT

ASP に関するよくある質問のリストは、http://support.microsoft.com/default.aspx?scid=/Support/ActiveServer/faq/data/adofaq.asp で閲覧できます。

24.1.6.2.1.8. Visual Basic (ADO, DAO and RDO) および ASP を使った Connector/ODBC の使用

Visual Basic および ASP に関する参考資料 :

  • MySQL BLOB columns and Visual Basic 6 by Mike Hillyer (<mike@openwin.org>).

  • How to map Visual basic data type to MySQL types by Mike Hillyer (<mike@openwin.org>).

24.1.6.2.2. Connector/ODBC の Borland アプリケーションとの使用

[+/-]

24.1.6.2.2.1. Connector/ODBC の Borland Builder 4 との使用
24.1.6.2.2.2. Delphi を使った Connector/ODBC の使用
24.1.6.2.2.3. C++ Builder を使った Connector/ODBC の使用

Borland Database Engine (BDE) が使用されるすべての Borland アプリケーションでは、互換性を高めるため次の手順に従ってください :

  • BDE 3.2 以降にアップデートする。

  • DSN で Don't optimize column widths オプションを有効にする。

  • DSN で Return matching rows オプションを有効にする。

24.1.6.2.2.1. Connector/ODBC の Borland Builder 4 との使用

クエリを開始する際、Active プロパティか、Open メソッドを使用することができます。Active は、SELECT * FROM ... クエリを自動的に発行することで開始するので注意してください。大規模なテーブルを扱っている場合、これは欠点になりえます。

24.1.6.2.2.2. Delphi を使った Connector/ODBC の使用

また以下は、Connector/ODBC の ODBC エントリと BDE エントリの両方をセットアップする、役に立ちうる Delphi コードの一例です。BDE エントリには、身近な Delphi Super Page から無料で入手できる BDE Alias Editor が必要です。( Bryan Brunton <bryan@flesherfab.com> に提供を感謝します ) :

fReg:= TRegistry.Create;
fReg.OpenKey('\Software\ODBC\ODBC.INI\DocumentsFab', True);
fReg.WriteString('Database', 'Documents');
fReg.WriteString('Description', ' ');
fReg.WriteString('Driver', 'C:\WINNT\System32\myodbc.dll');
fReg.WriteString('Flag', '1');
fReg.WriteString('Password', '');
fReg.WriteString('Port', ' ');
fReg.WriteString('Server', 'xmark');
fReg.WriteString('User', 'winuser');
fReg.OpenKey('\Software\ODBC\ODBC.INI\ODBC Data Sources', True);
fReg.WriteString('DocumentsFab', 'MySQL');
fReg.CloseKey;
fReg.Free;

Memo1.Lines.Add('DATABASE NAME=');
Memo1.Lines.Add('USER NAME=');
Memo1.Lines.Add('ODBC DSN=DocumentsFab');
Memo1.Lines.Add('OPEN MODE=READ/WRITE');
Memo1.Lines.Add('BATCH COUNT=200');
Memo1.Lines.Add('LANGDRIVER=');
Memo1.Lines.Add('MAX ROWS=-1');
Memo1.Lines.Add('SCHEMA CACHE DIR=');
Memo1.Lines.Add('SCHEMA CACHE SIZE=8');
Memo1.Lines.Add('SCHEMA CACHE TIME=-1');
Memo1.Lines.Add('SQLPASSTHRU MODE=SHARED AUTOCOMMIT');
Memo1.Lines.Add('SQLQRYMODE=');
Memo1.Lines.Add('ENABLE SCHEMA CACHE=FALSE');
Memo1.Lines.Add('ENABLE BCD=FALSE');
Memo1.Lines.Add('ROWSET SIZE=20');
Memo1.Lines.Add('BLOBS TO CACHE=64');
Memo1.Lines.Add('BLOB SIZE=32');

AliasEditor.Add('DocumentsFab','MySQL',Memo1.Lines);
24.1.6.2.2.3. C++ Builder を使った Connector/ODBC の使用

BDE 3.0. でテスト済み。判明している問題は、テーブルのスキーマに変更がある時、クエリ フィールドがアップデートされないことだけです。しかし、これまでのところ問題にはなっていませんが、BDE は基本キーを認識ぜず、PRIMARY と名付けられたインデックスのみを認めるようです。

24.1.6.2.3. ColdFusion を使った Connector/ODBC の使用

次の情報は ColdFusion の資料より引用したものです。

次の情報を使用して Linux 用の ColdFusion サーバを構成し、Connector/ODBC を使った unixODBC ドライバを MySQL データソース に使用します。Allaire は、MyODBC 2.50.26 が MySQL 3.22.27 および Linux 用の ColdFusion に対応することを立証しています ( 最近のバージョンであれば問題なく作動するはずです ) 。http://dev.mysql.com/downloads/connector/odbc/ で Connector/ODBC をダウンロードすることができます。

ColdFusion version 4.5.1 があれば、ColdFusion Administrator を使って MySQL を加えることができます。しかし、ColdFusion version 4.5.1 にドライバは含まれていません。MySQL ドライバが ODBC データソースのドロップダウン リストに現れる前に、Connector/ODBC ドライバを構築し、/opt/coldfusion/lib/libmyodbc.so にコピーする必要があります。

Contrib ディレクトリは mydsn-xxx.zip プログラムを含んでおり、これにより ColdFusion アプリケーション上の Connector/ODBC ドライバ用に、DSN レジストリ ファイルを構築または除去することができることになります。

ColdFusion と Connector/ODBC の使用に関する情報とガイドは、次の外部サイトでご覧ください :

  • Troubleshooting Data Sources and Database Connectivity for Unix Platforms.

24.1.6.2.4. OpenOffice を使った Connector/ODBC の使用

Open Office (http://www.openoffice.org) How-to: MySQL + OpenOffice. How-to: OpenOffice + MyODBC + unixODBC.

24.1.6.2.5. Sambar Server を使った Connector/ODBC の使用

Sambar Server (http://www.sambarserver.info) How-to: MyODBC + SambarServer + MySQL.

24.1.6.2.6. Pervasive Software DataJunction を使った Connector/ODBC の使用

Data junction が ENUM をアウトプットすると MySQL に不具合が起きるので、VARCHAR をアウトプットするよう変更してください。

24.1.6.2.7. SunSystems Vision を使った Connector/ODBC の使用

Return matching rows オプションを選択してください。

Copyright © 1997, 2010, Oracle and/or its affiliates. All rights reserved. Legal Notices
Top / Previous / Next / Up / Table of Contents
© 2010, Oracle Corporation and/or its affiliates