mysql - phpmyadmin 和 vb.net 上的相同查询得到不同的结果
问题描述
我从直接使用 phpmyadmin 和在 vb.net 上得到不同的查询结果。
我使用了这个查询SELECT * FROM tbllocation WHERE loc_name LIKE '%ROOM%'
这是 phpmyadmin 和数据库服务器版本:
以下是 phpmyadmin 的结果:
来自 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()
解决方案
每次你打电话给Read
你前进到下一个记录。您Read
在使用任何数据之前调用了两次,因此您丢弃了第一条记录。如果你想要一个If
声明然后测试HasRows
,而不是Read
。也就是说,如果没有记录,If
您就没有具体的事情要做,那么该声明是没有意义的。Else
实际上,您的While
循环可以完成您需要的一切。
编辑:事实上,我也建议摆脱循环。创建一个DataTable
并调用其Load
方法将数据读取器的内容加载到其中,然后将其绑定DataTable
到网格。
编辑:更进一步,您似乎正在编辑数据,在这种情况下,我建议您根本不使用数据阅读器。使用数据适配器填充 a DataTable
,将其绑定到网格(最好通过 a BindingSource
),对 进行更改,DataTable
然后使用相同的数据适配器保存更改。无论您当前正在做什么来保存更改,都只会使事情复杂化。
推荐阅读
- node.js - 如何在键中复制带有特殊字符的 S3 对象
- java - 在 Python 中复制这个 Java 哈希
- javascript - 在多个元素的数据属性上添加更改侦听器
- wso2 - 我想访问 WSO2 管理员时遇到问题
- django - 如何编辑 Django 管理员用户社交身份验证列表页面?
- keras - 如果然后在自定义不可训练的 keras 层内
- java - 如何将 java sdk 连接到 qldb?
- dbpedia - 2019 DBpedia 是否有“另见”数据集?
- python - 为什么我不能 pip 安装任何超过 2.7 的 python 模块,有没有解决方案?
- c# - 从另一个窗口复制文本的代码