- PR -

SqlDataAdapterとOleDbDataAdapterとの違い

1
投稿者投稿内容
Joe
会議室デビュー日: 2003/06/23
投稿数: 5
投稿日時: 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_商品");

よろしくお願いいたします。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-06-23 12:05
こんにちは。
引用:

Joeさんの書き込み (2003-06-23 11:47) より:

レコードを抽出するつもりです。OleDbDataAdapterを使ってうまく行けましたが、SqlDataAdapterを使ったら、システムエラーが出できました。何にか間違いましたかな?教えていただきませんか。


 どのような「エラーメッセージ」が出力されましたか?
 ご提示の情報では、DBとの接続がエラーになっているのか、SQL文(パラメータ)がエラーになっているのか、それとももっと他の所に原因があるかわかりません。例えば、「Oracleに対してSqlDataAdapterを使っていませんか」というのも、立派な回答になってしまいます。
なな
ぬし
会議室デビュー日: 2003/06/22
投稿数: 659
お住まい・勤務地: 愛知県
投稿日時: 2003-06-23 13:04
引用:

 どのような「エラーメッセージ」が出力されましたか?



try
{
...;
}
catch (Exception exc)
{
Console.WriteLine(exc.Message);
}

どのようなメッセージが表示されますか?
Joe
会議室デビュー日: 2003/06/23
投稿数: 5
投稿日時: 2003-06-25 12:20
皆さんのご返事、ありがとうございました。

エラーメッセージは以下のとおりです。

'System.IndexOutOfRangeException' のハンドルされていない例外が system.data.dll で発生しました。

追加情報 : ParameterName '商品グループ' を持つ SqlParameter は、この SqlParameterCollection に含まれていません。
なな
ぬし
会議室デビュー日: 2003/06/22
投稿数: 659
お住まい・勤務地: 愛知県
投稿日時: 2003-06-25 13:00
パラメータ名称を確認してみては?

foreach (SqlParameter param in sqlDataAdapter1.SelectCommand.Parameters)
{
Console.WriteLine("[" + param.ParameterName + "]");
}
なな
ぬし
会議室デビュー日: 2003/06/22
投稿数: 659
お住まい・勤務地: 愛知県
投稿日時: 2003-06-25 13:11
> ["@商品グループ"]

[@"商品グループ"] と変更してみては?
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-06-25 13:15
引用:

Joeさんの書き込み (2003-06-23 11:47) より:
sqlDataAdapter1.SelectCommand.Parameters["@商品グループ"].Value = txtKey.Text;
sqlDataAdapter1.Fill(dataSet11, "T_商品");


 ここのパラメータ、「商品グループ」(@がいらいない)じゃないですか??
Parameters["商品グループ"]
Joe
会議室デビュー日: 2003/06/23
投稿数: 5
投稿日時: 2003-06-25 16:35
Jitta,ななさん、ありがとうございました。

問題が解決しました。SelectCommandのフォーマット違いですから。

oleDbDataAdapter1の場合は、
SELECT 商品番号, 商品名, 単価, 商品グループ
FROM T_商品
WHERE (商品グループ LIKE ?)

ですが、sqlDataAdapter1の場合は

SELECT 商品番号, 商品名, 単価, 商品グループ
FROM T_商品
WHERE (商品グループ LIKE @商品グループ)

ように直してOKでした。

1

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