重新启动.exe时重新显示已删除的数据行

时间:2017-02-05 18:25:47

标签: database vb.net visual-studio

在visual studio 2015社区:'windows forms application(visual basic)'

对于我的问题,我创建了一个简单的Form。 我添加了一个基于服务的数据库:“BusinessDatabase.mdf” 在这个数据库中,我创建了一个表:“Customers”,它具有以下属性:

CREATE TABLE [dbo].[Customers]
    (
        [Id] INT NOT NULL PRIMARY KEY IDENTITY, 
        [Name] TEXT NULL
    )

表格代码:

Public Class Form
    Private Sub Add_button_Click(sender As Object, e As EventArgs) Handles Add_button.Click
        Dim WorkRow As DataRow = BusinessDatabaseDataSet.Customers.NewRow()
        WorkRow(1) = "John Doe "
        BusinessDatabaseDataSet.Customers.Rows.Add(WorkRow)

        Me.Validate()
        Me.CustomersBindingSource.EndEdit()
        Me.CustomersTableAdapter.Update(Me.BusinessDatabaseDataSet.Customers)
    End Sub

    Private Sub Delete_button_Click(sender As Object, e As EventArgs) Handles Delete_button.Click
        BusinessDatabaseDataSet.Customers.Clear()
    End Sub

    Private Sub Form_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Me.CustomersTableAdapter.Fill(Me.BusinessDatabaseDataSet.Customers)

    End Sub
End Class

我可以很好地向表中添加行。当我退出表单并重新启动调试文件夹中的.exe时,数据仍按预期存在。

但是当我尝试从表中删除行时,退出表单并重新启动调试文件夹中的.exe,重新显示已删除的行。我希望他们保持删除。

我该怎么做?

1 个答案:

答案 0 :(得分:0)

您正在调用clear方法,该方法将从内存中删除DataTable中的行,但不会返回SQL Server文件。您需要在clear语句之后调用Datatable适配器上的更新。请尝试以下方法:

编辑回答 - clear方法只清除内存中的行。要实际删除它们,您需要将它们标记为DELETED,然后更新数据源,请参阅下面的修订代码

Private Sub Delete_button_Click(sender As Object, e As EventArgs) Handles Delete_button.Click
    'BusinessDatabaseDataSet.Customers.Clear()
    For Each rw As DataRow In Me.BusinessDatabaseDataSet.Customers.rows
        rw.Delete()
    Next
    CustomersTableAdapter.Update(Me.BusinessDatabaseDataSet.Customers)
End Sub