VB.NET从MySQL读取Combo Box数据报Declaration expected错误求助
问题排查及修复方案
报错原因
- 核心触发点:VB.NET 不允许在类的作用域下直接编写执行性代码,你当前将
da.Fill(dt)、ComboBox1赋值等逻辑直接放在Utama类层级下,没有包裹在方法或事件处理程序中,编译器无法识别为合法声明,因此抛出Declaration expected错误。 - 其余隐含问题:
DataTable类型的dt仅完成声明未实例化,直接传入Fill方法运行时会触发空引用异常ComboBox的数据源属性名拼写不规范
修复后代码
Imports MySql.Data.MySqlClient Public Class Utama Private Sub LogoutToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles LogoutToolStripMenuItem.Click Me.Hide() Dim utama As New Login utama.Show() End Sub Private Sub KeluarToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles KeluarToolStripMenuItem.Click Me.Close() End Sub Private Sub SupplierToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles SupplierToolStripMenuItem.Click Me.Hide() Dim supplier As New Supplier supplier.Show() End Sub Private Sub ProdukToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ProdukToolStripMenuItem.Click Me.Hide() Dim Produk As New Produk Produk.Show() End Sub Private Sub CetakToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles CetakToolStripMenuItem.Click Me.Hide() Dim Cetak As New Cetak Cetak.Show() End Sub ' 类层级仅允许声明字段、属性、方法 Dim connection As New MySqlConnection("Server=127.0.0.1;Database=pembelian;Uid=root;Pwd=;") Dim da As New MySqlDataAdapter("select * from supplier", connection) Dim dt As New DataTable ' 完成DataTable实例化 ' 窗体加载事件中写入初始化执行逻辑 Private Sub Utama_Load(sender As Object, e As EventArgs) Handles MyBase.Load da.Fill(dt) ComboBox1.DataSource = dt ComboBox1.DisplayMember = "npwp" ComboBox1.ValueMember = "npwp" End Sub End Class
注意事项
- 全局持有数据库连接实例容易引发资源泄漏,建议按需创建、用完即释放
- 可在数据查询逻辑中新增异常捕获块,方便定位数据库连接、SQL执行类问题
内容的提问来源于stack exchange,提问作者Masa Depan
相关产品推荐
相关产品推荐

