C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: OleDBでパラメータクエリーが使えない(ORACLE)


(過去ログ 16 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■5967 / inTopicNo.1)  OleDBでパラメータクエリーが使えない(ORACLE)
  
□投稿者/ TMU (3回)-(2007/07/27(Fri) 12:07:54)

分類:[データベース全般] 

VS2003でC#/ ORACLE 10gです

System.Data.OleDb で オラクル接続しようとしています。
パラメータを使って  sql= "Select * from TBL where 項目= :fld"

System.Data.OleDb.OleDbCommand cmd = new System.Data.OleDb.OleDbCommand(Sql,cn);
System.Data.OleDb.OleDbParameter P1 = new System.Data.OleDb.OleDbParameter("fld", System.Data.OleDb.OleDbType.Char);
P1.Value = "SYSTEM";
cmd.Parameters.Add(P1);
System.Data.DataSet ds = new System.Data.DataSet();

da.SelectCommand = cmd;
da.Fill(ds);

としたところ "ORA-01008: バインドされていない変数があります。"
とでます。

ODPを使った場合は cmd.BindByName ="TRUE" など使えて、実行できるのですが、今回は .netの System.Data.OleDBを使っています

この環境ではパラメータを認識しないようです。System.Data.OleDBとパラメータクエリの組み合わせは無理な組み合わせなのでしょうか。
よろしくお願いいたします。


引用返信 編集キー/
■5973 / inTopicNo.2)  Re[1]: OleDBでパラメータクエリーが使えない(ORACLE)
□投稿者/ 魔界の仮面弁士 (365回)-(2007/07/27(Fri) 14:24:06)
No5967 (TMU さん) に返信
> パラメータを使って  sql= "Select * from TBL where 項目= :fld"

「:x」の構文ではなく、「?」にしてみたらどうでしょう。
http://msdn2.microsoft.com/ja-jp/library/system.data.oledb.oledbparameter%28VS.80%29.aspx
引用返信 編集キー/
■5975 / inTopicNo.3)  Re[1]: OleDBでパラメータクエリーが使えない(ORACLE)
□投稿者/ はつね (216回)-(2007/07/27(Fri) 14:41:22)
No5967 (TMU さん) に返信
> System.Data.OleDb で オラクル接続しようとしています。
> パラメータを使って  sql= "Select * from TBL where 項目= :fld"

System.Data.OleDbクラスライブラリでは、パラメタに名前を指定できません。
?をつかってパラメタ位置を指定し、?の出現順番に合わせる形でParametesコレクションに要素を追加していかなければなりません。
まったくもって不便な状況ですが、汎用的なものですから仕方がないといったところでしょうか。

引用返信 編集キー/
■5978 / inTopicNo.4)  Re[2]: OleDBでパラメータクエリーが使えない(ORACLE)
□投稿者/ TMU (4回)-(2007/07/27(Fri) 15:45:14)
ご回答ありがとうごさいます。
"?" を使うのでしたか。 "?"そのものを使うのではなくパメータ名に置換するものだと勝手な解釈をしてました。
?の登場順にパラメータを設定すれば動作しました。私も汎用性よりも不便さのほうが大きく感じました。

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -