2017-02-05 4 views
0

in Visual Studio 2015 Community Neustart: 'Windows Forms-Anwendung (Visual Basic)'Gelöschte Datenzeilen wieder auftauchen, wenn .exe

Für meine Frage mich ein einfaches Form erstellt. Ich habe eine Service-basierte Datenbank: "BusinessDatabase.mdf" In dieser Datenbank Ich habe eine Tabelle erstellt: "Kunden" mit den folgenden Attributen:

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

Formularcode:

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 

ich hinzufügen Zeilen an den Tisch, gut. Wenn ich das Formular verlasse und die EXE-Datei im Debug-Ordner neu starte, sind die Daten immer noch wie vorgesehen vorhanden.

Aber wenn ich versuche, Zeilen aus der Tabelle zu löschen, beenden Sie das Formular und starten Sie die .exe im Debug-Ordner die gelöschten Zeilen wieder angezeigt werden. Ich möchte, dass sie gelöscht bleiben.

Wie kann ich das tun?

Antwort

0

Sie rufen die clear-Methode auf, die die Zeilen aus der DataTable im Speicher, aber nicht in der SQL Server-Datei entfernt. Sie müssen das Update auf dem Datatable-Adapter nach der clear-Anweisung aufrufen. Versuchen Sie Folgendes:

Bearbeitete Antwort - Die Clear-Methode löscht nur die Zeilen im Speicher. um sie tatsächlich löschen müssen Sie sie als gelöscht markieren und dann die Datenquelle unter überarbeitete Code siehe aktualisieren

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 
+0

ich Ihre Lösung vor versucht haben. Aber seltsamerweise funktioniert es nicht. – vthomas1

+0

. Sie haben Recht. Die Clear-Methode entfernt nur die Zeilen aus dem Speicher. Sie müssen die Zeilen als gelöscht markieren. Wenn Sie also die Datenbank aktualisieren, werden die Zeilen zum Löschen markiert. Sie können dies mit der Löschmethode für jede Zeile tun, siehe https://msdn.microsoft.com/en-us/library/system.data.datarow.delete(v=vs.110).aspx – TomShantisoft

+0

Vielen Dank! Ich habe es funktioniert. – vthomas1

Verwandte Themen