Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 重新启动.exe时重新出现已删除的数据行_Database_Vb.net_Visual Studio - Fatal编程技术网

Database 重新启动.exe时重新出现已删除的数据行

Database 重新启动.exe时重新出现已删除的数据行,database,vb.net,visual-studio,Database,Vb.net,Visual Studio,在visual studio 2015社区中:“windows窗体应用程序(visual basic)” 对于我的问题,我创建了一个简单的。 我添加了一个基于服务的数据库:“BusinessDatabase.mdf” 在这个数据库中,我创建了一个具有以下属性的表:“Customers”: CREATE TABLE [dbo].[Customers] ( [Id] INT NOT NULL PRIMARY KEY IDENTITY, [Name] TEXT

在visual studio 2015社区中:“windows窗体应用程序(visual basic)”

对于我的问题,我创建了一个简单的。 我添加了一个基于服务的数据库:“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,删除的行就会重新出现。我希望他们保持删除状态


如何执行此操作?

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

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


我以前试过你的解决办法。但奇怪的是,它不起作用。。你是对的。clear方法只是从内存中删除行。您需要将行标记为已删除,以便在更新数据库时将行标记为已删除。您可以为每一行使用delete方法执行此操作,请参见
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