为什么我的MySqlCommand实际上没有更新我的表?

时间:2012-05-18 16:26:18

标签: c# mysql mono connector-net

我在Mono中使用MySQL Connector / Net获得以下代码:

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引用,因此我可以检查另一端并确实看到正确的数据已发送并且数据库更新应该发生。

任何人都知道该怎么做?

TIA, 本吉

P.S。:除了之外的所有用于db更新工作 - 这里的catch块(为简洁起见而未发布)永远不会被命中。

1 个答案:

答案 0 :(得分: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);
        }
    }