- - PR -
SqlDataAdapterとOleDbDataAdapterとの違い
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2003-06-23 11:47
はじめまして、Joeと申します。
レコードを抽出するつもりです。OleDbDataAdapterを使ってうまく行けましたが、SqlDataAdapterを使ったら、システムエラーが出できました。何にか間違いましたかな?教えていただきませんか。 OleDbDataAdapterを使う場合: //レコードを抽出 oleDbDataAdapter1.SelectCommand.Parameters["商品グループ"].Value = txtKey.Text; oleDbDataAdapter1.Fill(dataSet11, "T_商品"); sqlDataAdapterを使う場合: sqlDataAdapter1.SelectCommand.Parameters["@商品グループ"].Value = txtKey.Text; sqlDataAdapter1.Fill(dataSet11, "T_商品"); よろしくお願いいたします。 | ||||
|
投稿日時: 2003-06-23 12:05
こんにちは。
どのような「エラーメッセージ」が出力されましたか? ご提示の情報では、DBとの接続がエラーになっているのか、SQL文(パラメータ)がエラーになっているのか、それとももっと他の所に原因があるかわかりません。例えば、「Oracleに対してSqlDataAdapterを使っていませんか」というのも、立派な回答になってしまいます。 | ||||
|
投稿日時: 2003-06-23 13:04
try { ...; } catch (Exception exc) { Console.WriteLine(exc.Message); } どのようなメッセージが表示されますか? | ||||
|
投稿日時: 2003-06-25 12:20
皆さんのご返事、ありがとうございました。
エラーメッセージは以下のとおりです。 'System.IndexOutOfRangeException' のハンドルされていない例外が system.data.dll で発生しました。 追加情報 : ParameterName '商品グループ' を持つ SqlParameter は、この SqlParameterCollection に含まれていません。 | ||||
|
投稿日時: 2003-06-25 13:00
パラメータ名称を確認してみては?
foreach (SqlParameter param in sqlDataAdapter1.SelectCommand.Parameters) { Console.WriteLine("[" + param.ParameterName + "]"); } | ||||
|
投稿日時: 2003-06-25 13:11
> ["@商品グループ"]
[@"商品グループ"] と変更してみては? | ||||
|
投稿日時: 2003-06-25 13:15
ここのパラメータ、「商品グループ」(@がいらいない)じゃないですか?? Parameters["商品グループ"] | ||||
|
投稿日時: 2003-06-25 16:35
Jitta,ななさん、ありがとうございました。
問題が解決しました。SelectCommandのフォーマット違いですから。 oleDbDataAdapter1の場合は、 SELECT 商品番号, 商品名, 単価, 商品グループ FROM T_商品 WHERE (商品グループ LIKE ?) ですが、sqlDataAdapter1の場合は SELECT 商品番号, 商品名, 単価, 商品グループ FROM T_商品 WHERE (商品グループ LIKE @商品グループ) ように直してOKでした。 |
1