Witam
Mam problem ze stworzeniem UpdateCommand dla mojego adaptera. Próbuję czymś takim:
adapter.UpdateCommand = new MySqlCommand("UPDATE USERS set NICK = @NICK where UID = @UID", con);
adapter.UpdateCommand.Parameters.Add("@NICK", MySqlDbType.VarChar, 25, "NICK");
adapter.UpdateCommand.Parameters.Add("@UID", MySqlDbType.Int16, 11, "UID");
co przy próbie wykonania niestety kończy się błędem:
"Concurrency violation: the UpdateCommand affected 0 of the expected 1 records."
Z bazy nie korzysta nikt poza mną, więc konflikt dostępu nie występuje. Zapytanie skonstruowane jest poprawnie. O co może chodzić?
Gdy wrzuciłem adapter.UpdateCommand.CommandText.ToString() w naprędce stworzony label, okazało się że egzekwowane zapytanie ma dokładnie taką postać, jaką wklepałem przy inicjalizowaniu: "UPDATE USERS set NICK = @nick where UID = @UID". Czy w momencie wykonania, w zapytaniu nie powinny figurować już konkretne wartości parametrów @nick i @UID pobrane z grida? Może w tym tkwi problem?
Po edycji:
Drugi problem, jeszcze ciekawszy - usuwanie wierszy poprzez DeleteCommand również zwraca taki sam błąd, ale USUWA wskazany rekord. Po prostu aplikacja wywala exception, ale po ponownym uruchomieniu wskazanego do usunięcia rzędu już nie ma. Czary?