SQL Insert komutu ile veritabanına eklenen son kaydın ID değeri nasıl alınır?
Toplam 1 cevap
Ado.Net nesneleri ile işlem yapıyorsanız, SQL Insert komutunu kullandığınızda veritabanına kaydedilen veriye atanan ID değerini C# ile almak isteyebilirsiniz.
Aşağıdaki koddaki örnek gibi yapabilirsiniz.
SqlConnection con = new SqlConnection(connectionString);
SqlCommand cmd = new SqlCommand("INSERT INTO Etkinlik(Ad,Tarih) VALUES(@ad, @tarih); SET @prmYeniId = SCOPE_IDENTITY()", con);
cmd.Parameters.Add("@ad", SqlDbType.VarChar).Value = ad;
cmd.Parameters.Add("@tarih", SqlDbType.VarChar).Value = tarih; ;
cmd.Parameters.Add("@prmYeniId", SqlDbType.Int).Direction = ParameterDirection.Output;
con.Open();
cmd.ExecuteScalar();
int YeniId = (int)cmd.Parameters["@prmYeniId"].Value;
con.Close();
SQL SCOPE_IDENTITY() metodu insert edilen veriye atanan ID değerini döndürür. SQL sorgusunun sonuna eklenen SCOPE_IDENTITY() metodu ile dönen değer @prmYeniID parametresine yüklenir.
Daha sonra cmd.Paremeters["@prmYeniId"].Value ile bu parametreye atanan değer okunarak istenilen değişkene atanır.