- PR -

Oracleに適したデータプロバイダは?

投稿者投稿内容
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-10-08 16:56
引用:

tocさんの書き込み (2003-10-08 14:48) より:

うーん、、できそうですか?


 やってみました。ダメでした。考えました。


 その前に、データアダプタ等をデザイナ上に置くのは、オブジェクト指向の考え方からはあまりお勧めできません。結果的に、とても使いづらくなります。

引用:

フォームデザイナ上でOracleDataAdapterを配置した際にデータアダプタ構成ウィザードが起動しますが、このときに「新しい接続」をクリックした際に表示されるダイアログの「プロバイダ」タブの OLEDBプロバイダリスト には「Microsoft OLE DB Provide for Oracle」が選択されています。
このリスト上に「Microsoft .NET Framework Data Provider for Oracle」というプロバイダが表示されるわけではないんでしょうか?


 書かれているとおり、「OLEDBプロバイダ」のリストです。ODP.NETはOLEを介さずに接続するプロバイダなので、リスト上には現れません。その証拠に、SQL ServerのDataAdapterをおいてみてください。そんなリストは表示されません。つまり、別の扱いを受けているわけです。接続文字列を見てもわかります。OLE Data Providerは、「Provider=」という文字列が必須ですが、ODP.NETも.NET FDP for Oracleもいりません。



 「DataAdapterを置いてデザイナ上で右クリック「データセットの作成」でできるのと、同じデータセットを作る」でいいですか?

 まず、「サーバエクスプローラ」で、データベースを開き、Microsoft OLEDB Data Provider for Oracleで、接続を1つ作ってください。
 次に、ソリューションエクスプローラで右クリック、「追加→新しい項目の追加」で、「データセット」というのがあるので、これを作ります。.xsdというファイルと、そのデザイナが表示されます。
 このデザイナ上に、先ほど作ったデータベース接続から、テーブルをドラッグドロップします。MS OLEDB Providerを選んだのは、Oracle Data Provider for OLEだとデータを引っ張って来られないからです。
 テーブルを置いたら、いるもの、いらないものを選別し、必要に応じて外部キーも設定します。
 データセットの設定ができたら、必ず保存します。「全てのファイルを表示」ボタンでXMLスキーマの裏にある.vbなり.csファイルを表示し、設定したテーブルのクラスができていることを確認してください。
 最後に、ツールボックスの「データ」タブにあるDataSetを、フォームデザイナにドラッグアンドドロップします。「型指定されたデータセット」で、先ほど作成したデータセットを指定します。

 ざっとですが、.NET FDP for Oracleで作ったDataSetと、この方法で作ったDataSetを、DataGrid.DataSourceに指定し、同じように設定できることを確認しました。
 DataAdapterや、それに設定するDbConnection、DbCommandは別途コード中で作成しなければなりませんが、その方が結果的に扱いやすいと思います。
toc
会議室デビュー日: 2003/10/08
投稿数: 15
投稿日時: 2003-10-08 18:38
なるほど、、そういう方法もあったのですね。ありがとうございます。

早速やってみようとしたところ、Microsoft OLE DB Provider for Oracle経由にて接続を作る際に、「データプロバイダの初期化に失敗しました。」というエラーが発生してデザイナ上で接続が作成できなくなってしまいました。(プログラムの実行は可能)

1.Oracle 8.1.6がインストールされている状態で VS.NET2003をインストール
2..NET FDP for Oracle経由でプログラム作成
3.先日 Oracle 9.2.0 Clientにアップグレードし ODP.NETをインストール

という手順でインストールを行ったので、それがまずかったのかもしれませんね。
VS.NET 2003 を再インストールしてみます。
toc
会議室デビュー日: 2003/10/08
投稿数: 15
投稿日時: 2003-10-10 08:45
無事、解決できました。
どうもありがとうございました。
じょび
会議室デビュー日: 2002/05/04
投稿数: 9
投稿日時: 2003-10-10 13:00
激遅レスですが、、、

> 私個人の意見としては文字コードの問題や、MSがサポートしているかという

WAVE DASHがFULL WIDTH TILDEに化けないのは、Microsoft ODBC Driver for Oracle、または Microsoft OLE DB Provider for Oracleの場合だけで、Microsoft .NET Framework Data Provider for Oracleを使用する場合は同じ現象が発生します。

したがって、この点は選択の決め手にはならないでしょう。

私は、DataDirect Connect for .NET J1.1(http://www.datadirect.co.jp/products/dotnet/index.asp)を使用しています。
各クライアント端末に Oracle Clientを配付したくないのであれば、こういった選択肢もあります。J1.1ではWAVE DASH問題も起きていません。

ODP.NET R.9.2.0.4以降では、結合配列(PL/SQL索引付き表)のサポートが開始されます。
これまで Oracle Objects for OLEを使用してPL/SQL表を渡すようなストアド・プロシージャを使用していた場合は、もっとも移行しやすいように思います。

Oracle 10gからはクライアント・インストールの手間も軽減される方向に進んでいくようですので、将来的に考えると、ODP.NETが主流になっていくような気がします。

スキルアップ/キャリアアップ(JOB@IT)