ADO.NET Connected Mimari-Stored Procedure İle Çalışmak

Bu yazımda C# ya da ASP.net ile veritabanı işlemlerinde Stored Procedure kullanmayı göstereceğim.Bütün select,insert,delete ve update işlemlerini gerçekleştirirken stored procedure kullanmak en faydalı yöntemdir.Bunun sebebi hem güvenlidir hemde Execute sistemini bir kere çalıştırıp bir daha kasmamasıdır.
Şimdi Nortwind tablomuzda aşağıdaki gibi bir stored procedure yazalım.

create proc Sp_AdiGetir
(
	@id int
)
as
select Adi from Personeller where PersonelId = @id

Yukardaki yazdığımız stored procedurü C# kısmında aşağıdaki şekilde kullanabiliriz.

SqlConnection baglanti = new SqlConnection("Server=GENÇAY-GENÇAY;database=Northwind;trusted_connection=true;");
            baglanti.Open();
            SqlCommand cmd = new SqlCommand("Sp_AdiGetir",baglanti);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.AddWithValue("@id",4);
            SqlDataReader dt = cmd.ExecuteReader();
            if (dt.HasRows)
            {
                dt.Read();
                MessageBox.Show(dt["Adi"].ToString());
            }
            baglanti.Close();
            baglanti.Dispose();

Yukardaki kod bloğunu izah etmek gerekirse,
SqlCommand nesnesine sorgu değil,stored procedure ismini yazıyoruz.
cmd.CommandType = CommandType.StoredProcedure; = SqlCommand nesnemizin CommandType özelliğini yani çalışma biçimini belirtmemiz lazım.Default olarak CommandType özelliğinin değeri Text dir.Biz stored procedure çalıştıracağımız için StoredProcedure tipini belirtmemiz gerekiyor.
cmd.Parameters.AddWithValue(“@id”,4); = SqlCommand nesnesine de parametre değeri gönderirken stored proceduremizdeki parametrenin adını yazıyoruz.Alacağı değeri ben manuel olarak 4 yaptım.Siz isterseniz bir kontrolden dinamik olarakta aldırabilirsiniz.
SqlDataReader dt = cmd.ExecuteReader(); = Burada dikkat etmemiz gereken nokta bu.Stored procedure içinde çalıştırdığımız sorgu select sorgusu olduğundan dolayı ExecuteReader() metodunu kullandım.Eğer insert,update ya da delete sorgularını kullansaydım onları çalıştıracam ExecuteNonQuery() metodunu kullanacaktım.

İşte C# ya da ASP.net ile stored procedure bu şekilde kullanılmaktadır.İyi çalışmalar.

Bunlar da hoşunuza gidebilir...

2 Cevaplar

  1. memet dedi ki:

    birden fazla kolonumuz varsa yani id,name,surname,address gibi onları eklerken mesela “id”,”name”,”surname”,”address”,4,’memet’,’çalışkan’,’istanbul’ gibimi kullanmak gerekiyor

    • Umt Kml dedi ki:
      public static DataTable RunSp(string spName, Dictionary param = null)
              {
                  DataTable table = new DataTable();
                  using (SqlConnection conn = new SqlConnection(str))
                  {
                      conn.Open();
      
                      using (var cmd = new SqlCommand(spName, conn))
                      {
                          cmd.CommandType = CommandType.StoredProcedure;
      
                          foreach (var par in param)
                          {
                              cmd.Parameters.AddWithValue($"@{par.Key}", par.Value);
                          }
                          new SqlDataAdapter(cmd).Fill(table);
                      }
      
                      conn.Close();
                  }
                  return table;
              }
      

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

*

Copy Protected by Chetan's WP-Copyprotect.