DOBON.NET DOBON.NETプログラミング掲示板過去ログ

OleDbParameterが効かない

環境/言語:[VB.NET MDBは97または2000形式]
分類:[.NET]

お世話になります。

VB.NETとSQLServerを連携されるプログラムで以下(1)を作成し、
動作確認も済んでおります。
で、これを元にしてアクセスMDB接続機能を作ろうと思い、
Sql〜という関数をOleDb〜に変換した関数を新設しました。

(1)SqlCommand系(SQLServer)との接続方式
=================
command = New SqlCommand(query, con, tx)

If paramHashTable IsNot Nothing Then
For Each paramKey As String In paramHashTable.Keys
command.Parameters.Add(New SqlParameter(paramKey, paramHashTable(paramKey)))
Next
End If
'データアダプタsdaに格納
sda = New SqlDataAdapter(command)

'SQL実行
sda.Fill(dsResult)

End If

=================

が、どうもアクセス接続関数では「command.Parameters.Add」が正常に働いていないらしく、
検索結果が0件になってしまいます。
検索条件にあうデータ自体はDBに確実に存在します。
SQL文単体で実行しても正常に取得できることを確認済み。

パラメータ「@〜」を埋め込まないタイプのSQL文だと正常に検索結果が取得されます。
また、SQL文も文字列中に連結記号で値を直接入れ込んでも正常に検索結果が取得されます。
例)"select * from test where id = '" + paramID + "'"

OleDbParameterの引数でOleDbTypeや「Direction = ParameterDirection.Input」を指定したりもしましたが、値はとれませんでした。
※OleDbTypeの指定が違っているということはあるかもしれません。

以上、原因がお分かりになる方がいましたら
ご教示いただければ幸いです。
  • 題名: Re[1]: OleDbParameterが効かない
  • 著者: 旅がらす
  • 日時: 2008/06/09 14:09:41
  • ID: 22224
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
自己解決しました。

以前のSQL文で使用したパラメータが残っており、
それが入れ込まれていたようです。

OleDbParameterは指定した名前が同じところに入れ込むのではなく、
あくまでも
SQL内で@の出てきた順序とコレクションを追加した順序が対応するとのこと。
お騒がせしました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板