通常、20 000 ~ 100 000 行のデータを返すこの大きな SQL コマンドがあります。しかし、executeMyQuery 関数を呼び出すとすぐに、戻り値の大きさに応じてプログラムが数秒間ハングします。
1列だけ返します。
このコマンドの実行中に進行状況バーを表示するにはどうすればよいですか?
多分スレッドか何かで(私はスレッドの経験がありません)
これが私のコードです(引数は3つの異なるcombobox.selectedItemから送信されます):
Public Function executeMyQuery(dbname As String, colname As String, tblname As String)
Try
ListBox1.Items.Clear()
If Not String.IsNullOrWhiteSpace(connString) Then
Using cn As SqlConnection = New SqlConnection(connString)
cn.Open()
Using cmd As SqlCommand = New SqlCommand()
cmd.Connection = cn
Dim qry As String
qry = String.Format("select distinct [{0}] from {1}.dbo.{2} where [{0}] is not null", colname, dbname, tblname)
cmd.CommandText = qry
cmd.CommandTimeout = 0
Dim count As Integer
Using myReader As SqlDataReader = cmd.ExecuteReader()
While (myReader.Read())
count += 1
ListBox1.Items.Add(count.ToString & ". " & myReader.GetString(0))
End While
End Using
End Using
End Using
End If
cn.Close()
Catch ex As Exception
MsgBox("Error Occured : " & ex.Message)
cn.Close()
End
End Function