したがって、Accessデータベース(2007)のテーブルから特定の列を読み取るVb.Netプロジェクトで実行するコードがあります。次に、Datagridviewに結果を設定します。問題はコードが乱雑です、私はすべての出来事を処分しています...等。それを最適化する方法はありますか?私が読んだところから、私は "using"というコマンドを使うことができますが、それを実装しようとして問題があります。このコードのクリーンアップに関するヘルプは関連しています。このデータベースコードを最適化する(Vb.Net)
Sub Populate_RecordsList_Via_Database()
'Create a connection to the database
Dim strConnection As String = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=SBS2257_Info.accdb;"
Dim objConnection As New OleDbConnection(strConnection)
'Open the connection with error handling
Try
objConnection.Open()
Catch OleDbExceptionErr As OleDbException
MessageBox.Show(OleDbExceptionErr.Message)
Catch InvalidOperationErr As InvalidOperationException
MessageBox.Show(InvalidOperationErr.Message)
End Try
'Create a command object with the SQL statement needed to select the first and last names
Dim strSQL As String = "SELECT [RecordID], [FName], [LName], [SBAlias1] FROM [Records];"
Dim objCommand As New OleDbCommand(strSQL, objConnection)
'Create a data adapter and data table then fill the data table
Dim objDataAdapter As New OleDbDataAdapter(objCommand)
Dim objDataTable As New DataTable("Info")
objDataAdapter.Fill(objDataTable)
'close connection and release resources
objConnection.Close()
objConnection.Dispose()
objConnection = Nothing
objCommand.Dispose()
objCommand = Nothing
objDataAdapter.Dispose()
objDataAdapter = Nothing
'Populate datagridview
For Each row As DataRow In objDataTable.Rows
Dim n As Integer = DGV_ListView.Rows.Add()
DGV_ListView.Rows.Item(n).Cells(0).Value = row.Item("RecordID")
DGV_ListView.Rows.Item(n).Cells(1).Value = row.Item("FName")
DGV_ListView.Rows.Item(n).Cells(2).Value = row.Item("LName")
DGV_ListView.Rows.Item(n).Cells(3).Value = row.Item("SBAlias1")
Next
'Release resources
objDataTable.Dispose()
objDataTable = Nothing
End Sub
参照:[ステートメント(Visual Basic)の使用](https://msdn.microsoft.com/en-us/library/htd05whh.aspx) 'Close()'と 'Dispose()'は同じことを行います。つまり、一方は他方を呼び出します。変数を 'Nothing'に設定する必要もありません。あなたは 'Using'ステートメントによって3つすべてを置き換えることができます。 –
usingステートメントにはどのようなコマンドを入れますか?のような:新しいOleDbDataAdapter(objCommand)としてobjDataAdapterを使用しますか? –
グリッドを埋めるために独自のコードでループを開始するのではなく、グリッドDataSourceプロパティをDataTableに設定するのはなぜですか? – Steve