VB.NET(2010)からAccess2000に接続するプログラムなのですが、
特定のテーブルに条件に合うレコードが存在するかどうかのみを知るために
以下のようなソースにしています。
Try
strSQL = "SELECT * FROM テーブルA WHERE 整理番号 = 999"
(999の部分は随時変わります)
Dim CnnK3 As String = ACstr & _
"Data Source=" & DataMdb & ";" & ACPassS
Dim OleConn As OleDb.OleDbConnection = New OleDb.OleDbConnection
Dim OleDA As New OleDbDataAdapter(strSQL, CnnK3)
Dim dtSet As DataSet = New DataSet("TABLE")
Dim cb As New OleDbCommandBuilder(OleDA)
Dim table As New DataTable()
OleDA.Fill(table)
Dim Tcnt As Integer = table.Rows.Count
Catch ex As Exception
MessageBox.Show(ex.Message, "Access接続エラー")
Cursor.Current = Cursors.Default 'カーソル通常
Exit Sub
End Try
table.Rows.Countが0かどうかを見て該当レコードがあるかどうかチェックしているのですが、さらに高速に結果を知るには他によい方法はありますでしょうか?
SQLのSELECT文を、
strSQL = "SELECT COUNT(*) FROM テーブルA WHERE 整理番号 = 999"
とすれば、該当レコードを全部読み込むことなく判断できると思います。
DataAdapterとDataSetを使うのではなく,
OleDbCommandを使うことで,SQLを実行できます。
さらに,ExecuteScalarメソッドで単一の値のみを取得できます。
OleDbCommandを使用し、処理速度が上がりました。
SELECT COUNT 〜
SQLCm.ExecuteScalar で該当レコード数を取得できました。
ありがとうございました。
ツイート | ![]() |