vb.net - 我的数据没有显示在数据库的文本框中
问题描述
这是我尝试过的代码。这段代码在我的测试表单上并且可以工作,但是现在在我的最终系统中它不起作用,尽管它们是相同的。
Dim cmd As OleDbCommand = New OleDbCommand("SELECT * FROM Products where Barcode like '" & Barcodetxt.Text & "'", myConnection)
Dim userFound As Boolean = False
Dim dr As OleDbDataReader = cmd.ExecuteReader
Dim da As New OleDbDataAdapter
If (dr.Read() = True) Then
While dr.Read
userFound = True
prdct = dr("Product")
prc = dr("Price")
brcddb = dr("BarCode")
dscrtn = dr("description")
End While
TextBox1.Text = prc
Barcodetxt.Text = ""
ProducttxtBE.Text = prdct
Subtotaltxt.Text = prc
DescriptionBE.Text = dscrtn
pricetxtBE.Text = prc
BarcodetxtBE.Text = brcddb
Quantitytxt.Text = 1
Timer1.Enabled = False
解决方案
每次调用时Read
,您都会前进到下一个记录。如果您已经阅读了最后一条记录并Read
再次调用,则您会跳过最后一条记录,因此没有数据。您要检索多少条记录?估计是一个。这意味着您需要调用多少次Read
?一次。你打了多少次电话Read
?两次。看到问题了吗?
您需要将它们放在一起并学习如何使用Read
方法和HasRows
属性。以下是一些场景以及您应该如何使用这些成员:
- 您正在检索零行或一行,并且您想在每种情况下做一些不同的事情。在这种情况下,您将调用
Read
并捕获结果。如果是则按要求执行False
,即没有行,如果是则使用数据True
,例如
If reader.Read() Then
myTextBox.Text = reader.GetString(reader.GetOrdinal("Column1"))
Else
MessageBox.Show("No results")
End If
- 您正在检索零个或多个行,如果没有行,您不需要做任何特别的事情。在这种情况下,您将
Read
在循环中调用并在阅读时使用每条记录,例如
While reader.Read()
'Use current record here.
End While
- 您正在检索零个或多个行,并且如果没有行,您想要做一些特定的事情。在这种情况下,您将用于
HasRows
确定是否有行,如果没有则按要求执行,然后Read
如果有行则在循环中调用,例如
If reader.HasRows Then
While reader.Read()
'Use current record here.
End While
Else
MessageBox.Show("No results")
End If
目前尚不完全清楚您的一般情况是什么,但您需要确定是否调用Read
,如果是,调用多少次,以及是否测试HasRows
。Read
不过,作为一项规则,您需要在每次通话后立即实际使用当前记录。如果您曾经Read
两次调用而中间没有使用数据,那么您几乎肯定做错了。
推荐阅读
- amazon-web-services - 识别目标组中的 AWS 不健康主机
- html - 无法在我的 html 页面中集成 mp4 视频
- jquery - JQuery 新行
- jhipster - 用于微服务的 JHipster-Registry Swagger UI 使用 UAA 表示 invalid_token
- scala - Scala嵌套for循环
- php - 为可在 Controller Laravel 5.5 中使用的视图中的全局变量设置值
- arrays - 如何以最有效的方式将很长的字符串转换为字符串数组?
- c++ - uchar* 到 std::vector
然后回来? - c# - C# - OutOfMemoryException 在 JSON 文件中保存列表
- c# - 运行代码 Visual Studio 时 Mac OS 终端出现问题