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();
}
Versuch mal als CommandText das:
"DELETE Vokabeln.Englisch, Vokabeln.Deutsch " +
"FROM Vokabeln WHERE " +
"(Vokabeln.Englisch = '" + englisch + "') +
"AND (Vokabeln.Deutsch = '" + deutsch + "')";
Verändert:
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..
Guckst du unter:
Da ist ein kleines Beispiel drin wie man Parameter verwenden kann, hier am Beispiel der ID (Parameter "@ID").
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
Die sind eher am einfachsten zu benutzen, nicht am effektivsten.