Microsoft Access comando di AGGIORNAMENTO utilizzando C# OleDbConnection e il Comando NON funziona

Sto utilizzando Microsoft Access, purtroppo, a causa di forze maggiori e cercando di aggiornare un record senza fortuna.

Questo è il codice:

private void UpdateContact(Contact contact)
{
    using (OleDbConnection db = new OleDbConnection(_connString))
    {
        string query = "UPDATE [Contact] SET [FirstName] = @FirstName, [LastName] = @LastName, [MobileNumber] = @MobileNumber WHERE [Id] = @Id";

        OleDbCommand cmd = new OleDbCommand(query, db) { CommandType = CommandType.Text };
        cmd.Parameters.AddWithValue("@Id", contact.Id);
        cmd.Parameters.AddWithValue("@FirstName", contact.FirstName);
        cmd.Parameters.AddWithValue("@LastName", contact.LastName);
        cmd.Parameters.AddWithValue("@MobileNumber", contact.MobileNumber);

        db.Open();

        int rowsAffected = cmd.ExecuteNonQuery();

        db.Close();
    }
}

Tutto sembra andare bene, non fa eccezione, ma non rowsAffected. Restituisce sempre 0.
Ho controllato i valori durante il debug e la sua corretta che dovrebbe persistere.
L’accesso a file creati con MS Access 2007, ma il suo tipo di 2002-2003.

Idea di cosa sto facendo di sbagliato?

OriginaleL’autore George Taskos | 2011-01-03

2 Replies
  1. 5

    provare

    string query = "UPDATE [Contact] SET [FirstName] = ? [LastName] = ?, [MobileNumber] = ? WHERE [Id] = ?"

    Aggiungere i tuoi parametri in ordine di istruzione, vale a dire il nome…id

    E ‘stato molto tempo…grazie per il suggerimento, mi ha salvato dalla testa bangin’
    MS Access fa davvero schifo. Anche se non è quello standard SQL regole. Sto passando i parametri per la mia query e citando il nome dei parametri nella query SQL, tuttavia MS access non è ignorando il nome del parametro e prendendo in sequenza di campo che compaiono nella query. Davvero un comportamento strano di un buon database di back-end.

    OriginaleL’autore kd7

Lascia un commento