Ich habe den folgenden Code, der eine Auswahl basierend auf einem Zeichenfolgenfeld und einem Datum und wenn es nichts zurückgibt dann versucht es, ein Update zu tun. Das select gibt etwas zurück, aber wenn ich ein Update mache, wird die Variable "affected" auf Null gesetzt. Könnte das an Daten liegen? Meine Datumsvariable wird auf {in britischem Format) {02/06/2016 13:10:00} gesetzt, wenn ich sie überprüfe, also hat sie eine Zeitkomponente.oledbcommand ExecuteNonQuery wird nicht aktualisiert
// DateTime Md, string ht = these are set at this point
var conn = new OleDbConnection();
conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\MyPath\\MyDb.accdb";
conn.Open();
var cmdSel = conn.CreateCommand();
cmdSel.CommandText = @"SELECT * FROM MyTable WHERE Md = @MD AND [email protected]";
cmdSel.Parameters.AddWithValue("@MD", Md);
cmdSel.Parameters.AddWithValue("@HT", ht);
var da = new OleDbDataAdapter(cmdSel);
var ds = new DataSet();
da.Fill(ds);
if (ds.Tables[0].Rows.Count > 0)
{
var cmd = conn.CreateCommand();
cmd.CommandText = @"UPDATE MyTable SET [email protected] WHERE Md = @MD AND [email protected]";
cmd.Parameters.AddWithValue("@MD", Md);
cmd.Parameters.AddWithValue("@HT", ht);
cmd.Parameters.AddWithValue("@HS", hs);
var affected = cmd.ExecuteNonQuery();
}
Ist es Updates in Ihrem Zugriff? Wie sieht Ihr Update-Befehl nach dem Hinzufügen von Werten aus? Was sind Ihre Spaltentypen? –
Sie sollten auschecken [Können wir AddWithValue() bereits beenden?] (Http://blogs.msmvps.com/jcoehoorn/blog/2014/05/12/can-we-stop-using-addwithvalue-ready/) und beenden Sie die Verwendung von '.AddWithValue()' - es kann zu unerwarteten und überraschenden Ergebnissen führen ... –
Verwenden Sie auch 'using' Anweisung, um Ihre Verbindung und Befehl automatisch zu entsorgen. –