0

MySQL Connector/Net を使用して、Mono に次のコードがあります。

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 は実際には私のソリューションにインポートされた Web 参照であるため、反対側を確認して、実際に適切なデータが送信され、db の更新が行われることを確認できます。

誰が何をすべきか知っていますか?

ティア、ベンジー

PS: db の更新を除くすべてが機能しています。ここの catch ブロック (簡潔にするために掲載していません) はヒットしません。

4

1 に答える 1

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);
        }
    }
于 2012-05-18T21:33:29.307 に答える