2017-11-01 9 views
0

Wenn ich meinen Code im Debugger ausführen und ich meine Maus über die Parameter schweben, haben sie die richtigen Werte in ihnen. Es aktualisiert meine Datenbank einfach nicht, aber wenn ich die Abfrage kopiere und in die Datenbank lege, funktioniert sie ohne Probleme.einfache Update-Abfrage funktioniert nicht, aber wenn ich es in die Datenbank selbst setzen funktioniert es

Die Parameterwerte sind:

id = 7 
omschrijving = douche muntjes 
prijs = 0,5 
catagorie = faciliteiten 

ich die Verbindung geprüft Tring durch eine INSERT-Abfrage verwenden und dass Datensätze zu meiner Datenbank hinzufügt. Und es gibt eine ID mit dem Wert 7 in der Datenbank.

Wenn ich eine Einfügeabfrage oder eine Löschabfrage über meinen C# -Code ausführen, funktioniert es, es ist nur die Update-Anweisung, die nicht funktioniert. Wenn jemand das Problem sieht, bitte hilf mir.

public static void wijzigprijs(int id, string omschrijving, decimal prijs, string catagorie) 
    { 
     try 
     { 
      try 
      { 
       OleDbConnection verbinding = new OleDbConnection(
       @"Provider=Microsoft.ACE.OLEDB.12.0; 
      Data Source=..\..\..\La_Rustique.accdb; 
      Persist Security Info=False;"); 
       verbinding.Open(); 
      } 
      catch (Exception ex) 
      { 
       MessageBox.Show(ex.Message); 
      } 
      OleDbCommand query = new OleDbCommand(); 
      query.CommandText = @"UPDATE prijslijst 
           SET omschrijving = @omschrijving, 
            prijs = @prijs, 
            catagorie = @catagorie 
           WHERE id = @id"; 

      query.Parameters.Add(new OleDbParameter("@id", OleDbType.Integer)); 
      query.Parameters["@id"].Value = id; 
      query.Parameters.Add(new OleDbParameter("@omschrijving", OleDbType.VarChar)); 
      query.Parameters["@omschrijving"].Value = omschrijving; 
      query.Parameters.Add(new OleDbParameter("@prijs", OleDbType.Decimal)); 
      query.Parameters["@prijs"].Value = prijs; 
      query.Parameters.Add(new OleDbParameter("@catagorie", OleDbType.VarChar)); 
      query.Parameters["@catagorie"].Value = catagorie; 

      query.Connection = verbinding; 
      query.ExecuteNonQuery(); 
      MessageBox.Show("succesvol gewijzigd"); 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.Message); 
     } 
     finally 
     { 
      verbinding.Close(); 
     } 

    } 
+0

Was sind die Parameterwerte? – 3615

+0

id = 7, omschrijving = Dusche muntjes, prijs = 0,5, catagorie = faciliteiten –

+0

Definieren Sie Ihre Befehlstyp query.CommandType = CommandType.Text und versuchen, Ihre Abfrage in einzelne Zeile 'query.CommandText = schreiben @ "UPDATE prijslijst SET omschrijving = @omschrijving, prijs = @prijs, catagorie = @catagorie WHERE id = @id"; ' – cagri

Antwort

1

EDIT UPDATE

Schauen Sie sich diesem Thema. Hier erklärt er, wie Sie Variablen mit OleDbCommand

Variables with OleDbCommand

Dies ist verwenden sollten, wie Sie in der Regel wird es tun, wenn SQLCommand Parameter: Ich weiß, das ganz Ihre Fragen beantworten tut, aber wenn ich verwenden SQLCommand ich benutze diese Code immer, wenn ich mit Variablen aktualisieren oder einfügen möchte:

string query = @"UPDATE prijslijst 
          SET omschrijving = @omschrijving, 
           prijs = @prijs, 
           catagorie = @catagorie 
          WHERE id = @id"; 

         SqlCommand cmd = new SqlCommand(query, connDatabase); 

         cmd.Parameters.Add("@id", SqlDbType.integer).Value = 7; 
         cmd.ExecuteNonQuery(); 
         connDatabase.Close(); 

So sollten Sie in der Lage sein, das gleiche zu tun. Hoffe das wird dir helfen.

1

Ich habe nie gesehen, OleDB-Abfragen in der obigen Syntax geschrieben. Um es anders zu sagen: OleDB verwendet einfach keine benannten Parameter, es verwendet nur die Position.

query.CommandText = @"UPDATE prijslijst 
          SET omschrijving = ?, 
           prijs = ?, 
           catagorie = ? 
          WHERE id = ?"; 

und dann im Code unten, dass die Parameter in der Reihenfolge von oben hinzufügen:

Versuchen Sie, Ihre SQL-Anweisung wie folgt zu ändern.

+1

Okay, habe das nicht sehr gut formuliert. OleDb versteht keine benannten Parameter - siehe [diesen Beitrag] (https://stackoverflow.com/questions/2407685/oledbparameters-and-parameter-names). – nepdev

Verwandte Themen