アプリ版:「スタンプのみでお礼する」機能のリリースについて

お世話になります。
DBから2つのテーブルを取得する際にSqlParameterを使用すると2つ目のテーブルの取得時にタイムアウトになってしまう現象に遭っています。
・SqlParameter使用
''型付きデータセット
Dim ds As New TargetDataSet
Dim sb as new System.Text.StringBuilder
sb.Append("SELECT ~ FROM TblA WHERE ColA = @Val")
Dim sb2 as new System.Text.StringBuilder
sb.Append("SELECT ~ FROM TblB WHERE ColB = @Val")

Using conn As New SqlConnection(ConnString)
__Using cmd As New SqlCommand(sb.ToString, conn)
____cmd.Parameters.Add(New SqlParameter("@Val", val))
____Using da As New SqlDataAdapter(cmd)
______da.Fill(ds.TblA)
____End Using
____cmd.CommandText = sb2.ToString____''CommandTextをtblB用に変更
____Using da As New SqlDataAdapter(cmd)
______da.Fill(ds.TblB)
____End Using
__End Using
End Using

パラメーターに入る値は共通なのでSqlCommandは使いまわしてCommandTextを変えて使用しています。
これで実行すると、2つ目のtblBへのFillでタイムアウトになってしまいます。
しかし、同じやり方でSqlParameterを使わずにクエリ文字列に直接valの値を入れて実行すると、問題なく処理されます。

SqlCommandとSqlParameterを使いまわしてはいけないのでしょうか?
よろしくお願いします

A 回答 (1件)

問題ありませんよ。



提示されているコードに関して言えば、sb2はインスタンス化されてるけど、値が何も入ってません。打ち間違い、ですよね?
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
ご指摘の通り打ち間違いです。すみません。
実際のコードではちゃんとsb2に値を入れています。

問題ないとなると、何か別の要因があるのですね。
DB側に原因があるのでしょうか…

お礼日時:2015/10/22 18:48

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!