22 Mayıs 2014 Perşembe

Access Modifiers(Erişim Belirleyiciler)


Erişim belirleyiciler bir metoda ve özelliğe nerelerden erişileceğini tanımlar.Her metot ve özellik için, bildirim yapmadan önce erişim belirleyici türünü bildirmemiz gerekir.
C# dilinde 5 tane erişim belirleyici vardır.Bunlar; public, private, protected,internal ve 'protected internal' anahtar sözcükleri ile belirlenir.

1- Public: Sınıfın bir özelliğine ya da metoduna istenildiği yerden erişilmesini sağlar.Ayrıca kalıtım almama gerek olmaksızın tanımlanan bir sınıf ya da sınıf üyesine de her yerden sınırsız ulaşabiliriz.

2- Private: En kısıtlı erişim sağlayan erişim belirleyicidir. Private olarak tanımlanmış üye elemanlara dışarıdan erişmek mümkün değildir. Sadece tanımlandığı sınıfın içerisindeki üye elemanlara erişilebilir.

3- Protected: Tanımlanan bir sınıf üyesine, sadece tanımladığı sınıfı miras alan diğer sınıflar içerisinde erişilebilir. Kalıtım yolu ile sadece public ve protected elemanlar aktarılır.

4-Internal : Tanımlanan bir sınıf ya da sınıf üyesine aynı proje içerisinden istediğim şekilde ulaşabilirim.

5- Protected Internal: Tanımlanan sınıf üyelerini hem "internal" gibi aynı assembly içerisinde (yani .dll ya da .exe dosyaları içinden )  hem de aynı assembly içerinden olsun olmasın protected gibi tanımladığı sınıfı miras alan diğer sınıflardan da erişilebilir.

NOT: Class'lar sadece public ya da ınternal olarak tanımlanabilir.


14 Mart 2014 Cuma

Web User Control Nedir?


Asp.Net ile yerleşik (built in) şekilde gelen web kontrolleri bazı durumlarda sizin için yetersiz kalabilir.Böyle durumlarda kendi kontrolünüzü oluşturma ihtiyacı duyarsınız.Bunun için  Web User Control'ler kullanılır.
Web User Control'lerin bir diğer kullanılma amacı ise uygulamanızdaki sürekli tekrar eden işlemlerin tek bir defa tanımlanıp istediğimiz yerde kullanabilmenizi sağlamasıdır.Bu da tekrar kullanabilirlik sağlamaktadır.

Web User Control Özellikleri 

  • User Control'lerin dosya uzantıları  ".ascx "'tir.
  • Çalışabilmeleri için mutlaka bir web form'da bulunması gerekmektedir.Kendi başlarına çalıştırılamazlar.
  • Page Directive'i yerine Control isimli Directive kullanılır.
  • User Control'lere ait yeni Property ve Event'lar tanımlanabilir.

Web User Control Oluşturulması

  1.  Öncelikle bir web projesi açtık.
  2. Projenin üstüne sağ tıklayarak Add >New Item >Web > Web User Control seçip controlümüzün ismini yazıyoruz ve Add butonuna tıklıyoruz.
          Bu Web User Controlü bir örnekte uygulayalım.Örnek bir site üzerinden anlatmaya çalışacağım.



Şekilde gördüğümüz Categories kısmı hemen hemen her sayfada sağda olmaktadır.Tekrar tekrar her sayfaya Categories özelliklerini eklemek yerine sadece web user control sayfamızda tanımlıyoruz.Böylece tekrar kullanabilirlik sağlıyoruz.

Eklemiş olduğumuz web user control'e Categories'in tüm özellklerini aktardım.

Bu ekran çıktısı yukarıda yaratmış olduğumuz WebUCCategories.ascx dosyasının içeriğidir.

Şimdi de ilgili sayfalarımıza bu özelliği atayalım.Mesela ben bu özelliği anasayfa ve iletişim sayfalarımda kullanmak istiyorum.Ben önceden Masterpage oluşturup default.aspx ve iletisim.aspx adında iki sayfa oluşturmuştum.


İletişim.aspx sayfamda ilgili div in içerisine WebUCCategories.ascx dosyasına sol ile basılı tutup sürüklüyoruz. Sürüklediğimizde  <uc1:WebUCCategories runat="server" ID="WebUCCategories" /> gibi bir yazı çıkması lazım.Ekran çıktımızda da görüyoruz.

Böylece küçük örneğimizi uygulamış olduk.Tavsiyem konuyu pekiştirmek adına örnek yapmanızdır.Diğer yazılarda görüşmek üzere..




Master Page Nedir?

Master Page web formlara benzer ve ayrıca çok önemli bir özelliktir.Öncelikle neden Master page 'e ihtiyaç duyulmuştur.Bir web sitesi genel olarak header, content, menu ve footer'dan oluşur.Genel olarak fark ettiyseniz sadece sitelerin content (içerik) kısmı değişmektedir.Eğer daha önce html ve css ile uğraştıysanız her bir html sayfasına sabit olan kısımların (header, menu ve footer gibi) özelliklerini kopyalamak zorunda kalıyorduk.
Master page mantığında ise sadece bu web forma bu özellikleri atıyoruz daha sonra yaratacağımız bütün sayfalarda kullanıyoruz.Böylece istediğim web forma kullanarak daha dinamik, daha hızlı ve daha performanslı web formlar oluşturabiliyoruz.  



Genel olarak bir sitenin görünümü


Master Page Kullanarak Bir Site Oluşturmak 

Visual Studio 2012 kullanarak Master page ile basit bir web sitesi oluşturalım.Böylece Master page kullanımını öğrenmiş olacaksınız.Size önerim öncelikle Master page'i tasarlayıp daha sonra kodlamaya geçmenizdir.
Aşağıdaki adımları uygulayalım.

1-Visual Studio 2012'yi açıyoruz.

2-New Project > Asp.Net Empty Web Application seçiyoruz.Projemizi bir isim veriyoruz.

3- Projemizin üstüne gelerek sağa tıklıyoruz ordan Add > New Item > Web > MasterPage seçip masterpagemize bir isim veriyoruz.


3.İşlemin Görünümü
4-Varsayılan kodlarıyla beraber Masterpagemiz oluştu.Bu kodlarda iki şey dikkatimizi çekiyor.Birincisi dosyamızın uzantısı master türündedir.İkincisi ise ContentPlaceHolder adındaki ASP.NET kontrolleri sayfaya eklenmiştir.

Buradaki ContenPlaceHolder kontrolü bizim içerik sayfalarımızın yer alacağı kısımdır.ContenPlaceHolder dışındakiler ise tüm sayfalarda ortak olacaktır.Bizimde amacımız header,footerın ortak olması peki nereye kodlarımızı yazmalıyız.Tabi ki ContenPlaceHolder dışına yazılmalıdır.




Fark ettiyseniz head bölümünde ve body bölümünde ContentPlaceHolderlar var ve head etiketindekini bu örnekte kullanmayacağım.Body kısmına bakacak olursak header ve footerın sabit kalmasını istediğim için ContentPlaceHolder dışına yazdım.En basit haliyle master pagemiz oluştu sıra geldi, master sayfamıza içeriklerini gömmeye.

5- Pojemize sağ tıklayarak Add>New Item>ContentPage seçip sayfanın ismini default.aspx yapıyoruz.


5.İşlemin Görünümü

6- ContentPage seçip add butonuna tıkladığımızda yarattığımız master pagemizi seçip Ok tuşuna basıyoruz.
                                                

6.İşlemin Görünümü

7- default.aspx sayfamızın görünümü aşağıdaki gibidir.



Dikkatinizi çektiyse ContentPlaceHolder içerisine içeriğimizi yazıyoruz.Çünkü artık master pagemizde header ve footer sabit olup anasayfamızda veya başka isimde sayfa açarsak  fark etmez sadece içerik kısmımız değişeceği için ContentPlaceHolder içerisine yazıyoruz.

Son olarak iletisim.aspx adında bir sayfa oluşturdum.En basit şekliyle görünümünü paylaşıyorum.

Sitemizde bundan sonra ekleyeceğimiz bütün sayfalarda yukarıdaki ekran çıktısında da gördüğümüz üzere sadece sayfalarımızın içeriği değişecektir.Aynı şekilde birçok sayfa ekleyebilirsiniz. 



14 Şubat 2014 Cuma

SQL-JOINLER

Merhaba arkadaşlar bu yazımda size joinleri anlatacağım. Join çeşitlerini daha iyi kavrayabilmemiz adına küme şekillerine de yer vereceğim.

Veritabanı tasarımı yaparken veri tekrarını önlemek adına birçok tablo oluşturur ve bu tabloları birbirleriyle ilişkisel hale getiririz.Tablolarımızı yabancı anahtarlarla (foreign key) birbirlerine bağlarız.Örneğin,


 Ben şirketteki çalışanların hangi bölümde çalıştıklarını görmek istiyorum.
Sadece select PersonelAdiSoyadi,BolumNo from Personels sorgusunu yazarsam karşıma sadece çalışanların adı soyadı ve bölüm numaraları gelir böylelikle ben hangi bölümde çalıştıklarını göremem. 
Eğer select BolumNo,BolumAdi from Bolum diye sorgu yazarsam bu seferde çalışanların isimlerini göremem.
Ayrı ayrı sorgular yazmak yerine bu iki sorguyu tek bir sorguda yazarak istediğim işlemi gerçekleştirebilirim.

Tablo birleştirme işlemini iki farklı yöntemle yapabiliriz.

1-WHERE ile sorgu koşulu belirleyerek
2-JOIN komutunu kullanarak

WHERE ile sorgu koşulu belirleyerek çalışanların hangi bölümde çalıştıklarını gösteren bir sorgu yazacağım.

Select p.PersonelAdiSoyadi,b.BolumAdi  from Personels p ,Bolum b
Where p.BolumNo = b.BolumNo

JOIN komutu kullanarak aynı sorguyu yazalım.

Öncelikle Join ifadeleri 4'e ayrılır.

  • INNER JOIN
  • LEFT JOIN
  • RIGHT JOIN
  • FULL JOIN

INNER JOIN:  Sadece her iki tabloda da olan verileri gösterir.Yani iki tablo için de boş ( NULL) verileri temizler ve göstermez.

                                       Küme ifade olarak inner join kesişimi ifade etmektedir.


                         
  select p.PersonelAdiSoyadi,b.BolumAdi,b.Sehir from Personels p
  inner join Bolum b
  on p.BolumNo = b.BolumNo


Inner joinle personels ve bolum tablolarımızı birleştirip çalışanların bölüm hatta hangi şehirde çalıştıklarını öğrendik.

LEFT JOIN: İlk tablo (Personels) için boş olan verileri de göstermemizi sağlar.


P left join B kümelerde sol tarafta olan küme demektir. P tablosundaki veriler koşulsuz gelir, B tablosundakiler eşleşebildiklerini getirir eşlemediklerini NULL olarak getirir.
   
                     
select p.PersonelAdiSoyadi,b.BolumAdi,b.Sehir from Personels p
left join Bolum b
on p.BolumNo = b.BolumNo



RIGHT JOIN: İkinci (Bolum) tablodaki boş olan verileri de göstermemizi sağlar. 

P right join B kümelerde sağ tarafta olan küme demektir.B tablosundaki veriler koşulsuz gelir, P tablosundakiler eşleşebildiklerini getirir eşlemediklerini NULL olarak getirir.


select p.PersonelAdiSoyadi,b.BolumAdi,b.Sehir from Personels p
right join Bolum b
on p.BolumNo = b.BolumNo



FULL JOIN: İki tablo içinde boş olan verileri gösterir.

P full join B kümelerde birleşime karşılık gelir.Her iki kümedeki tüm elemanları getirir.Eşleştirebildiklerine  ilgili tablolardaki verilere, eşleştiremediklerini NULL olarak getirir.

select p.PersonelAdiSoyadi,b.BolumAdi,b.Sehir from Personels p
full join Bolum b
on p.BolumNo = b.BolumNo



İşimize yaracak olan join çeşitlerini anlatmaya çalıştım umarım anlaşılır olmuştur görüşmek üzere..



                       







12 Şubat 2014 Çarşamba

SQL-INSERT,UPDATE,DELETE

  INSERT

- Insert komutu bir tabloya kayıt eklemek için kullanılır. Önceki yazımdaki personelbilgi veritabanımı kullanacağım.

Bolum tabloma Arge adında bolumadı eklemek istiyorum.

Insert into Bolum(BolumAdi) values ('Arge')                            

Bu sorgumuzda bolum tablomuza arge adında bir veri kayıt ettik.
ınsert into komutumuzdan sonra tabloadı parantez içine ise hangi alana veri ekleyeceksek o kolonun ismini yazıyoruz.Daha sonrada kayıt edeceğimiz bilgileri yazıyoruz.Örneğimizde sadece bir veri ekledim.
 
Insert into Bolum(BolumAdi,Sehir) values ('Yazılım','Ankara')

Bu sorgumuzda dikkatinizi çekerse bolumno ya birşey eklemedim çünkü veritabanımı oluştururken bolumno ya 'otomatik sayı' özelliği verdiğim için o alana herhangi bir veri ekleyemem.

UPDATE

-Update komutu bir tablodaki kayıtların güncellenmesi amacıyla kullanılır.Hangi kayıt yada kayıtların güncelleneceği WHERE sözcüğü ile verilen kriter ile, kayıtlardaki güncellenecek alanlar ise SET sözcüğü sonrasında yeni değerlerinin atanması ile belirtilir.

Update Bolum set BolumAdi = 'Proje Yönetim'    
where BolumNo = 8

Yukarda insert into ile yazılım departmanı eklemiştim. Fakat ben bu bolumu güncelleyip bu sorguda yazılım yerine proje yönetim bolumunu ekledim.



DELETE

-Delete komutu bir tablodaki bir yada daha çok kaydı silmek amacıyla kullanılır.Hangi kayıt yada kayıtların silineceği WHERE sözcüğünden sonra verilen kriter ile belirlenir.

delete from Bolum where BolumNo = 7          
Bu sorgumuzda bolumnosu 7 olan bolumadı da arge olan veriyi bolum tablosundan sildik.

Not: Eğer WHERE sözcüğü hiç kullanılmaz ise tablodaki bütün veriler silinir.

delete from Bolum



11 Şubat 2014 Salı

-SQL Fonksiyonları-

Programlama dillerinde olduğu gibi, SQL'de de bazı artimetik işlemler için  yada tip dönüşümü yapmak için hazır olarak sunulan fonksiyonlar vardır.

SUM  ifadesi belirli bir sütundaki sayısal verileri toplar.
AVG  ifadesi ise belirli bir sütundaki  sayısal verilerin aritmetik ortalamasını gösterir.

    SELECT SUM(Maas) AS ToplamMaas FROM Personels

     
Bu sorgumuz bütün personelin maaşlarının toplamını gösterir.




SELECT AVG(Maas)
AS [MAASLARIN  ORTALAMASI] FROM Personels

Bu sorgumuz maaşların aritmetik ortalamasını gösterir.

Not: Eğer sütunumuza isim verirken boşluk karakteri kullanmak istersek  [ ]  içinde yazılmalıdır.

MAX ifadesi belirli bir sütundaki en büyük veriyi görüntülemek için kullanılır.
MIN ifadesi ise belirli bir sütundaki en küçük veriyi görüntülemek için kullanılır.


 SELECT MAX(EnyuksekMaas) AS en_yüksek_maas FROM MaasAralik

 Bu sorgu MaasAralik tablosundaki en yüksek maaşı getirir.


COUNT ifadesi sorgunun ürettiği satır sayısını döndürür.

   SELECT COUNT(*) AS [Toplam Kayıt Sayısı] FROM Personels

   Bu sorgu Personels tablosundaki toplam kayıt sayısını döndürür.

Not: Eğer COUNT içinde (*) yerine belirli bir sütun ismi verilirse o sütundaki NULL olmayan değer sayısını döndürür.

TOP  ifadesi  ilk belli sayıdaki kaydı almaya yarar.

   SELECT TOP 2 PersonelAdiSoyadi FROM Personels

    Bu sorguda Personels tablosundaki ilk 2 kaydı getirdi.


GROUP BY İfadesi SQL'de gruplandırma yapmak için kullanılır. SUM,AVG gibi bazı fonksiyonların tablonun tamamı için değilde, belirli bir alana yada alanlara göre gruplandırarak çalıştırılması GROUP BY deyimi ile sağlanır.

  SELECT AVG(Maas),Gorev
  FROM Personels
  GROUP BY Gorev

Bu sorguda personelin ortalama maaşlarını  her görev için ayrı ayrı listeler.