代码之家  ›  专栏  ›  技术社区  ›  OmniOwl

准备好的MySQL语句插入失败,没有错误

  •  1
  • OmniOwl  · 技术社区  · 6 年前

    我正在使用MySQL尝试将一个新用户添加到我的数据库中。用户有一个Id,一个名字,一个姓氏和一个出生日期。但是当我运行下面的代码时 conn.close() 完成后)数据库告诉我(使用HeidiSQL)在表概述中现在表中有一个新行,但是当我打开Data Tab查看这些行时,什么也没有。它是空的。运行 COUNT(*) 也返回0。

    using (MySqlTransaction transaction = conn.BeginTransaction())
    {
        using (MySqlCommand cmd = conn.CreateCommand())
        {
            cmd.CommandText = "INSERT INTO USERS(NAME_FIRST,NAME_LAST,DATE_OF_BIRTH) VALUES(@nameFirst,@nameLast,@dateOfBirth)";
            cmd.Transaction = transaction;
            cmd.Parameters.AddWithValue("@nameFirst", user.NameFirst);
            cmd.Parameters.AddWithValue("@nameLast", user.NameLast);
            cmd.Parameters.AddWithValue("@dateOfBirth", user.DateOfBirth);
            cmd.Prepare();
            cmd.ExecuteNonQuery();
            lastInsertId = (uint)cmd.LastInsertedId;
        }
    }
    

    我没有错误。日志里什么都没有,每个人都和我一样。

    我做错什么了?

    1 回复  |  直到 6 年前
        1
  •  1
  •   JNevill    6 年前

    感觉就像是 begintransaction 开始交易。这意味着 autocommit=false 就整个交易而言。

    之后 ExecuteNonQuery 做一个 transaction.Commit(); 看看他们是否出现。

    More Info Here