这主要是在标题...我使用VB(显然,见下文),但我是一个完全初学者与视觉工作室。
下面是我正在使用的测试代码(这是一个简单的测试按钮,我设计用来测试其他代码中的问题):
Private Sub Test_Click(sender As Object, e As EventArgs) Handles Test.Click
Dim FDBdataset As New FDBDataSet()
Dim FDBTableAdapter As New FDBDataSetTableAdapters.T_PicturesTableAdapter
For Each row As DataRow In FDBTableAdapter.GetData()
row.BeginEdit()
If row("id").ToString = 58672.ToString Then
row.BeginEdit()
Console.Write("Previous Value = " & row("ImgFileName").ToString)
row("ImgFileName") = "Tagada"
row.EndEdit()
Console.WriteLine(", Current Row Value = " & row("ImgFileName").ToString & " - HasChanges : " & FDBdataset.HasChanges())
End If
Next
FDBTableAdapter.Update(FDBdataset)
控制台中的输出为:
Previous Value = Aphidecta_obliterata_58672, Current Row Value = Tagada - HasChanges : False
我不明白什么是错的,以及如何纠正它...我会非常感谢这里的一些帮助!
TableAdapter似乎设置正确,我可以从中读取,解析行;显示字段值等...更新数据源设计器正确设置的方法报告。代码运行无误,但不影响DB内容。
1条答案
按热度按时间8ulbf1ek1#
为什么您会认为
FDBdataset
有任何更改?您在哪里对它进行了更改?您有以下代码:GetData
返回一个新的DataTable
,所以你对DataTable
的修改完全独立于FDBdataset
,使用其中一个,但不要同时使用。根据上面的代码,您不需要
DataSet
,只需使用GetData
返回的DataTable
即可:注意我也整理了你的代码,如果你要使用一个类型化的
DataSet
,那就使用它。如果出于某种原因确实需要
DataSet
,请对其进行更改,而不是更改不相关的DataTable
:第二个代码片段可能需要一些调整,但我认为它应该工作。
所以,这个故事的寓意是
Fill
方法填充了一个现有的DataTable
,它可以是DataSet
的一部分,但不是必须的,而GetData
方法创建了一个新的DataTable
,填充它并返回它,这个新的DataTable
不是任何DataSet
的一部分。