Bugün şirket için yazılan DLL‘e eklenmek üzere, bir fonksiyon yazdım. Bu fonksiyonu kendi projelerimde de DAL içersinde fonksiyon olarak kullanıyorum. Tamamen kodun dinamikleşmesine dönük, fonksiyona gönderilen 2 tane string dizi ve bir tane normal string olmak üzere 3 parametre almaktadır. Bu parametlerden ilk string dizi, istenilen sayıda alan adının alınmasını sağlarken, diğer dizi istenilen sayıda tablodan çekilmesini sağlamaktadır. Son kısımda girilen şart string‘i ise “where” olarak girebileceğiniz, koşulu belirtmektedir. Son şart stringine boş değer göndererek sadece select ifadesinin çalışmasını sağlayabilirsiniz. Bu fonksiyonda bir kaç ufak değişiklik yaparak, INSERT, UPDATE işlemlerini de daha dinamik bir hale getirip, burada paylaşacağım.
public static SqlConnection conn = new SqlConnection(@”data source=GIFTEDSQLEXPRESS;integrated security=sspi;initial catalog=Ticket”);
public static DataTable Baglan(string[] alanAdlari, string[] tabloAdlari, string Sart)
{
string alanToplam = “”;
string tabloToplam = “”;
int say = 0;
//Gelen alan adlarının içeriğini bu kısımda birleştiriyoruz
foreach (var item in alanAdlari)
{
alanToplam = alanToplam + “[” + alanAdlari[say] + “]” + “,”;
say++;
}
alanToplam = alanToplam.Remove(alanToplam.Length-1,1);
say=0;
//Gelen tablo adlarının içeriğini bu kısımda birleştiriyoruz
foreach (var item in tabloAdlari)
{
tabloToplam = tabloToplam + tabloAdlari[say] + “,”;
say++;
}
tabloToplam = tabloToplam.Remove(tabloToplam.Length – 1, 1);
say = 0;
SqlCommand comm = new SqlCommand(“SELECT ” + alanToplam + ” FROM ” + tabloToplam + ” WHERE ” + Sart +””, conn);
//Datatable oluşturarak sql komutumuzu alalım.
DataTable dt = new DataTable();
try
{
conn.Open();
dt.Load(comm.ExecuteReader());
}
catch (Exception ex)
{
}
finally
{
conn.Close();
}
return dt;
}
Yorumlar
Kanka bunu neden Stored Procedures ile falan yapmıyorsunuz ? DAL’da yapmanızın özelliği ne ?
DAL ile ben kullanıyorum, bunları tek bir DLL içinde toplamaya başladık, böyle sık kullanılanları direk o DLL referance edip kullanıcaz.
güzel blog . DAL da güzel bir de insert,update ve delete için de birere method olsa birde methodlar içinde injection için önlem alınırsa tadından yenmez 🙂
sağol ilhan, lazım oldukça yazıyorum 🙂
böyle iş mi olur ya. transaction yönetimi output value return value falan bunları ne yapıyorsunuz amaca sadece veri eklemek ise microsoftun enterprise librarysini kullanabilirsiniz.
@can kaya; Amaç veri eklemekten ziyade, dinamik olarak işlemleri yapmaktı.
güzel beğendim işe yarar