mysql - 在 vb.net 中使用 mysql 填充 ListView 的速度

标签 mysql vb.net performance listview

这是我用于填充 ListView 的代码:

    Dim itms As ListViewItem
    Dim itm As New List(Of ListViewItem)
    Dim itemcoll(2) As String

    Dim strQ As String = String.Empty
    strQ = "SELECT COLOR_CODE,DESC from COLORS"
    cmd = New MySqlCommand(strQ, con)
    Try
        con.Open()
        rs = cmd.ExecuteReader
        lstview.Items.Clear()
        Application.DoEvents()
        lstview.SuspendLayout()
        lstview.BeginUpdate()
        lstview.Visible = False
        While rs.Read
            itemcoll(0) = IIf(Not IsDBNull(rs.Item("COLOR_CODE")), rs.Item("COLOR_CODE"), 0)
            itemcoll(1) = IIf(Not IsDBNull(rs.Item("DESC")), rs.Item("DESC"), 0)

            itms = New ListViewItem(itemcoll)
            'lstview.Items.Add(itms)
            itm.Add(itms)
        End While
        rs.Close()
        lstview.Items.AddRange(itm.ToArray)
        lstview.EndUpdate()
        lstview.Visible = True
        lstview.ResumeLayout()


    Catch ex As Exception
        MsgBox(ex.Message)
    Finally
        con.Close()
    End Try

这段代码对于填充 10,000+ 行很快,但是如果我填充超过 50, 000,它就很慢,填充 ListView 需要 2 秒,速度正常还是慢?

还有什么其他技术可以加速填充?我使用了一些方法来提高填充速度。

感谢您的帮助。

最佳答案

试试这个示例。有时不必要地写入占位符变量会降低性能,但理论上执行时间应该不会有太大差异。

Dim itm As New List(Of ListViewItem)
Dim strQ As String = "SELECT COLOR_CODE,DESC from COLORS"
cmd = New MySqlCommand(strQ, con)


lstview.Items.Clear()
Application.DoEvents()
lstview.SuspendLayout()
lstview.BeginUpdate()
lstview.Visible = False

Try
    con.Open()

    rs = cmd.ExecuteReader
    While rs.Read            
        itm.Add(New ListViewItem({Convert.ToString(rs.Item("COLOR_CODE")),
                                 Convert.ToString(rs.Item("DESC"))}))
    End While
Catch ex As Exception
    MsgBox(ex.Message)
Finally
    con.Close()

    lstview.Items.AddRange(itm)
    lstview.EndUpdate()
    lstview.Visible = True
    lstview.ResumeLayout()
End Try

关于mysql - 在 vb.net 中使用 mysql 填充 ListView 的速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18479121/

相关文章:

PHP & Wordpress : How do I display a list of all users who have completed a custom user meta field, 省略那些字段留空的地方?

Mysql Join多个表字段

performance - 对于磁盘/RAM,访问时间和读/写速度之间的关系是什么?

python - Eratosthenes 筛法速度比较 : Python vs Julia

php - mysql更新,性能WHERE检查与不检查

mysql - 如何比较mysql中单列中的2行数据值

MySQL Workbench 无法连接到任何数据库?

xml - VB.net 将 XML 元素读入组合框

c# - 如何将图像从剪贴板保存到 UWP 中的文件

asp.net - json字符串从vb.net端到asp.net