Önceki yazımızda SQL Server da nasıl Stored Procedure yazılır
onu anlatmıştım (bu yazıya başlamadan belirttiğim yazıyı okumanızı tavsiye ederim). Bu yazımda C# tarafında oluşturduğuz prosedürü nasıl kullanabiliriz, onu göstereceğim inş
Önceki yazımızda hatıralarsanız kendi sınıfımızı yazmıştık verileri saklamak için. Yine aynı yolu izliyeceğiz.
Kullanımı o kadar da zor değil. İlk önce aşağıdaki kodu inceleyelim, sonra da açıklayalım.
Kategorilerimizi sakladığımız sınıfımız şöyle ;
using System;
namespace OrnekUygulama
{
class KategoriInfo
{
int katID;
public int KatID
{
get { return katID; }
set { katID = value; }
}
string katAdi;
public string KatAdi
{
get { return katAdi; }
set { katAdi = value; }
}
public KategoriInfo(int katIDs,string katAdi)
{
this.KatAdi = katAdi;
this.KatID = katID;
}
}
}
Sınıfı neden oluşturduğumuzdan bahsetmeyeceğim, yukarıda belittiğim yazıda detaylı olarak bahsedilmiştir.
Şimdi gelelim Stored Precedure kullanımına;
SqlConnection con = new SqlConnection("Connection Stringimiz..");
SqlCommand cmd = new SqlCommand("KategorileriGetir", con);
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter _param = new SqlParameter("@kategoriDurum", SqlDbType.Int);
_param.Value = 1;
cmd.Parameters.Add(param);
SqlDataReader _dr = cmd.ExecuteReader();
List<KategoriInfo> listem = new List<KategoriInfo>();
while (_dr.Read())
{
KategoriInfo info = new KategoriInfo(_dr.GetString(1), _dr.GetInt32(0));
listem.Add(info);
}
//Bu satırdan itibaren verilerimiz listem nesnesinde saklıdır. Bundan sonrası size kalmış : )
Şimdi ne yaptık onu açıklayalım.
2. Satırda
SqlCommand da CommanString i yerine prosedürümüzün adını yazdık.
3.Satırda
Daha sonra SqlConnection’a dedik ki ; sana verdiğimiz string i commandtext olarak algılama bunun tipi bir Stored Procedure ona göre davran. (Stored Procedure kullanmadığımız zamanlarda varsayılan değeri CommandText olarak atanır)
Bu prosedürümüz dışarıdan değer alıyor mu ? Evet alıyor
4. Satırda
Prosedürümüz parametre alıyorsa bizim bu parametreyi göndermemiz gerekiyor. O yüzden 4. satırda yeni bir parametre tanımladım. Ve dedim ki ; bu parametremin adı “@kategoriDurum” değeri ise SqlDbType.Int dir.
5.Satırda
Buraya kadar parametremizi tanımlamıştık, şimdi ise parametremizin değerini giriyoruz.
6.Satırda
Son olarak ta SqlCommand a dedimki, sen şu parametreyi al sakla, sana verdiğim prosedürü çalıştırırken bu parametrelere ihtiyacın olacak ve Add metodu ile SqlParameter tipinde olan _param i ekledik.
Eğer parametreleriniz çok ise, tek tek SqlParameter tipinde değerler oluşturmayın. SqlParameter[] olarak tanımlayın ve SqlCommand a AddRange metodu ile oluşturduğunuz diziyi ekleyin.
Gerisi zaten normal sql command çalıştırma ile aynı olduğundan burada nokta koyuyorum
Sade ve açıklayıcı anlatım için teşekkürler. Bu arada, 6. satıdarki
cmd.Parameters.Add(param);parantez içerisindeki değişken _param olması gerekiyor.