Sql Delete

  • VB.NET

Es gibt 13 Antworten in diesem Thema. Der letzte Beitrag () ist von xXAlphaXx.

    Sql Delete

    absoluter Anfänger kann sich jemand meiner annehmen und sagen was da falsch ist..... ?(

    VB.NET-Quellcode

    1. Dim olecmd As New OleDb.OleDbCommand("DELETE Mitarbeiter.MitarbeiterID, Mitarbeiter.Vorname, Mitarbeiter.Nachname, Mitarbeiter.Straße, PLZ.PLZ, PLZ.ORT FROM Mitarbeiter;", Con)


    mitarbeiter hängt mit einer 1:n beziehung mitarbeiter_verleih sowie 1:n mit PLZ

    lg
    Also du müsstest jetzt genau sagen was du machen willst?
    Wenn du alle einträge von allen spalten löschen willst

    SQL-Abfrage

    1. DELETE FROM Mitarbeiter;


    Wenn du einzelne Zeilen abfangen willst

    SQL-Abfrage

    1. DELETE FROM Mitarbeiter WHERE ID = 123;


    Kurz die Syntax

    SQL-Abfrage

    1. DELETE FROM [Von welcher Tabelle] WHERE [Wo in der Spalte der Eintrag ist]


    DROP ist für Tabellenlöschvorgänge gedacht

    SQL-Abfrage

    1. set foreign_key_checks = 0;
    2. DROP table [Tabellenname];
    3. set _foreign_key_checks = 1;

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „xXAlphaXx“ ()

    Löschen kannst du ihn wenn ich mich nicht irre mit:

    VB.NET-Quellcode

    1. ="DELETE * FROM Tabelle"


    Doch wie du die Textbox anbindest weiss ich nicht richtig. Und bevor ich was falsches diesbezüglich schreibe lass ich diese Frage mal offen

    VB.NET-Quellcode

    1. Dim olecmd As New OleDb.OleDbCommand("Delete from Kunden where ("" Strasse = '" & txtstrasse.Text.ToString & "', Titelid = " & derTitel & ", Vorname = '" & txtvorname.Text.ToString & "', Nachname = '" & txtnachname.Text.ToString & "', Kundenid = " & txtkundenid.Text & """)", Con)


    Habs jetzt mal so gemacht funktioniert aber er löscht mir die komplette Tabelle :D möchte aber nur einen einzelnen Datensatz gg

    Lg
    Ich würde es für den anfang auf einer Extrem umständlichen Variante machen aber die ist wie gesagt Extrem umsändlich.
    Aber wenn du willst kann ich sie dir denoch erklären

    Oder versuchs mal mit

    SQL-Abfrage

    1. DELETE FROM Mitarbeiter WHERE ID = 123;

    Wie gesagt Umständlicher gehts nicht mehr.
    Ich würde bis ich es weiss wie es geht was du vor hast vorerst für den Anfang für jeden "Kunden" eine eigene Tabelle in die Datenbank machen

    longlekker schrieb:

    VB.NET-Quellcode

    1. Dim olecmd As New OleDb.OleDbCommand("Delete from Kunden where ("" Strasse = '" & txtstrasse.Text.ToString & "', Titelid = " & derTitel & ", Vorname = '" & txtvorname.Text.ToString & "', Nachname = '" & txtnachname.Text.ToString & "', Kundenid = " & txtkundenid.Text & """)", Con)


    Habs jetzt mal so gemacht funktioniert aber er löscht mir die komplette Tabelle :D möchte aber nur einen einzelnen Datensatz gg

    Lg


    Wo hast Du denn den Mist her? ^^

    Kriterien im WHERE-Teil des SQL-Statements werden normalerweise über Operatoren wie z.B. AND oder OR verbunden und auf gar keinen Fall über ein Komma.

    Also wäre es so richtig:

    VB.NET-Quellcode

    1. "DELETE FROM Kunden WHERE Strasse = '" & txtstrasse.Text & "' AND Titelid = '" & derTitel & "' AND ....


    Den Rest der Kriterien solltest Du nun selber problemlos anhängen können.

    Öhem ... die Bezeichnung "derTitel" ist wirklich korrekt so?

    Gruß

    Rainer
    Hallo,
    hoffe ich habe das Problem richtig verstanden. Übrigens vermeidet man mehrere gleiche Tabellen für unterschiedliche Kunden, denn es gibt die gleichen Spalten und bringt meiner Meinung nach nur Nachteile.

    Probiers mal so:

    SQL-Abfrage

    1. Dim olecmd As New OleDb.OleDbCommand("DELETE FROM Kunden WHERE Strasse = '" & txtstrasse.Text & "' AND Titelid = " & derTitel.Text & " AND Vorname = '" & txtvorname.Text & "' AND Nachname = '" & txtnachname.Text & "' AND Kundenid = " & txtkundenid.Text & ", Con)


    ToString musst du nicht anhängen, es ist ja schon ein String.



    Gruß

    Patrick1993 schrieb:

    DELETE FROM Mitarbeiter WHERE ID = 123;
    Hast du von mir :D
    -> So löscht man eben einen Datensatz.

    SQL-Abfrage

    1. DELETE FROM [Tabellenname] WHERE [PRIMARY KEY Spalte (empfohlen) oder andere Spalten] [Operator z.B. "=", oder ">"] [Datenfeldinhalt];



    Zusätzlich kann man bei der WHERE-Klausel Mehrere Spalten überprüfen, indem man sie mit einem logischen Operator (AND, OR, NOT) verknüpft.

    SQL-Abfrage

    1. DELETE FROM Mitarbeiter WHERE Abteilung = Vertrieb AND Pnal > 59;


    Heißt:
    Lösche alle Datensätze wo Mitarbeiter in der Abteilung Vertrieb arbeiten und deren Personalnummer größer als 59 ist.
    [MySQL]
    DELETE FROM Mitarbeiter WHERE Abteilung = Vertrieb AND Pnal > 59;[/MySQL]

    Wobei das SQL-Statement einen Error auslösen würde. :whistling:

    Du hast die Hochkommas vergessen:

    [MySQL]
    DELETE FROM Mitarbeiter WHERE Abteilung = 'Vertrieb' AND Pnal > 59;[/MySQL]

    Gruß

    Rainer