「マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
目次 †
SQL †
DBMS独自の
などが使用されている場合は修正が必要になります。
基本的な構文でも
- DELETE FROMのFROMがあるとエラーになるケース
- JOINの構文が異なるケース
- INNER JOINが使えない。
- RIGHT OUTER JOINが使えない。
などがあります。
また、
- Transact-SQL、PL/SQLなどの
ストアド・プロシージャの手続き記述の構文
- バインド変数の記号
などに違いがあります。
このため、クロスDBの際は、SQLを外部ファイル化し、
DBによって切り替える等の方式が良いかと思います。
ADO.NET †
ADO.NETは、
などと同じくAPIのインターフェイスはある程度標準化されています。
ただし、
と異なり、内部で使用するドライバを切り替えるスタイルではなく、
ベンダ毎に別々のデータプロバイダ(バイナリ)を提供しています。
それぞれ名前空間.クラス型が異なるため、以下に列挙した
汎用型等を使用してプログラミングする必要があります。
#若しくは、自前のDB部品等でラッピングする等の対策を取る必要があります。
JDBCと比べるとADO.NETの方が、
- 標準化されていない部分や
- ベンダ独自機能の実装
- フェッチ・サイズ(DataReader?)
- 配列バインド
が多く、クロスDB対応には注意が必要です。
などがあります。
型のマッピング †
特に、SELECTした結果セットの取得時、
DBMS型と.NET(やJava)のネイティブ型とのマッピングが異なるので、
プログラム側でキャストやコンバートのコード記述が必要になる場合があります。
主に以下の型のマッピングが問題になることがあります。
- 数値型
- short
- int
- long
- float
- double
- decimal
また、例えばODP.NETなどでは、
OracleのNumber型のサイズによって
.NETのネイティブ型へのマッピングが変わってきます。
- DataReader?については、
Get[型名](int index)
というメソッドがあるためこれを使用できます。
- DataRow?については、
上記に対応するメソッドがないため自前で
キャストやコンバートをする必要があります。
分離レベル †
Tags: :データアクセス, :移行, :.NET開発, :ADO.NET