2012-01-20 5 views
1

Я пытаюсь получить идентификатор вновь вставленной записи из базы данных, используя выходной пункт SQL, т.е.Получение идентификатора вставленной строки

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

и я пытаюсь захватить идентификатор, как это:

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; 
    } 
} 

ответ

5

Попробуйте id = (int) command.ExecuteScalar(). Вы только что покинули паренс.

3

ExecuteScalar - это метод, поэтому после него нужно поместить список аргументов: ExecuteScalar().

Каждый раз, когда вы получаете сообщение об ошибке MethodGroups, это, вероятно, ошибка.

Смежные вопросы