vb.net - 这是从数据库获取数据到 datagridview 的最有效方法吗?
问题描述
我是初学者,希望知道什么是最有效的内存/处理器查询方式。我是否正确放置使用和结束使用?仍然需要新的 OleDbCommand 吗?请评论您的建议和提示以改进我的代码:)
Dim con As New OleDbConnection
Dim dbProvider As String = "Provider=Microsoft.ACE.OLEDB.12.0;"
Dim dbSource As String = ("Data Source=" & Application.StartupPath & "\DBbms.accdb")
con.ConnectionString = dbProvider & dbSource
Using connection As New OleDbConnection(con.ConnectionString)
Try
Dim query As String = "Select * from Household"
'cmd = New OleDbCommand(query, con)
Dim da As New OleDbDataAdapter(query, con)
connection.Open()
Dim dt As New DataTable
da.Fill(dt)
DataGridView1.DataSource = dt.DefaultView
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Using
解决方案
将用户界面代码与数据库代码分开。如果您想Catch
在 UI 代码中显示消息框,请执行此操作。
您可能希望将连接字符串设置为类级别变量,以便其他数据库代码可以使用它。
该命令也包含在Using
块中。注意行尾的逗号Connection
。
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Dim dt As DataTable
Try
dt = GetHouseholdData()
Catch ex As Exception
MsgBox(ex.Message)
Exit Sub
End Try
DataGridView1.DataSource = dt.DefaultView
End Sub
Private HHConStr As String = $"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={Application.StartupPath}\DBbms.accdb"
Private Function GetHouseholdData() As DataTable
Dim dt As New DataTable
Using con As New OleDbConnection(HHConStr),
cmd As New OleDbCommand("Select * from Household", con)
con.Open()
Using reader = cmd.ExecuteReader
dt.Load(reader)
End Using
End Using
Return dt
End Function
推荐阅读
- javascript - Angularjs,更新数组中的值
- jquery - 如何在鼠标单击中获得 JQuery 自动完成选项?
- streamsets - 无法将数据写入 MySql 的流集中的 JDBC 生产者
- javascript - Javascript中嵌套if语句(函数内)的问题
- javascript - WordPress 附件分类复选框组未保存在网格视图中
- deeplearning4j - java.lang.UnsatisfiedLinkError:java.library.path 中没有 jnind4jcpu
- visual-studio-code - 我们在哪里可以获得 ZIP 格式的旧版本 VSCode(如 1.25)?
- excel-formula - MS Excel - 删除所有空格然后比较两个单元格
- android - 按钮没有在 CardView 上方移动
- java - 如何在Java中使用泛型模板对数组求和而不会出现错误的操作数类型错误