У меня есть следующий код в Mono, используя MySQL Connector/Net:Почему мой MySqlCommand не обновляет мою таблицу?
try
{
MatchPersonResult mpr = personServ.MatchPerson(p, "MatchAndStore", null);
using(MySqlCommand successcmd = new MySqlCommand())
{
successcmd.CommandText = "UPDATE myccontacts SET mcid = @mcid, matchresult = @mr, datetimematched = @dtm WHERE id = @id";
successcmd.Connection = conn;
successcmd.Parameters.Add("@mcid", MySqlDbType.Int32).Value = int.Parse(mpr.PersonID);
successcmd.Parameters.Add("@mr", MySqlDbType.Enum).Value = mpr.MatchResultStatus;
successcmd.Parameters.Add("@dtm", MySqlDbType.DateTime).Value = DateTime.Now.Year.ToString() + "-" + DateTime.Now.Month.ToString() + "-" + DateTime.Now.Day.ToString() + " " + DateTime.Now.Hour.ToString() + ":" + DateTime.Now.Minute.ToString() + ":" + DateTime.Now.Second.ToString();
successcmd.Parameters.Add("@id", MySqlDbType.Int32).Value = person["id"];
successcmd.ExecuteNonQuery();
Console.WriteLine(mpr.PersonID);
}
}
При выполнении запроса, таблица фактически не обновляется ни с чем. Я установил точку останова на вызов Console.WriteLine, чтобы я мог проверить, что происходит, и когда он попал, я загружаю строку с идентификатором, указанным в коде, и он не обновлялся. Даже если я не отлаживаю, но просто позволю выполнить код, я вижу, что ничего не происходит с базой данных. Для ясности - personServ.MatchPerson - фактически веб-ссылка, импортированная в мое решение, поэтому я могу проверить другой конец и фактически видеть, что правильные данные были отправлены и что обновление db должно иметь место.
Кто-нибудь знает, что делать?
ТИА, Бенджи
P.S .: Все кроме для обновления БД работает - подвох блок здесь (не публикуется для краткости) никогда не попал.
Что происходит, когда вы выполняете «select * from myccontacts where id = @id» до и после? Можете ли вы опубликовать результаты? Также вы имеете в виду «mycontacts», а не «myccontacts»? – Crisfole
Где находится 'person [" id "];'? Должно ли это быть 'Convert.ToInt32 (person [" id "]);'? – jams
Я фактически делаю выбор по этим строкам до того, как этот блок try ударит, и на самом деле он работает (так как заполняется объект p в вызове веб-службы). После этого выбор показывает, что обновление не происходит. И нет, имя таблицы правильное, но спасибо за проверку! – benjy