クロスDB対応
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicros...
-[[戻る>データアクセスのいろいろ]]
* 目次 [#w7c9c6de]
#contents
*概要 [#dc8f6d02]
クロスDB対応のポイントをまとめた。
*詳細 [#x7479230]
**SQL [#j079a683]
以下の様に差異があるため、
クロスDBの際は、
-SQLを外部ファイル化し、
-DBによって参照先のファイルを切り替える
等の方式が良い。
***基本的な構文 [#mf762dca]
-DELETE FROMのFROMがあるとエラーになるケース
-JOINの構文が異なるケース
--INNER JOINが使えない。
--RIGHT OUTER JOINが使えない。
***ヒント [#wf0963d2]
-ロックヒント
-クエリヒント(プラン
***ストアド・関数 [#ycbb9896]
-Transact-SQL、PL/SQLなどの~
ストアド・関数の定義や手続き記述の構文
-バインド変数の記号
--Oracle :「:」
--その他DB :「@」
**データプロバイダ [#o8636aaf]
***インターフェイス [#y4e7cf5c]
現ADOであるADO.NETでは、
-旧ADO
-OLE
-ODBC
-JDBC
などと同じくAPIのインターフェイスは、ある程度標準化されて...
***切替方式 [#v84a84dc]
-ベンダ毎に別々のデータプロバイダ(バイナリ)を提供してい...
-このため、切替方式は、
--内部で使用するドライバを切り替えるスタイルではなく、
--使用するデータプロバイダ(バイナリ)事態を切り替えるス...
-それぞれのデータプロバイダの、名前空間.クラス型が異なる...
[[以下に列挙した汎用型等>#f53785e3]]を使用してプログラミ...
#若しくは、自前のDB部品等でラッピングする等の対策を取る...
***実装の差異 [#v0572201]
-インターフェイス~
そもそも、インターフェイスの非互換がある。
--型指定、サイズ指定が必須~
>サイズ指定は渡すデータのサイズではなく~
DDLで定義したスキーマのサイズを指定
--名前バインドをサポートしていない
>などがある。
-機能~
JDBCと比べるとADO.NETの方が、
--標準化されていないスコープや
--ベンダ独自機能の実装
---フェッチ・サイズ(DataReader)
---配列バインド
>が多く、クロスDB対応には注意が必要。
***汎用型 [#f53785e3]
-System.Data.Common 名前空間~
http://msdn.microsoft.com/ja-jp/library/9tahwysy.aspx
--System.Data.Common.DbConnection クラス~
http://msdn.microsoft.com/ja-jp/library/system.data.commo...
--System.Data.Common.DbConnectionStringBuilder クラス~
http://msdn.microsoft.com/ja-jp/library/system.data.commo...
--System.Data.Common.DbTransaction クラス~
http://msdn.microsoft.com/ja-jp/library/system.data.commo...
--System.Data.Common.DbCommand クラス~
http://msdn.microsoft.com/ja-jp/library/system.data.commo...
--System.Data.Common.DbParameter クラス~
http://msdn.microsoft.com/ja-jp/library/system.data.commo...
--System.Data.Common.DbDataReader クラス~
http://msdn.microsoft.com/ja-jp/library/system.data.commo...
--System.Data.CommonDbDataAdapter クラス~
http://msdn.microsoft.com/ja-jp/library/system.data.commo...
**型のマッピング [#qb049902]
特に、SELECTした結果セットの取得時、~
DBMS型と.NET(やJava)のネイティブ型とのマッピングが異な...
プログラム側でキャストやコンバートのコード記述が必要にな...
主に以下の型のマッピングが問題になることがある。
***数値型 [#v23e8924]
-short
-int
-long
-float
-double
-decimal
***日付 [#af8f7d0f]
-DateTime
-TimeSpan
***例 [#l1f52ae8]
例えば、
-ODP.NETなどでは、OracleのNumber型のサイズによって~
.NETのネイティブ型へのマッピングが変わってくる。~
-型変換の方法
--DataReaderについては、~
Get[型名](int index)という~
メソッドがあるためこれを使用できる。
--DataRowについては、~
上記に対応するメソッドがないため自前で~
キャストやコンバートをする必要がある。
**分離レベル [#rb5f59d8]
DBMSによって[[ロック・分離戦略>#qbc8c640]]が異なるので注...
*参考 [#fa5ee85a]
**[[ADO.NETデータプロバイダ]] [#ya0d9a63]
**[[DBMSのロック・分離戦略と同時実行制御]] [#qbc8c640]
----
Tags: [[:データアクセス]], [[:移行]], [[:.NET開発]], [[:A...
終了行:
「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicros...
-[[戻る>データアクセスのいろいろ]]
* 目次 [#w7c9c6de]
#contents
*概要 [#dc8f6d02]
クロスDB対応のポイントをまとめた。
*詳細 [#x7479230]
**SQL [#j079a683]
以下の様に差異があるため、
クロスDBの際は、
-SQLを外部ファイル化し、
-DBによって参照先のファイルを切り替える
等の方式が良い。
***基本的な構文 [#mf762dca]
-DELETE FROMのFROMがあるとエラーになるケース
-JOINの構文が異なるケース
--INNER JOINが使えない。
--RIGHT OUTER JOINが使えない。
***ヒント [#wf0963d2]
-ロックヒント
-クエリヒント(プラン
***ストアド・関数 [#ycbb9896]
-Transact-SQL、PL/SQLなどの~
ストアド・関数の定義や手続き記述の構文
-バインド変数の記号
--Oracle :「:」
--その他DB :「@」
**データプロバイダ [#o8636aaf]
***インターフェイス [#y4e7cf5c]
現ADOであるADO.NETでは、
-旧ADO
-OLE
-ODBC
-JDBC
などと同じくAPIのインターフェイスは、ある程度標準化されて...
***切替方式 [#v84a84dc]
-ベンダ毎に別々のデータプロバイダ(バイナリ)を提供してい...
-このため、切替方式は、
--内部で使用するドライバを切り替えるスタイルではなく、
--使用するデータプロバイダ(バイナリ)事態を切り替えるス...
-それぞれのデータプロバイダの、名前空間.クラス型が異なる...
[[以下に列挙した汎用型等>#f53785e3]]を使用してプログラミ...
#若しくは、自前のDB部品等でラッピングする等の対策を取る...
***実装の差異 [#v0572201]
-インターフェイス~
そもそも、インターフェイスの非互換がある。
--型指定、サイズ指定が必須~
>サイズ指定は渡すデータのサイズではなく~
DDLで定義したスキーマのサイズを指定
--名前バインドをサポートしていない
>などがある。
-機能~
JDBCと比べるとADO.NETの方が、
--標準化されていないスコープや
--ベンダ独自機能の実装
---フェッチ・サイズ(DataReader)
---配列バインド
>が多く、クロスDB対応には注意が必要。
***汎用型 [#f53785e3]
-System.Data.Common 名前空間~
http://msdn.microsoft.com/ja-jp/library/9tahwysy.aspx
--System.Data.Common.DbConnection クラス~
http://msdn.microsoft.com/ja-jp/library/system.data.commo...
--System.Data.Common.DbConnectionStringBuilder クラス~
http://msdn.microsoft.com/ja-jp/library/system.data.commo...
--System.Data.Common.DbTransaction クラス~
http://msdn.microsoft.com/ja-jp/library/system.data.commo...
--System.Data.Common.DbCommand クラス~
http://msdn.microsoft.com/ja-jp/library/system.data.commo...
--System.Data.Common.DbParameter クラス~
http://msdn.microsoft.com/ja-jp/library/system.data.commo...
--System.Data.Common.DbDataReader クラス~
http://msdn.microsoft.com/ja-jp/library/system.data.commo...
--System.Data.CommonDbDataAdapter クラス~
http://msdn.microsoft.com/ja-jp/library/system.data.commo...
**型のマッピング [#qb049902]
特に、SELECTした結果セットの取得時、~
DBMS型と.NET(やJava)のネイティブ型とのマッピングが異な...
プログラム側でキャストやコンバートのコード記述が必要にな...
主に以下の型のマッピングが問題になることがある。
***数値型 [#v23e8924]
-short
-int
-long
-float
-double
-decimal
***日付 [#af8f7d0f]
-DateTime
-TimeSpan
***例 [#l1f52ae8]
例えば、
-ODP.NETなどでは、OracleのNumber型のサイズによって~
.NETのネイティブ型へのマッピングが変わってくる。~
-型変換の方法
--DataReaderについては、~
Get[型名](int index)という~
メソッドがあるためこれを使用できる。
--DataRowについては、~
上記に対応するメソッドがないため自前で~
キャストやコンバートをする必要がある。
**分離レベル [#rb5f59d8]
DBMSによって[[ロック・分離戦略>#qbc8c640]]が異なるので注...
*参考 [#fa5ee85a]
**[[ADO.NETデータプロバイダ]] [#ya0d9a63]
**[[DBMSのロック・分離戦略と同時実行制御]] [#qbc8c640]
----
Tags: [[:データアクセス]], [[:移行]], [[:.NET開発]], [[:A...
ページ名: