sql >> Databáze >  >> RDS >> Sqlserver

Musí deklarovat skalární proměnnou @ID pro parametr vložení

Problém je stále v tom, že se snažíte použít stejný "rozsah" se dvěma různými příkazy SQL. I když se jedná o stejnou "proměnnou" v C# v SQL, mají jiný rozsah.

Budete muset provést oba příkazy v jednom příkazu a přidat @ID parametr jako Output parametr za účelem vložení a získání identity:

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


  1. MySQL – VYBERTE pouze 2 řádky z každé „skupiny“

  2. PDO, $_GET a SELECTing z databáze MySQL

  3. MYSQL - Vytvořte jeden SQL dotaz z více dotazů

  4. Ztráta přesnosti při vkládání double do MySQL prostřednictvím PDO