由于InvalidOperationException,无法从MySQL读取行
基本上这是我的代码,VisualStudio给了我以下错误消息:“System.InvalidOperationException”类型的未处理异常“发生在系统数据中”,它指向行.Fill(表)。 详细信息:“Fill:SelectCommand.Connection属性尚未初始化” 编辑:ListViewSale是我希望粘贴MySQL数据的ListViewBox 如果有人能给我一些关于错误的信息,我将非常感激。mysql登录信息在代码前面用以下代码处理:由于InvalidOperationException,无法从MySQL读取行,mysql,vb.net,Mysql,Vb.net,基本上这是我的代码,VisualStudio给了我以下错误消息:“System.InvalidOperationException”类型的未处理异常“发生在系统数据中”,它指向行.Fill(表)。 详细信息:“Fill:SelectCommand.Connection属性尚未初始化” 编辑:ListViewSale是我希望粘贴MySQL数据的ListViewBox 如果有人能给我一些关于错误的信息,我将非常感激。mysql登录信息在代码前面用以下代码处理: Dim connection As
Dim connection As New MySqlConnection(INFORMATION HERE)
Public Sub updateList()
Dim sqlQuery As String = "SELECT * FROM Produkt"
Dim sqlAdapter As New MySqlDataAdapter
Dim sqlCommand As New MySqlCommand
Dim Table As New DataTable
Dim i As Integer
With sqlCommand
.CommandText = sqlQuery
.Connection = connection
End With
With sqlAdapter
.SelectCommand = sqlCommand
.Fill(Table)
End With
For i = 0 To Table.Rows.Count - 1
With ListViewSale
.Items.Add(Table.Rows(i)("id"))
With .Items(.Items.Count - 1).SubItems
.Add(Table.Rows(i)("Name"))
.Add(Table.Rows(i)("Price"))
.Add(Table.Rows(i)("Quantity"))
.Add(Table.Rows(i)("Description"))
End With
End With
Next
End Sub
有几种方法可以更经济地满足您的需求:
专用dtProduct作为数据表
公共子更新列表()
Dim sqlQuery As String=“选择a、b、c、q、e。。。来自Produkt“
使用dbcon作为新的MySqlConnection(mySQLConnStr)
使用cmd作为新的MySqlCommand(sqlQuery,dbcon)
dtProduct=新数据表()
dbcon.Open()
dtProduct.Load(cmd.ExecuteReader)
终端使用
终端使用
...
- 但是,您可以使用全局连接字符串,这样就不会在代码中到处乱丢
使用
块来关闭和处理具有.dispose
方法的东西。这允许他们释放分配的资源DataAdapter
来填充表格。上面的代码使用DataReader
来完成此操作DataAdpater
,请将其设置为全局并完全配置。这将防止您再次运行该代码。daProduct.Fill(dtProduct)
will(can)刷新内容,只获取任何新的或更改的数据
最后,ListView
非常不适合db操作。首先,所有内容都存储为字符串。这意味着价格和数量等数字必须转换回使用(或更新)。其次,使用DataGridView
,填充LV的所有代码都可以替换为:
dgvProd.DataSource=dtProduct
DGV将创建和列,并添加所有行,而无需循环或创建每一行。数据保留在
数据表中并键入。是否阅读错误消息?单击查看详细信息
以…获取更多详细信息已检查数据库中是否存在信息。阅读异常-让我们看看它…您需要有连接。在执行命令之前打开。在您的情况下,在SqlAdapter.Fill之前谢谢您的回答!但是,我在这一行上得到了相同的错误:“dtProduct.Load(cmd.ExecuteReader)”-ErrorMessage:“对象引用未设置为对象的实例“谢谢!我是否仍会对每个循环使用相同的方法将其打印到ListViewBox?我还将尝试使用DataGridView来查看是否可以让它工作:)这一行将构建并填充它。它们非常容易与基本的行为/外观一起使用,但是有很多属性和事件,所以你可以做任何你想做的事情。ListView将所有内容存储为字符串,并且没有绑定-这对db来说太可怕了