gpt4 book ai didi

mysql - 由于 InvalidOperationException,无法从 MySQL 读取行

转载 作者:可可西里 更新时间:2023-11-01 08:25:32 25 4
gpt4 key购买 nike

所以基本上这是我的代码,Visual Studio 给我以下错误消息:“系统数据中出现类型为“System.InvalidOperationException”的未处理异常”,它指向 .Fill(Table) 行。详细信息:“填充:SelectCommand.Connection 属性尚未初始化””

编辑:ListViewSale 是我希望粘贴 MySQL 数据的 ListViewBox。

如果有人能给我一些关于错误的意见,我将不胜感激。 mysql 登录信息在前面的代码中用以下代码处理:

  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

最佳答案

有几种方法可以更经济地完成您想要的事情:

Private dtProduct As DataTable

Public Sub updateList()
Dim sqlQuery As String = "SELECT a,b,c,q,e ... FROM Produkt"

Using dbcon As New MySqlConnection(mySQLConnStr)
Using cmd As New MySqlCommand(sqlQuery, dbcon)

dtProduct = New DataTable()
dbcon.Open()
dtProduct.Load(cmd.ExecuteReader)

End Using
End Using
...
  1. 不要使用全局连接 对象。创建它,使用它并处理它
    • 但是,您可以使用全局连接字符串,这样它就不会散落在您的代码中
  2. 使用 Using block 来关闭和处置具有 .Dispose 方法的事物。这允许他们释放他们分配的资源。
  3. 不是将 SQL 和连接设置为 Command 对象的属性,而是将它们作为构造函数参数传递。这只是个人喜好,但是一旦养成习惯,它会使代码更加简洁,并且您不太可能忘记那些关键项。
  4. 如果您在 SQL 中指定列,则可以控制它们出现的顺序。
  5. 不需要 DataAdapter 来填充表格。上面的代码使用 DataReader 来执行此操作。

如果您确实使用了 DataAdpater,请将其设为全局并对其进行全面配置。这将避免您再次运行该代码。 daProduct.Fill(dtProduct) 将(可以)刷新内容,只获取任何新的或更改的数据。

最后,ListView 非常不适合数据库操作。首先,所有内容都存储为字符串。这意味着像 Price 和 Quantity 这样的数字必须转换回来使用(或更新)。其次,使用 DataGridView,填充 LV 的所有代码都可以替换为:

dgvProd.DataSource = dtProduct

DGV 将创建和列,并添加所有行,无需循环或创建每一行。数据保留在 DataTable 和 Typed 中。

关于mysql - 由于 InvalidOperationException,无法从 MySQL 读取行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36454165/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com