- PR -

データ抽出時のパラメータ

投稿者投稿内容
MELODY
会議室デビュー日: 2003/08/28
投稿数: 11
投稿日時: 2003-09-03 15:37
SQL文は下記のようにしています。
引用符を名前付きパラメータへ変更しています。

MyCommand = New OleDbCommand("select * from T_PRESEN where PROD_FAM_NM= @PROD_FAM", MyConnection)

MyCommand.Parameters.Add("@PROD_FAM", OleDbType.VarChar, 5).Value =
MySelect1.SelectedItem.Value

MyAdapter.SelectCommand = MyCommand
MyDataset = New DataSet()
MyAdapter.Fill(MyDataset, "T_PRESEN")

パラメータにうまく値が入っていないのでしょうか。
他に設定をしなければならないところがありすか。
教えてください。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-09-03 16:15
使用したいプロジェクトに
System.Data.OracleClient:
%SYSTEMROOT%\Microsoft.NET\Framework\v1.1.4322\System.Data.OracleClient.dll
への参照を追加してください。

Imports System.Data.OracleClient

MyCommand = New OracleCommand( _
"select * from T_PRESEN where PROD_FAM_NM= :PROD_FAM", MyConnection)
MyCommand.Parameters.Add("PROD_FAM", _
OracleType.VarChar, 5).Value = MySelect1.SelectedItem.Value

MyAdapter.SelectCommand = MyCommand
MyDataset = New DataSet()
MyAdapter.Fill(MyDataset, "T_PRESEN")


 名前付きパラメータが使えるのは、.NET Data Provider for Oracleや、Oracle DataProvider for .NET、標準のSQL Server用データプロバイダです。このデータプロバイダというのは、.NET Frameworkから呼び出される、データベースとのやり取りを行うドライバと考えてください。名前付きパラメータを理解するのは、このドライバです。MELODYさんが使おうとされているOLEデータプロバイダは、.NET Framework 1.1とは関係なしに、名前付きパラメータを理解できません。『.Net Framework 1.1 なら、System.Data.OracleClient のデータプロバイダで名前付きパラメータが使用できます。 』は、1.1ならOleデータプロバイダでも名前付きパラメータが使用できるという意味ではなく、1.1で提供されるようになった(グローバルアセンブリとして提供されるようになった?).NET Data Provider for Oracleでは名前付きパラメータが使える、という意味です。


[ メッセージ編集済み 編集者: Jitta 編集日時 2003-09-03 16:22 ]
MELODY
会議室デビュー日: 2003/08/28
投稿数: 11
投稿日時: 2003-09-03 17:40
Jittaさんありがとうございます。

いただいたOracleClientを使用することができました。
しかし、エラーがでました。(太字で書いていただいたところは変更済みです)
「パラメータ名 : 無効な OleDbType の列挙値です 」

きっとSystem.Data.OleDbでずっとコーディングしていますので、
その影響かと思いますがいかかでしょうか。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-09-04 09:47
引用:

MELODYさんの書き込み (2003-09-03 17:40) より:

しかし、エラーがでました。(太字で書いていただいたところは変更済みです)
「パラメータ名 : 無効な OleDbType の列挙値です 」


 MyCommand.Parameters.Add()のところですか?とりあえずいったん消して、インテリセンスを利用して選択してみてください。
MELODY
会議室デビュー日: 2003/08/28
投稿数: 11
投稿日時: 2003-09-04 11:34
いったん消して再度記述しましたが同じエラーがでます。

データ接続がSystem.Data.OleDbとなっていますので、
OleDbTypeのエラーがでているようです。
こちらもすべて変更しなければなりませんよね。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-09-04 12:13
引用:

MELODYさんの書き込み (2003-09-04 11:34) より:

データ接続がSystem.Data.OleDbとなっていますので、
OleDbTypeのエラーがでているようです。
こちらもすべて変更しなければなりませんよね。


 そりゃそうです。「System.Data.OleDb.OleDb」を「System.Data.OracleClient.Oracle」に置換してみてください。

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