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 :
Cuma, Eylül 28
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)
)
create table #TempleTableOrnek
(
Id int identity(1,1),
Ad nvarchar(50),
Soyad nvarchar(50)
)
Etiketler:
Admintemptable,
Sql,
Temptable,
Transact-Sql
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.
Ö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.
Etiketler:
Sql,
Transact-Sql,
View
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
Etiketler:
Skaler,
Sql,
Transact-Sql
Ç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.
Inner join Tablo2
on Tablo1.Id=Tablo2.Tablo1Id
--"On" kısmında 2 tablonun nereden bağlanıcağını belirtiyoruz.
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.
- Inner join --Her tablodaki karşılığı olan kayıtlar gosterilecektir.
- Left join --Left ifadesinin solunda kalan tablodaki tüm veriler sağdaki tabloya bakılmaksızın gelicektir.
- Right join --Left'in tam tersi
- Cross join --Once yazılan tablodaki tüm elemanları diğer tablodakilerle eşleştirir.
- Full join --Tablolardaki kayıtların tümünü karşılıkları olmasada getirir.
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:
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
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,
...
)
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
CREATE PROC sp_test
AS
BEGIN
select * from AdventureWorks.Production.Product
END
Etiketler:
Create,
Sql,
Store Procedure
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));
}
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)
{
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)
{
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.
Etiketler:
C#,
C# Foreach,
Döngü,
for,
Foreach
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 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.
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.
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.
.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.
Etiketler:
.Net,
.Net Framework 4.5,
C#
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.
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.
Etiketler:
.Net,
Console,
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");
}
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");
}
Etiketler:
C#,
C# For,
CSharp,
for,
For Döngüsü
Çarşamba, Eylül 12
C# Tür Dönüşümü
Bilinçsiz Tür Dönüşümü
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ü
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.
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);
{
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.
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ı
<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ı
Etiketler:
.Net,
C#,
Console,
Console WriteLine
Kaydol:
Kayıtlar (Atom)