在MySQL中进行INSERT查询后获取自动增量值

时间:2011-11-02 15:03:13

标签: c# mysql

using (OdbcConnection con = new OdbcConnection(ConnStr))
using (OdbcCommand cmd = new OdbcCommand("INSERT INTO tblUsers(FirstName, LastName, UserName, Password, EmailId, Created_Date, typeid) VALUES ('" + ObjUserProp.FirstName + "','" + ObjUserProp.LastName + "','" + ObjUserProp.UserName + "','" + ObjUserProp.Password + "','" + ObjUserProp.EmailId + "','" + ObjUserProp.Created_Date + "'," + ObjUserProp.TypeId + ")", con))
{

    con.Open();

    using (OdbcCommand cmd1 = new OdbcCommand("INSERT INTO tblUsersRelation(UserId,usertypeid) VALUES ( LAST_INSERT_ID() ," + ObjUserProp.TypeId + ")", con))
    {
        IsDone = cmd.ExecuteNonQuery();
        return IsDone;
    }
}

记录仅插入1个表中。请告诉我如何获取最新的自动增量ID值。

5 个答案:

答案 0 :(得分:2)

最好使用stored procedures,“例程”,因为它们在MySql中被引用,并传入输入参数。

答案 1 :(得分:1)

这看起来像你想要的 - SELECT LAST_INSERT_ID()(来自http://dev.mysql.com/doc/refman/5.5/en/getting-unique-id.html)。

本质上我会更改第一个sql语句,在插入后调用它。然后,您可以获取返回的值并在后续的SQL查询中使用它。

据说它应该按照你的方式工作。虽然我当然假设您实际上缺少cmd1.ExecuteNonQuery()行。如果你真的没有那条线,那么这就是第二张表没有被更新的原因。

答案 2 :(得分:0)

select MAX(id)
from tblUsers

我不知道C#,但我想这就是你要找的......

答案 3 :(得分:0)

您可以使用MySQL函数LAST_INSERT_ID()来检索由AUTO_INCREMENT生成的最后插入的id。

答案 4 :(得分:0)

您需要使用LAST_INSERT_ID()以及ExecuteScalar来返回记录。使用ExecuteNonQuery不会返回任何内容。

除了您的问题,您还应该使用parameterized queries