2012-05-18 3 views
0

나는 MySQL의 커넥터/인터넷 사용, 모노에 다음 코드를 : 쿼리가 실행되면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 호출에 중단 점을 설정하면 코드에 언급 된 ID가있는 행을로드하고 업데이트되지 않았습니다. 디버깅을하지 않고 코드를 실행 시키더라도 데이터베이스에 아무 것도 일어나지 않는다는 것을 알 수 있습니다. 명확성을 위해 - personServ.MatchPerson은 실제로 내 솔루션으로 가져온 웹 참조이므로 다른 끝을 확인할 수 있으며 실제로 적절한 데이터가 전송되었고 db 업데이트가 수행되어야합니다.

누구든지 무엇을 해야할지 알고 계십니까? P.S : DB를 업데이트 제외한 모든 가 작동

TIA, 벤지 - 여기 catch 블록은 (간결성을 위하여 게시하지) 명중되지 않습니다.

+1

"select * from myccontacts where id = @id"를 실행하면 어떻게됩니까? 결과를 게시 할 수 있습니까? 또한'myccontacts '보다는'mycontacts'를 의미합니까? – Crisfole

+0

'person [ "id"];'는 어디에 있나요? Convert.ToInt32 (Person [ "id"]); '일까요? – jams

+0

이 try 블록이 적중되기 전에 실제로 해당 라인을 따라 선택을하고 있는데 실제로 작동합니다 (웹 서비스 호출의 p 객체가 채워지는 방식입니다). 나중에 선택하면 업데이트가 발생하지 않는 것으로 나타납니다. 그리고 아니요, 테이블 이름은 정확하지만 확인해 주셔서 감사합니다! – benjy

답변

0

이 코드를 사용해 볼 수 있습니까?

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.AddWithValue("@mcid",int.Parse(mpr.PersonID)); 
      successcmd.Parameters.AddWithValue("@mr",(int)mpr.MatchResultStatus); 
      successcmd.Parameters.AddWithValue("@dtm", DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss")); 
      successcmd.Parameters.AddWithValue("@id",Convert.Int32(person["id"]); 
      successcmd.Connection.Open(); 
      successcmd.ExecuteNonQuery(); 
      successcmd.Connection.Close(); 
      Console.WriteLine(mpr.PersonID); 
     } 
    } 
관련 문제