Cuma, Eylül 28

SQL Store Procedure

         Store prosedur'ler karmaşık sorgularımız tek bir satırda güvenli bir şekilde çalıştırabilmemizi sağlayan yapılardır (Methodlar) diyebiliriz. Prosedurler parametre alabilirler ve içeride yazdığımız sorguyu çalıştırırlar, geriye bir değer return ederler, içerisinde birden fazla işlem yapıp birden fazla sorgu çalıştırabiliriz ve normalde yazdığımız sorgulardan daha hızlı çalışırlar nedeni ise daha önceden derlenmiş ve çalışmaya hazır hale getirilmiş olmalarıdır.
         Parametre alan ve aldığı parametlerleri bir tabloya insert eden bir prosedure yazmak istersek :

SQL Geçici tablo Oluşturma (Temptable-AdminTemptable)

      Sunucuya olan bağlantı açıkken geçici olarak oluşturulan ve uzerinde işlemler yapabileceğimiz tablolardır, normal tablolardan farklı değildirler, tek kullanıcıya ait bir id ile oluşturulurlar ve sadece o kullanıcı tarafından kullanıcı server a bağlı kaldığı sürece erişilebilirler. Create edilirken # isareti ile belirtilirler. Örnek:
     
        create table #TempleTableOrnek
        (
        Id int identity(1,1),
        Ad nvarchar(50),
        Soyad nvarchar(50)
        )

SQL View Oluşturma

       View olusturduğunuzda ornek aldığınız tablonun bir yedeği alınmaz aynı tabloyu referans alan sanal bir tablo oluşmuş olur, gercek tabloda yada view'de yapılan bir değişiklik gerçek değeride etkileyecektir. View ler güncel verilerin kısıtlı sekilde gosterilmesini istediğimiz durumlada çok faydalıdır çünkü asıl tabloda yapılan değişiklik view'ide etkiler ve view üzerindende güncel ve gerçek veriye ulaşmış oluruz

       Örnek olarak:  5 tabloyu join ile birleştirip bir view oluşturduğumuzda 5 tablodaki istediğimiz kolonların güncel verilerine bir view üzerinden ulaşabiliriz bu işlemi bir store procedure ile de yapabiliriz fakat view in kolonları arasındada seçim yapabilirsiniz

    - 2 ilişkili tabloyu birleştirip tek bir tablo sorgular gibi sorgulayalım.

Perşembe, Eylül 27

SQL Fonksiyonları ve Dönüş Değerleri

         Sql fonksiyonlarında bir kolondaki değerler hesaplanır ve geriye bir değer döndürülür. Transact-SQL programlama dilinde  kullanılan gruplama (aggregate) fonksiyonları sunlardır:        

        Gruplama Fonksiyonları

  • AVG()       --Ortalama değer döndürür
  • COUNT()  --Satır sayısını döndürür
  • FIRST()    --İlk değeri döndürür
  • LAST()     --Son değeri döndürür
  • MAX()      --En büyük değeri döndürür
  • MIN()       --En küçük değeri döndürür
  • SUM()      --Ortalama değeri döndürür
      

Çarşamba, Eylül 26

SQL Join işlemleri

       Join işlemi tabloları birleştirmemizi sağlar ve sorgulama sonucunda yeni bir tablo oluşturulmaz, sadece birbirleriyle ilişkili tabloların birleştirilmiş halleri gosterilir. 
      Birincil anahtar her satır için benzersiz bir değer içeren bir sütun (veya sütunlar kombinasyonu) 'dir. Her birincil anahtar değeri tablo içinde benzersiz olmalıdır. Amaç, her tabloda verilerin tekrarlanmamasıdır ve tablolar arası ilişki kurulmasıdır. Çeşitli join teknikleri vardır.
  1. Inner join   --Her tablodaki karşılığı olan kayıtlar gosterilecektir.
  2. Left join     --Left ifadesinin solunda kalan tablodaki tüm veriler sağdaki tabloya bakılmaksızın gelicektir.
  3. Right join   --Left'in tam tersi
  4. Cross join  --Once yazılan tablodaki tüm elemanları diğer tablodakilerle eşleştirir.
  5. Full join      --Tablolardaki kayıtların tümünü karşılıkları olmasada getirir.
       Select Tablo1Ad,Tablo2Ad from Tablo1
       Inner join Tablo2
       on Tablo1.Id=Tablo2.Tablo1Id

     --"On" kısmında 2 tablonun nereden bağlanıcağını belirtiyoruz.

SQL Nedir?

            SQL (Structured Query Language) anlamına gelir. SQL bir veri tabanı ile iletişim kurmak için kullanılır. ANSI (Amerikan Ulusal Standartlar Enstitüsü)e göre, ilişkisel veritabanı yönetim sistemleri için standart bir dildir.
           SQL ifadeleri bir veritabanı güncelleme, görevleri gerçekleştirmek veya bir veritabanından veri almak için kullanılır. SQL kullanan bazı yaygın ilişkisel veritabanı yönetim sistemleri:
  • Oracle
  • Sybase 
  • Microsoft SQL Server
  • Access
  • Ingres
vb çoğu veritabanı sistemleri, SQL kullanmalarına rağmen, bunların çoğu da genellikle sadece kendi sisteminde kullanılan kendi ek özel uzantıları var . Ancak, bu tür "Create", "Delete", "Update", "Insert", "Select" ve "Drop" gibi standart SQL komutları tüm veritabanları için kullanılabilir.

Pazartesi, Eylül 24

SQL Create Table

          Sql arayüzünü kullanarak tablo kolaylıkla tablo yapabilirsiniz, fakat kodla yapmanız gerekirse aşağıdaki kodu kullanabilirsiniz.

     CREATE TABLE Tablo_Adi
     (
      KolonAdi   Data_Tipi,
      KolonAdi   Data_Tipi,           --Bu şekilde tablo oluşturabilirsiniz.
      KolonAdi   Data_Tipi,
      ...
     )

Pazar, Eylül 23

SQL Store Procedure (Saklı Yordam)

           Store procedure ler iş mantığınızın yani hazırladığınız sorgunun daha hızlı ve verimli çalışmasını sağlarlar ve sql injection gibi dış tehditlere karşı güvenlidirler.

           CREATE PROC sp_test
           AS
           BEGIN
                     select * from AdventureWorks.Production.Product
           END

Cuma, Eylül 21

SQL Update, Delete (Güncelleme-Silme)

       Sql Update

          Sql de tablodaki verileri güncellemek için Update sorgusu(query)kullanılır, yaptığı aslında silme ve ekleme işlemidir fakat bu işlemi yaparken ID değişmez.

           UPDATE tablo_ismi
           SET kolon1=değer, kolon2=değer,..
           WHERE kolonadi=Değer         //Burada koşul belirtiyoruz...
    
            Bir örnek daha iyi anlamanızı sağlıcaktır, biraz karışık bir sorgu 

SQL Select, İnsert (Seçme - Ekleme)

      Sql Select

         Sql de bir tablodaki verileri getirmek için select sorgusu kullanılır, sonuçu bir sutun, bir satır yada bir tablo olarak döndürebilirsiniz.
        
          SELECT kolon_ismi FROM  tablo_ismi      
          SELECT        *         FROM  tablo_ismi 
                
            Üst select sorgusu sadece ismini yazdığımız kolonu getiricektir, fakat alttaki select sorgusu tüm tablodaki kolonları getiricektir.
    

C# Class vs Struct

       Class ve struct arasında değer tip referans tip ayrımı vardır. Class bildiğiniz gibi referans tipli fakat struct değer tiplidir, class ve struct .Net'teki 5 temel tipin 2 sidir. Bir örnekle kullanımını ve arasındaki farkı anlatmaya çalışalım. Struct class'dan biraz farklıdır ;
  • Struct' lar default constructor içeremez
  • Struct içerisinde Field'lar değer almadan metotlar kullanılamaz
  • Kalıtım yapılamaz fakat interfaceler implemente edilebilir.
    

Perşembe, Eylül 20

C# Çarpım Tablosu

         Console ekranında çarpım tablosu yapmak çok basit ama yeni başlayanlar için iyi bir iç içe for örneği.
        static void Main(string[] args)
        {
            Console.ForegroundColor = ConsoleColor.Green;
            for (int i = 1; i < 11; i++)
                for (int a = 1; a < 11; a++)
                    Console.WriteLine("{0} X {1} = {2}", a, i, (a * i));
        }

C# Delegate - DynamicInvoke

      Delegelerin temsil (işaret) ettikleri metodları tek tek yada istediğimiz sırayla çalıştırmak istersek, DynamicInvoke metodunu kullanabiliriz, tabi önce metodları bir Delegate dizisine atmamız gerekiyor, sonrasında dizideki elemanları tek tek çalıştırabiliriz.


    delegate void Temsilci();
    class Program
    {
        static void Main(string[] args)
        {

Salı, Eylül 18

C# Matrix Programı

       Matrix filmlerinde gördüğünüz aşağıya doğru kayan yazı ve rakamlar dizisi c# console ekranında yapılıyor, kodlar aşağıda yapmanız gereken kodu debug ettikten sonra herhangi bir tuşa basmak.

namespace Matrix
{
    class Program
    {
        static Random r = new Random(); //Bu nesneyi ile rasgele sayilar ureticez
        static bool thistime = false;   //Bu kısımda stepler ayarlanıyor.
        static void Main(string[] args)
        {

C# Try-Catch-Finally (exception handling)

       Hata yönetimi sırasında Try-Catch-Finally kod buloğu kullanılır. Try kısmında hata olması muhtemel kodlar bulunmalıdır, catch bloğunda ise hata olması durumunda çalışmasını istediğiniz kodlar olmalı. Finally bloğu ise her halukârda çalışacak kodların bulunduğu bölümdür ve siz catch bloğunda return bile yapsanız finally bloğundaki kodlar çalıştırılacaktır.

C# Foreach

       Foreach ile dizilerin koleksiyonların ve hatta kendi tipinizin içinde gezebilirsiniz. Var tipi bütün tiplerin yerini tutabildiği için listenin içerisindeki her elemanı var tipinde bir değişkene attık.


Pazartesi, Eylül 17

C# String Kesme İşlemi - Substring

       String ifadeyi istediğimiz aralıkta kesebilirsiniz bunun için Substring methodunu kullanabilirsiniz. İsterseniz 2 parametre gönderip index aralığını belirtebilirsiniz, istersenizde başlamasını istediğiniz index numarasını verebilirsiniz.

    string metin = "Uzun metin";
    Console.WriteLine(metin.Substring (2,5));  //Bu satırda orta kısmı yazıcaktır.
    
    Console.WriteLine(metin.Substring (5));  //Burda ise 5.indexten başlıcak.
String Kesme - Substring

C# Char Diziyi String'e Çevirme

            char[] harfdizisi = new char[5];
            harfdizisi[0] = 'a';
            harfdizisi[1] = 'b';
            harfdizisi[2] = 'c';
            harfdizisi[3] = 'd';
            harfdizisi[4] = 'e';

            string metin = new string(harfdizisi);
            Console.WriteLine(metin);

Char Array To String

Pazar, Eylül 16

C# Hata Sınıfı Yazalım (Custom Exception)

     C# ta kendi fırlattığımız hataları kendi hata sınıfımızı yazarak yakalayabiliriz.İlk olarak Exception sınıfını kullanarak bir sınıf yazıyoruz(MyException) exception sınıfı'nın içindeki constructor'ları eziyoruz bu işlemi kısa yoldan yapabilmemiz mümkün "exc" harflerine basarsak "Exception" kod snippet'ına ulaşabiliriz. "Exception" seçip 2 defa  Tab tuşuna basarsak framework bizim için hata sınıfımızı kendi yazmış olucak.
     Not: Framework'un fırlattığı hata mesajlarını biz override edemeyiz sadece kendi hata mesajlarımızı yakalayıp "Message" property sini ezerek kendi hata mesajlarımızı dışarıdan gelen değere göre yazdırabiliriz.

Cumartesi, Eylül 15

Visual Studio 2012

     Visual Studio 2012, tüm dünyada işbirliği içinde çalışan bir mühendislik ekibi tarafından Visual Studio ile oluşturuldu. Visual Studio 2012 yazılım geliştiricilere ne gibi yenilikler sunuyor ana başlıklar halinde yazmaya calıştım.
  • Yeni bir görünüş ve dokunuş
  • Kullanımı kolaylaştırılmış menü ve kısayollar
  • Windows 8 e özel görsel araçlar
  • Web geliştirme yükseltildi (HTML5 ve CSS3 Tam destek)
  • Cloud özelliği
  • SharePoint eklentileri, geliştirmeleri
  • Esnek çevik işlemler, kesin ALM

.NET Framework

      .Net Famework,Microsoft tarafından geliştirilmiş bir uygulama geliştirme platformudur. Bu platformda web, windows, mobile, web servisleri gibi her türden uygulama desteklenmiş ve geliştirilen her türlü uygulamanın birbiriyle ve dış dünyadaki diğer uygulamalarla iletişim kurabilmesi için uygun alt yapı sağlanmıştır.
       .Net mimarisi, ortak bir yürütme ortamı , ortak bir değişken tür sistemi, ve bağlantılı kütüphanelerden oluşur ve programcılar için bir çok fonksiyon içerir. .Net Framework te kütüpaneler sınıflandırılmış ve programların işletim sistemleri ile uyumlu bir şekilde çalışması sağlanmıştır.
       Microsoft .NET Framework 4.5 RC versiyonunu buradan indirebilirsiniz.
       Visual Studio 2012 with MSDN buradan satın alabilirsiniz. İsterseniz  buradan 90 günlük deneme sürümünü indirebilirsiniz. 

Cuma, Eylül 14

Hello world

       Hepimizin C# Console ekranındaki ilk kodu budur sanırım,  üst kısımda yazı rengini değiştiren kod bulunuyor ConsoleColor.Green(Yeşil), alttaki kodsatırı ise ekrana bir yazı yazmak istediğimizde kullandığımız method (WriteLine). İlk kodunuz hayırlı olsun...

namespace HelloWorld
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.ForegroundColor = ConsoleColor.Green;
            Console.WriteLine("Hello World");
        }
    }
}
Ekran cıktısı aşağıdadır.
Hello World

Perşembe, Eylül 13

C# For

           Bu konu hakkında çok uzun makaleler var ben kısaca kullanımını ve nerede, neden ihtiyaç duyacağımızdan bahsetmek istiyorum. For diğer döngülere benzer olarak bir true-false arar ve true bulduğu sürece döner.
    for (;2 < 10;)      //Bu döngü sonsuza kadar döner   
    {                          
    }
          2 sayısı 10 sayısından küçük olduğu için sürekli true üretilecektir, buda döngünün sürekli dönmesini sağlar biz bu 2 rakamıda bir değişkene atayarak müdahale edebiliriz.

     for (int i =0 ; i<10 ; i++)      //Bu döngü 10 tur döner
    {                          
    }
          Özetlemek gerekirse (int i=0) değişkeni tanımladığımız bölüm, (i<10) true-false kontrolünün yapıldığı bölüm, (i++) ise değerin her bir turda arttılırdığı bölümdür. Bir işi tekrarlı olarak yaptırmak ve dizilerin içerisinde gezmek için kullanılabilir. Foreach döngüsünden daha yavaş çalışır fakat kullanım yerleri farklılık.
         Bir örnek yaparak daha iyi kavramaya çalışalım.
         for (int i = 0; i < 10; i++)  // i değeri her turda 1 arttırılıyor.
            {
                Console.WriteLine("deneme");
            }       
C# For Döngüsü
          

Çarşamba, Eylül 12

C# Tür Dönüşümü

C# Tür Dönüşümü   C# da tür dönüşümü 2'ye ayrılır bilinçli tür dönüşümü ve bilinçsiz tür dönüşümü kullanım ayanları farklıdır. 2 farklı tipi işleme sokmak istediğimizde tür dönüşümleri gerekmektedir.
  •    Bilinçsiz Tür Dönüşümü

    Küçük tipin büyük tipe donşmesi durumuna bilinçsiz tür dönüşümü deniyor, bunun sebebi RAM uzerinde daha az yer kaplayan küçük boyutlu değişkenin büyük boyutlu değişken e donüştürülmek istenmesi.

namespace BilincsizTurDonusumu
{
    class Program
    {
        static void Main(string[] args)
        {
            byte kucuk = 250; // Bellekte 8 bit yer tutar
            ulong cokBuyuk = 1234567891123456; // Bellekte 64 bit yer tutar           
            cokBuyuk = kucuk; // Kucuk bir deger icin bellekte fazla yer ayırmış olduk bu yüzden bu tip donüşümlere bilinçsiz tür dönüşümü denir.
        }       
    }
}
  • Bilinçli Tür Dönüşümü

       Bu dönüşüm tipinde ise büyük türden kücük türe dönşümdür, ve mühtemel veri kaybını bilinçli olarak kabul ettiğimizi framework'e bildiririz." (dönüştürülecek hedef tür)değişken " seklinde tanımlarız.

namespace BilincsizTurDonusumu
{
    class Program
    {
        static void Main(string[] args)
        {
            int sayi = 45065431;  // Bellekte 32 bit yer kaplar
            byte kSayi = 15;  //Bellekte 8 bit yer kaplar

            kSayi = (byte)sayi; //sayının önüne parantez içinde dönüştürmek istediğimiz türü belirtmeliyiz, aksi halde derleme zamanı hatası alırız bu durumda veri kaybı kaçınılmaz byte tipi 0-255 arası değer barındırabilir ve kSayi değişkeninin aldığı değer 215 olacaktır.
            //Tür dönüşümüne izin verilmeyen bazı tiplerde ise Convert sınıfı kullanılabilir.             
            string yazi = "123456";
            int sayi = 12;
            sayi = Convert.ToInt32(yazi); //sayi değişkeni 123456 değerini aldı.           
        }       
    }
}

C# Methot'tan Geri Çok Değer Döndürme(Tuple)

namespace TupleKullanimi
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine(Dondur(15, "deneme", true));
        }
        static Tuple<int, string, bool> Dondur(int a, string b, bool c)
        {
            return Tuple.Create(a, b, c);
        }
    }
}
      Tuple sınıfını kullanarak bir methot'tan 1'den çok değer(8 ile sınırlandırılmış) döndürebiliriz.Yukarıdaki şekilde ekrana yazdırmak istersek ekran çıktısı aşağıdaki gibi olucaktır.
C# Ekran cıktısı






      Eger bir değişkene almak isterseniz.Var değiskeni gelen değerleri tutabiliyor, fakat ulaşmak istediğinizde her bir değişken için Item1, Item2, Item3 değerlerinin üzerinden ulaşmanız gerekicek bu da ufak bir dez avantaj oluyor.

var a= Dondur(15, "deneme", true);

Salı, Eylül 11

C# Operatörler

  • Atama Operatörü
  • Aritmetiksel Operatörler
  • Mantıksal Operatörler
  • Karşılaştırma Operatörleri
  • Bitsel Operatörler

1-Atama Operatörü

          = atama operatörüdür ve sağındaki değeri yada değişkeni solundaki değişkene atar referans tiplerde ise referansini atar.

2-Aritmetiksel Operatörler

          Matematikte kullandığımız operatörlerdir. Toplama(+), Çıkarma(-), Çarpma(*), Bölme(/), Mod Alma(%) ve pratik kullanım icin (++), (--) operatörleride değeri 1 arttırıp, 1 azaltır. 

3-Mantıksal Operatörler

      3 mantıksal operatör vardır. (&&)ve Bu operatör 2 sonuçta doğru ise true deger dondurur., (||)veya Bu operatör 2 sonuçtan biri doğru olsada true sonuç dondürür., (!)değil Bu operatör sonuç doğru değilse true sonuç döndürür.

4-Karşılaştırma Opetörraleri  

    < küçüktür, >büyüktür, <=küçük eşittir, >=büyük eşittir , ==eşittir,!= eşit değildir.

5-Bitsel Operatörler

      Bitsel operatörler ramde tutulan verinin bitleri üzerinde işlem yaparlar. (&)ve, (|)veya, (~)değil, (>>)sağa bit kaydırma, (<<)sola bit kaydırma şeklinde toplam 5 adettir.

C# Değişken Tanımlama

       Main methodunun icerisinde değişken tanımlanırken değişkenin tipi,adı ve ilk değeri verilmelidir. Class düzeyinde bir tanımlama yapılacaksa durum değişicektir.
 
<değişken-tipi><değişken-adı>=<ilk-değer>

int sayi = 2;

using System;
namespace DegiskenTanimlama
{
      class Program
      {
             static void Main(string[] args)
            {
                   int sayi =  2;     //Daha önce kullanılmamış bir isim verilmeli
                   Console.WriteLine(sayi);
            }
      }
 }

Console.WriteLine  --  Console ekranında cıktı alabilmemiz icin vardır.Kodumuzun ekran cıktısı
Console Ekran Cıktısı