首页 > 解决方案 > phpmyadmin 和 vb.net 上的相同查询得到不同的结果

问题描述

我从直接使用 phpmyadmin 和在 vb.net 上得到不同的查询结果。

我使用了这个查询SELECT * FROM tbllocation WHERE loc_name LIKE '%ROOM%'

这是 phpmyadmin 和数据库服务器版本:

这是 phpmyadmin 和数据库服务器版本。

以下是 phpmyadmin 的结果:

以下是 phpmyadmin 的结果

来自 vb.net 的结果:

来自 vb.net 的结果

这是我在 vb.net 中用于获取和显示查询结果的代码。

 cmd.CommandText = q
    dr = cmd.ExecuteReader
    Dim rowindex As Integer = 0
    If dr.Read Then
        While dr.Read
            MsgBox(dr(1))
            DataGridView1.Rows.Add(dr(1), dr(2), "", "")
            DataGridView1.Rows(rowindex).Tag = dr(0)
            rowindex += 1
        End While
    End If
    dr.Close()

标签: mysqlvb.netphpmyadmin

解决方案


每次你打电话给Read你前进到下一个记录。您Read在使用任何数据之前调用了两次,因此您丢弃了第一条记录。如果你想要一个If声明然后测试HasRows,而不是Read。也就是说,如果没有记录,If您就没有具体的事情要做,那么该声明是没有意义的。Else实际上,您的While循环可以完成您需要的一切。

编辑:事实上,我也建议摆脱循环。创建一个DataTable并调用其Load方法将数据读取器的内容加载到其中,然后将其绑定DataTable到网格。

编辑:更进一步,您似乎正在编辑数据,在这种情况下,我建议您根本不使用数据阅读器。使用数据适配器填充 a DataTable,将其绑定到网格(最好通过 a BindingSource),对 进行更改,DataTable然后使用相同的数据适配器保存更改。无论您当前正在做什么来保存更改,都只会使事情复杂化。


推荐阅读