获取插入行的ID

时间:2012-01-20 16:22:35

标签: c# asp.net sql-server sql-server-2008 asp.net-3.5

我试图使用sql输出子句从数据库中获取新插入记录的id,即

insert into table1(forename, surname) output inserted.id values(@forename, @surname)

我试图像这样捕获id:

Int32 id = (int)command.ExecuteScalar;

这给了我一条错误消息:

Compiler Error Message: CS0428: Cannot convert method group 'ExecuteScalar' to non-delegate type 'int'. Did you intend to invoke the method?

不确定我做错了什么。

以下是现有代码的大量摘录:

using (connection = new SqlConnection(ConfigurationManager.AppSettings["connString"]))
{
    using (command = new SqlCommand("insert into table1(forename, surname) OUTPUT INSERTED.ID values(@forename, @surname)", connection))
    {
        command.Parameters.Add("@forename", SqlDbType.VarChar, 255).Value = forename;
        command.Parameters.Add("@surname", SqlDbType.VarChar, 255).Value = surname;

        command.Connection.Open();
        id = (int)command.ExecuteScalar;
    }
}

2 个答案:

答案 0 :(得分:5)

试试id = (int) command.ExecuteScalar()。你刚离开了parens。

答案 1 :(得分:3)

ExecuteScalar是一个方法,所以你必须在它后面放一个参数列表:ExecuteScalar()。

每当你收到有关MethodGroups的错误时,这可能是错误的。