sql >> Base de Datos >  >> RDS >> Sqlserver

Debe declarar la variable escalar @ID para el parámetro de inserción

El problema sigue siendo que está tratando de usar el mismo "alcance" con dos comandos SQL diferentes. Aunque son la misma "variable" en C# en SQL, tienen un alcance diferente.

Deberá ejecutar ambas declaraciones en un comando y agregar @ID parámetro como una Output parámetro para insertar y obtener la identidad:

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"];