2012-01-20 5 views
1

나는 SQL 출력 절을 사용하여 데이터베이스에서 새로 삽입 된 레코드의 ID를 얻기 위해 노력하고, 즉삽입 된 행의 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; 
    } 
} 

답변

5

id = (int) command.ExecuteScalar()을 시도해보십시오

여기에 기존 코드의 큰 추출물이다. 방금 팸알을 버렸습니다.

3

ExecuteScalar는 메서드이므로 ExecutScalar() 뒤에 인수 목록을 추가해야합니다.

MethodGroups에 대한 오류가 발생할 때마다 이것은 실수 일 수 있습니다.

관련 문제