Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Deve declarar a variável escalar @ID para o parâmetro de inserção


O problema ainda é que você está tentando usar o mesmo "escopo" com dois comandos SQL diferentes. Mesmo pensando que eles são a mesma "variável" em C# em SQL eles têm escopo diferente.

Você precisará executar ambas as instruções em um comando e adicionar o @ID parâmetro como uma Output parâmetro para inserir e obter a identidade:
nonqueryCommand.CommandType = CommandType.Text;
nonqueryCommand.CommandText = "INSERT tblLoginLogTable (UserName, LoggedInDate, LoggedInTime) VALUES (@UserName, @LoggedInDate, @LoggedInTime); " + 
                              "SELECT @ID = SCOPE_IDENTITY()";
nonqueryCommand.Parameters.AddWithValue("@UserName", txtUserName.Text);
nonqueryCommand.Parameters.AddWithValue("@LoggedInDate", DateTime.Now);
nonqueryCommand.Parameters.AddWithValue("@LoggedInTime", DateTime.Now);
nonqueryCommand.Parameters.Add("@ID",SqlDbType.Int).Direction = ParameterDirection.Output;

thisConnection.Open();
nonqueryCommand.ExecuteNonQuery(); 

int id = (int)nonqueryCommand.Parameters["@ID"];