VB.Net SQL DataAdapter 首次运行时未更新

Posted

技术标签:

【中文标题】VB.Net SQL DataAdapter 首次运行时未更新【英文标题】:VB.Net SQL DataAdapter Not updating on first run 【发布时间】:2017-07-07 10:37:06 【问题描述】:

我正在使用 SQL DataAdapter (sqlDa),单击复选框事件时,sqlDa 应该运行更新命令。

代码被调用,但更新事件实际上并没有触发,我不确定为什么。

我已经通过了,没有错误, 我已经运行了 SQL Profiler,它显示没有触发 SQL 事件 最初没有初始化器,所以创建了一个,绑定事件在我正在使用的复选框上

所以,我有点难过,需要一些帮助。

我正在使用的代码是

Public Sub New()

    InitializeComponent()

End Sub

Private Sub boundCheckBox_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles boundCheckBox.CheckedChanged
    ControlSettingsBindingSource.EndEdit()
    Me.ControlSettingsTableAdapter.Update(Me.BoundTestDataSet.controlSettings)
    Call diagnosticCheck(boundCheckBox.Checked) ' this is for diagnostic purposes only
End Sub

 Public Overloads Overridable Function Update(ByVal dataTable As boundTestDataSet.controlSettingsDataTable) As Integer
        Return Me.Adapter.Update(dataTable)
    End Function

在初始化程序中,这是我正在使用的控件

 'boundCheckBox
    '
    Me.boundCheckBox.AutoSize = True
    Me.boundCheckBox.DataBindings.Add(New System.Windows.Forms.Binding("Checked", Me.ControlSettingsBindingSource, "checkBoxSetting", True))
    Me.boundCheckBox.Font = New System.Drawing.Font("Microsoft Sans Serif", 18.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
    Me.boundCheckBox.Location = New System.Drawing.Point(10, 62)
    Me.boundCheckBox.Margin = New System.Windows.Forms.Padding(4, 3, 4, 3)
    Me.boundCheckBox.Name = "boundCheckBox"
    Me.boundCheckBox.Size = New System.Drawing.Size(590, 40)
    Me.boundCheckBox.TabIndex = 0
    Me.boundCheckBox.Text = "CheckBox Bound To 'checkBoxSetting'"
    Me.boundCheckBox.UseVisualStyleBackColor = True
    '

非常感谢任何和所有帮助

西蒙

【问题讨论】:

【参考方案1】:

发现问题

需要添加ControlSettingsBindingSource.ResetBindings(False)

Private Sub boundCheckBox_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles boundCheckBox.CheckedChanged
    ControlSettingsBindingSource.EndEdit()
    ControlSettingsBindingSource.ResetBindings(False)
    Me.ControlSettingsTableAdapter.Update(Me.BoundTestDataSet.controlSettings)
    Call diagnosticCheck(boundCheckBox.Checked) ' this is for diagnostic purposes only
End Sub

【讨论】:

以上是关于VB.Net SQL DataAdapter 首次运行时未更新的主要内容,如果未能解决你的问题,请参考以下文章

SQL 和 VB.net winform 的批量更新概念

VB.NET连接access数据库文件时提示“无效的授权说明”

将 SQL 命令从 vb .net 转换为 C#

VB.NET SQL 日期比较

VB.Net 中的 SQL 语句错误

VB.NET,两条SQL命令,构建字符串