- - PR -
データ抽出時のパラメータ
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2003-08-28 18:37
はじめまして、MELODYです。
パラメータを設定して、Oracleからデータを抽出しDataGridに結果を 表示したいのですがうまくいきません。 Oracleのエラーで「式がありません」と表示されます。 Select文の構文がおかしいようですが、教えていただけますか。 パラメータを使用せずに値をきめうちするとDataGridに表示されます。 MyCommand1 = New OleDbCommand("select * from T_PRESEN where PROD_FAM_CD= '@PROD_FAM'", MyConnection) MyCommand1.Parameters.Add("@PROD_FAM", OleDbType.VarChar, 5).Value = MySelect1.SelectedItem.Value MyAdapter1.SelectCommand = MyCommand1 MyDataset1 = New DataSet() //ここでエラーになります。 MyAdapter1.Fill(MyDataset1, "T_PRESEN") MyDataGrid1.DataSource = MyDataset1.Tables("T_PRESEN").DefaultView MyDataGrid1.DataBind() 宜しくお願い致します。 | ||||||||
|
投稿日時: 2003-08-28 19:26
MELODYさん、こんばんは。
MSDNライブラリで、OleDbCommand.Parameters プロパティについて調べてみて下さい。 以下のような記述があります。
| ||||||||
|
投稿日時: 2003-08-28 19:42
きくちゃんさんありがとうございます。
MSDNを確認しましたら、確かに使用できないと書かれていました。 早速修正しましたら、成功しましたが、名前付きパラメータを 使用したいのですが、方法があれば教えていただけますか。 宜しくお願い致します。 | ||||||||
|
投稿日時: 2003-08-28 19:56
MELODYさん、こんばんは。
.Net Framework 1.1 なら、System.Data.OracleClient のデータプロバイダで名前付きパラメータが使用できます。 | ||||||||
|
投稿日時: 2003-08-29 08:38
1つ確認しますが、 MyCommand1 = New OleDbCommand("select * from T_PRESEN where PROD_FAM_CD= '?'", MyConnection) ではなく、 MyCommand1 = New OleDbCommand("select * from T_PRESEN where PROD_FAM_CD= ?", MyConnection) です。パラメータを使用するときは引用符はいりません。 | ||||||||
|
投稿日時: 2003-08-29 10:35
きくちゃんさんありがとうございます。
.Net Framework 1.1 で試してみます。 Jittaさん
はい、引用符はいりませんでした。 | ||||||||
|
投稿日時: 2003-09-03 14:33
こんにちわ。
日がたってからで申し訳ありませんが、 .Net Framework 1.1をインストールして、名前付きパラメータを 使用したのですが、エラーが表示されます。 エラー内容は「ORA-00936 式がありません」です。 どなかた教えていただけないでしょうか。 | ||||||||
|
投稿日時: 2003-09-03 14:57
使用したSQL文は、前回と同じ、 New OleDbCommand("select * from T_PRESEN where PROD_FAM_CD= ?", MyConnection) ですか? パラメータがnull(Nothing)とか、空文字列とかになっていませんか?オラクルでは空文字列はnullとして扱われますが、nullの比較には「IS」演算子を用いなければなりません。 なお、使用するには登録が必要ですが、 http://otn.oracle.co.jp/forum/index.html オラクルテクノロジーネットワークの掲示板内、「Oracleメッセージ検索」が便利です。 掲示板内では、日本語を使っているためにエラーになっているケースがありました。列名、表名に日本語を使っていませんか? |