DBMS独自の
などが使用されている場合は修正が必要になります。
基本的な構文でも
などがあります。
また、
などに違いがあります。
このため、クロスDBの際は、SQLを外部ファイル化し、
DBによって切り替える等の方式が良いかと思います。
ADO.NETは、
などと同じくAPIのインターフェイスはある程度標準化されています。
ただし、
と異なり、内部で使用するドライバを切り替えるスタイルではなく、
ベンダ毎に別々のデータプロバイダ(バイナリ)を提供しています。
それぞれ名前空間.クラス型が異なるため、以下に列挙した
汎用型等を使用してプログラミングする必要があります。
#若しくは、自前のDB部品等でラッピングする等の対策を取る必要があります。
JDBCと比べるとADO.NETの方が、
が多く、クロスDB対応には注意が必要です。
特にHiRDBのプロバイダ(pddndp20.dll)が
他のメジャーなDBMSのプロバイダと異なり、
#ちなみに、サイズ指定は渡すデータのサイズではなくDDLで定義したスキーマのサイズ
などがあり、クロスDB対応を困難にしています。
特に、SELECTした結果セットの取得時、
DBMS型と.NET(やJava)のネイティブ型とのマッピングが異なるので、
プログラム側でキャストやコンバートのコード記述が必要になる場合があります。
主に以下の型のマッピングが問題になることがあります。
また、例えばODP.NETなどでは、
OracleのNumber型のサイズによって
.NETのネイティブ型へのマッピングが変わってきます。
DBMSによってロック・分離戦略が異なるので注意する。