(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)
分類:[.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の指定が違っているということはあるかもしれません。
以上、原因がお分かりになる方がいましたら
ご教示いただければ幸いです。