Laden...

DELETE-Befehl funktioniert nicht

Erstellt von Blackbird vor 17 Jahren Letzter Beitrag vor 17 Jahren 1.746 Views
B
Blackbird Themenstarter:in
7 Beiträge seit 2005
vor 17 Jahren
DELETE-Befehl funktioniert nicht

Ich habe ein DataGridView, das mir die Werte der Datenbank anzeigt und ich möchte, dass es beim Drücken des Buttons bLöschen dieselben Daten in der Datenbank löscht. Deswegen analysiere ich zuerst die ausgewählte Reihe und lösche dann mit dem DELETE - Befehl die Werte aus der Datenbank. Allerdings kriege ich da immer nur die Fehlermeldung "Für mindestens einen erforderlichen Parameter wurde kein Wert angegeben." Ich weiß aber leider nicht, was am Code nicht stimmt. Sieht bzw. weiß jemand von euch vielleicht den Fehler?

private void bLöschen_Click(object sender, EventArgs e)
        {
            string englisch = dataGridView1[0, dataGridView1.CurrentRow.Index].Value.ToString();
            string deutsch = dataGridView1[1, dataGridView1.CurrentRow.Index].Value.ToString();

            const string connection = @"Provider=Microsoft.Jet.OLEDB.4.0;" + @"Data Source = c:\Vokabulator\Vokabeln.mdb;";

            OleDbConnection db = new OleDbConnection(connection);
            db.Open();

            OleDbCommand command = new OleDbCommand();
            command.Connection = db;

            command.CommandText = "DELETE Vokabeln.Englisch,Vokabeln.Deutsch FROM Vokabeln WHERE (((Vokabeln.Englisch)=" + englisch + ") AND ((Vokabeln.Deutsch)=" + deutsch + "))";

            command.ExecuteNonQuery();

            db.Close();
}
T
327 Beiträge seit 2006
vor 17 Jahren

Versuch mal als CommandText das:


"DELETE Vokabeln.Englisch, Vokabeln.Deutsch " + 
     "FROM Vokabeln WHERE " +
          "(Vokabeln.Englisch = '" + englisch + "') +
          "AND (Vokabeln.Deutsch = '" + deutsch + "')";

Verändert:

  1. Überflüssige Klammern raus
  2. Einfache Anführungszeichen vor und nach den Parametern in der WHERE Klausel
F
10.010 Beiträge seit 2004
vor 17 Jahren

Viel besser wären natürlich Parameter

B
Blackbird Themenstarter:in
7 Beiträge seit 2005
vor 17 Jahren

Das mit den Klammern hab ich von der SQL Ansicht der Access DB übernommen. Deswegen die vielen Klammern.

@FZelle: Was meinst du mit den Parametern? Genau da häng ich ja und ich wäre froh, wenn mir jemand etwas helfen könnte..

T
327 Beiträge seit 2006
vor 17 Jahren

Guckst du unter:

SqlAbfrage in C#

Da ist ein kleines Beispiel drin wie man Parameter verwenden kann, hier am Beispiel der ID (Parameter "@ID").

563 Beiträge seit 2004
vor 17 Jahren

Original von FZelle
Viel besser wären natürlich Parameter

Noch besser wären DataAdapters =) Wenn man schon mit einem DataGrid/DataGridView arbeitet sind die DataAdapters am effizientisten.

.unreal

F
10.010 Beiträge seit 2004
vor 17 Jahren

Die sind eher am einfachsten zu benutzen, nicht am effektivsten.