在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,重新显示已删除的行。我希望他们保持删除。
我该怎么做?
答案 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