Session nedir, ne işe yarar?

Session, bir oturum nesnesidir. Ziyaretçiler bir web sunucusundan herhangi bir sayfayı talep ettiğinde, sunucu bilgisayarlar gelen ziyaretçilerin herbirine ayrı ayrı oturumlar başlatır. Peki bu farklı oturumları nasıl birbirinden ayırt etmektedir? Şöyle ki Asp.Net sunucularında oturum sahiplerini tanıyabilmek için özel bir algoritma ile oluşturulan tanımlayıcı bir değer kullanılır. Bu tanımlayıcı değerlere SessionID denilmektedir. İşte ziyaretçiler bu SessionID değerlerine göre birbirinden ayırt edilmektedir.

Session nesneleri yardımıyla kullanıcılara ait oturum bilgileri sayfalar arasında taşınabilmektedir. Tabii ki bu bilgi taşıma olayı sonsuza kadar değildir. Bu süre Session’a atanan oturum süresi boyunca devam etmektedir. Session’ın son bulması için sadece belirlenen bu oturum süresinin dolması da gerekmez. Kullanıcı eğer geçerli olan tarayıcıyı kapatırsa oturumu otomatik olarak son bulacaktır. Ya da sunucu bilgisayarda oluşabilecek sorunlardan dolayı da oturumlar son bulabilir. Session’da kullanıcıya ait pek çok bilgi tutulabilir (Örneğin; kullanıcı adı, soyadı, şifresi, ip adresi vs.). Genel olarak Session nesnesinin kullanımına verilebilecek en güzel örnek alışveriş siteleridir. Burada kullanıcının sepetine ait olan bilgiler Session’da tutulup site içerisinde sayfalar arasında taşınabilmektedir.

Şimdi bu Session olayını bir de resim ile gösterelim.

Resimde de görüldüğü gibi, Client (istemci bilgisayar) Server’dan (sunucu bilgisayar)bir talepte bulunur ve sunucu bilgisayardan kendisine bu talep doğrultusunda bir oturum açılır ve SessionID atanır. Oturum süresi boyunca bu da SessionID değerine göre tanınır.

By mert

Asp.Net’de Cookie İşlemleri

Cookie client yani ziyaretçi bazlı veri saklanmasına yarayan bir yapıdır. Cookie browser da saklanır silinme zamanı geldiğinde browser cookie yi otomatikman siler. Client bazlı olduğu için önemli bilgilerin cookie ye atılmamasına dikkat edilmelidir.

Cookie browser da tutulan bir yapıdır. Örneğin Firefox ile bir E-Ticaret web sitesine girdiniz ve üye girişi yapmadan sepetinize ürünler eklediğinizde büyük bir ihtimal ile sepet bilgileriniz cookie olarak browser da saklanıyordur. Firefox da gezindiğiniz ve cookie yi silmediğiniz sürece sepet bilgileriniz saklanacaktır. Aynı anda Internet Explorer da o web sitesine girdiğinizde sepetinizin boş olduğunu görürsünüz, çünkü sepet cookie si Firefox tarayıcısındadır. Session bilgileri de cookie de tutulur, örneğin Facebook’a giriş yapıp sonra da browser ın cookie sini temizlerseniz (Ctrl + Shift + Delete) çıkış yapmış olursunuz.

Asp.Net de cookie yazma işlemi Response nesnesi ile, cookie okuma işlemi Request nesnesi ile yapılır. Bir cookie de 1 ve 1 den fazla değer tutulabilir. Cookie yazma işlemi aşağıdaki gibidir.

HttpCookie c = new HttpCookie("MyCookie", "değer"); /*MyCookie isminde cookie oluşturduk ve value sine değeri atadık*/

c.Expires = DateTime.Now.AddDays(30); /*Cookie nin geçerli olacağı süreyi belirttik */

HttpContext.Current.Response.SetCookie(c); /*Response nesnesi ile oluşturduğumuz cookie yi ziyaretçinin tarayıcısına yazdırdık. */

Burada dikkat edilmesi gereken nokta oluşturduğumuz cookie yi Response nesnesi ile yazıyor olmamızdır. Response.SetCookie(c); komutu olsaydı cookie nesnesi ziyaretçinin browserına kayıt edilmiş olmazdı. Cookie okurken ise Request nesnesini kullanacağız.

HttpCookie MyCookieObject = Request.Cookies["MyCookie"];

Yukarıdaki satır da MyCookie bulunamaz ise geriye null değeri verir. MyCookieObject i kullanarak aldığımız cookie ile ilgili işlemler yapabiliriz. Cookie nin değerini okumak için HttpCookie nesnesinin value property sini kullanabiliriz.

string value = MyCookieObject.Value;

Cookie silmek için ise Response.Cookies.Remove metoduna silmek istediğimiz cookie nin adını veririz.

Response.Cookies.Remove("MyCookie");

Bir cookie de birden fazla değer de tutulabilir. Bunun için HttpCookies in Values Property si kullanılır.

HttpCookie cSepet = new HttpCookie("Sepet");
cSepet.Values["1"] = "5";
cSepet.Values["2"] = "10";
cSepet.Values["4"] = "15";
cSepet.Expires = DateTime.Now.AddDays(1o);
Response.Cookies.Add(cSepet);

Yukarıdaki kod ile Sepet cookie sinde 1,2,4 key değerleri ile birden fazla veri tutulmaktadır. Sepet cookie sini okurken ise Request.Cookies ile cookie yi okuyup HttpCookie nesnesinin values property si ile bu cookie nin key değerleri alınır ve bu key değerlerinin value leri okunur.

string ID, Adet;

HttpCookie cSepet = Request.Cookies["Sepet"];

foreach (string item in cSepet.Values) /* Sepet cookie sindeki key lerin listesi string[] */

{

ID = item;

Adet = Request.Cookies["Sepet"][item]; /* Sepet cookie sindeki key lerin değerleri okunur */

}

Sepet cookie sindeki bir key in değerini güncellemek için ise önce sepet cookie si HttpCookie nesnesine atılır. Key boş olarak tekrar setlenir ve cookie tekrar yazılır.

HttpCookie cSepet = Request.Cookies["Sepet"];
cSepet.Values["2"] = "";
Response.Cookies.Add(cSepet);

Cokiee nedir? Ne işe yarar?

Cookie kelimesi “web sayfası sunucusunun sizin bilgisayarınızın hard diskine yerleştirdiği ufak bir text dosyası” için kullanılmaktadır. Yani, o web sitesinin bir sonraki ziyarette sizi tanıması için geçerli bir bilgidir bu. Bu text dosyası bir komut dosyası olmadığı gibi, virüs de değildir. Size özel bir tanımlamadır ve sadece bu kodu tanımlayan web sunucusu tarafından okunabilir. 

Cookie’nin amacı; sizin o siteyi yeniden ziyaret ettiğinizi web sunucuya bildirmekten ibarettir.

Ne işe yarar?

Sizi zaman kaybından korur. Kendinize kişiselleştirdiğiniz bir sayfanız varsa ya da bir ürün ya da servis için kayıt olmuşsanız, bu cookie sizi hatırlatır. Bir sonraki dönüşünüzde, istediğiniz bilgiler ekrana gelir (mesela otomatik hatırlanmasını istiyorsanız, hatırlar). Aynı web sitesinden yeni bir servis için kayıt olduğunuzda da daha önce verdiğiniz cevapları otomatik olarak hatırlar. Yani web siteleri sizi bu cookie’ler yardımıyla hatırlar. Bilgileri değiştirdiğiniz takdirde ise yeni haliyle hatırlar.

Html Form Action daki Get ve Post nedir, ne işe yarar?

GET ve POST yöntemleri kullanım olarak birbirine çok benzeyen iki farklı yöntemdir. Şimdi bu yöntemlerden hangisi ne zaman kullanılır görelim.

GET :
HTTP istekleri arasındaki varsayılan yöntemdir. GET metodu genellikle tarayıcıların adres çubuğundaki isteğin (querystring) 512 karakteri geçmediği yerlerde HTML sayfası almak veya bir resim görüntülemek istendiğinde kullanılır. GET metodu ile yapılan istekler tarayıcının adres satırında görünür. Sadece belirli boyutta veri gönderileceği zaman kullanılır.

<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-9"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
  <body>
    <form action="<c:url value="/loginCheck" />">
      <table border="1">
        <tbody>
          <tr><td>Username :</td><td><input type="text" name="username"/></td></tr>
          <tr><td>Password :</td><td><input type="password" name="password"/></td></tr>
        </tbody>
      </table>
      <input type="submit" value="Login" />
   </form>
   <font color=red><b>${error}</b></font><br/>
  </body>
</html>
Tarayıcının adres çubuğu aşağıdaki gibi olacaktır.
POST:
POST metodu ise URL’de görünmesini istemediğimiz veriler olduğunda, dosya yükleyeceğimiz zaman, querystring’in çok büyük olduğu durumlarda kullanılır. İstek yaparken gönderdiğimiz parametreler tarayıcıların desteklediği formatlarda olmayabilir. Örneğin Japonca bir kelimeyi ya da Arapça’da bir harfi parametre olarak gönderirken tarayıcılar bu karakterleri anladıkları formata çevirirler. Bu da genellikle uzun bir ifadeye denk gelir. Normalde kendi dilinde kısa olan bir kelime, parametre geçilirken URL’nin büyümesine sebep olur. Bu gibi durumlarda da yine POST metodunu kullanmak tavsiye edilir.

POST yönteminde gönderebileceğimiz verinin boyutu ile ilgili bir sınır yoktur. Ayrıca gönderdiğimiz parametrelerin adres satırında görünmemesi dolayısıyla GET yöntemine göre daha güvenlidir. HTML form gönderileceği zaman neredeyse her zaman POST yöntemi tercih edilir.
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-9"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
 <body></span>
  <form action="<c:url value="/loginCheck" />" method="post">
   <table border="1">
    <tbody><span style="color: #000000;"> <tr><td>Username :</td><td><input type="text" name="username"/></td></tr>
     <tr><td>Password :</td><td><input type="password" name="password"/></td></tr>
     </tbody>
   </table>
    <input type="submit" value="Login" />
 </form>
 <font color=red><b>${error}</b></font><br/>
 </body></span>
</html>
Tarayıcının adres çubuğu aşağıdaki gibi olacaktır.
Dikkat ettiyseniz isteği GET ile gönderdiğimizde adres çubuğunda parametre isimleri ve değerleri görünürken POST ile gönderdiğimizde görünmemektedir.

Stored Procedure ile Function arasındaki farklar nelerdir?

 

  • Function Select içerisinde kullanılır ama Procedure ün böyle bir zorunluluğu yoktur. Procedure tek başına kullanılabilir.
  • Procedure geriye tablo döndürür, Function geriye mutlaka değer döndürür(tablo da olabilir)
  • Function ı, eğer owner üzerinde kayıtlı ise, dbo. dedikten sonra çağırırsınız ama Procedure u sadece adını yazarak çağırabilirsiniz
By mert

Function

Functionlar parametre alıp geriye bir değer veya tablo döndüren kurallardır. Bizim oluşturduklarımız User Defined Function diye geçer ama max,avg, gibi fonsiyonlar ise System Function lardır. Function’lar

  • Select içerisinde kullanırlar. Örneğin “Count(*), Sum, Max, Avg vs” fonksiyonları tek başına kullanamazsınız.
  • Uygulamalarda çağırılabilirler
  • Bir başka fonksiyon içerisinde çağırılabilirler
  • Check Constrait gibi kullanılabilirler
  • Stored Procedure yerine kullanabilirler

Function Oluşturma


Create Function TekMiCiftMi(@deger int)

returns bit–(bit yerine Table yazarsanız geriye tablo döndürür)

as

begin

declare @donen bit

if(@deger % 2 = 0)

set @donen=0

else

set @donen=1

return @donen

end

Function Kullanımı

Select dbo.TekMiCiftMi(5) as Sonuc

Function Düzenleme

Alter Function TekMiCiftMi

Function Silme

Drop Function TekMiCiftMi
By mert

Stored Procedure

Stored Procedure’ler database server üzerinde saklanan SQL cümlecikleridir. Parametreler alabilirler ve size sonuçlar döndürebilirler. Avantajları arasında DB server üzerinde olmasından dolayı daha hızlı çalışmaları, sadece ilk çalışmalarında derlenmeleri sonraki çalışmalarda derlenmemeleri (bu da neden hızlı olduğunu açıklıyor) SQL cümlecikleri ve programlama dilleri ile yazdığımız kodları birbirinden ayrıştırmamızı sağlaması sayılabilir.

Store Procedure  veritabanı üzerinde saklanan yordamlardır.  Yordamlar dışarıdan parametre alabilir ve geriye veri veya bilgi gönderebilirler.

Fonksiyon yazmamızın bir nedeni, yazılan kodun birden fazla kez kullanımını sağlamaktır. Bir kere yazdıktan sonra derlenir ve istediğimiz kadar çağırabiliriz.

Store Procedure’de isimlendirme yapılırken genellikle spProsedürAdı şeklinde yapılması, okunabilirliği arttırır.

Begin-End arasında kalan yer kapsam anlamına gelir. Buradaki anlamı Procedure içindeki kapsamı gösteriyor. Aynı şekilde While döngüsü, If koşulu  kullanmak istediğimizde Begin – End ile kapsamı belirtebiliriz.

Çalıştırma yaparken ise EXEC ProsedürAdı veya EXECUTE  ProsedürAdı komutlarını kullanarak yapabiliriz.

CREATE PROCEDURE UrunleriGetir @CategoryID int AS BEGIN

SELECT * FROM

Production.Product P WHERE P.ProductCategoryID = @CategoryID

END

EXEC UrunleriGetir @CategoryID = 1

Yukarıda  ürünleri ekrana getirmek amaçlı bir prosedür oluşturmuş olduk. Tanıttığımız parametrenin değeri Product tablosundaki ProductCategoryID’ ye eşit olursa bize o siparişin  tüm bilgilerini gösterecektir.

Parametre, SQL kodunuzdaki değişkenlerin atanmasında kullanılır. Kullanımı zorunlu değildir, ama programcının işini çok kolaylaştırır. Parametre alan bir fonksiyon yazmak istediğimizde ise prosedür adından sonra parantez içinde parametreleri veririz. Fakat parametre verirken @ işaretini kullanılır. Ayrıca parametrelere varsayılan değerde atama yapılabilir.

Geriye değer döndüren prosedürlerde out veya output kullanılır. Bu kelimeleri kullanarak, hangi parametrenin değer döndürdüğünü SQL SERVER’a tanıtırız.

SQL SERVER içinde değişken tanımlamak için DECLARE anahtar kelimesini kullanılır.

Stored Procedure’ler şu faydaları sağlar:

1. Uygulamanın getirdiği bazı iş kuralları prosedür içinde tanımlanabilir. Bir kez oluştuktan sonra bu kurallar birden çok uygulama tarafından kullanılarak daha tutarlı bir veri yönetimi sağlanır. Ayrıca bir fonksiyonelliğin değişmesi ihtiyacı doğduğunda her uygulama için değişiklik yapmak yerine, sadece bir platformda değişiklik yapılır.

2. Tüm prosedürler üstün performansla çalışır ancak birden fazla çalıştırılacak olan prosedürler sorgulama planları procedure cache içinde saklandığından daha da hızlı çalışırlar.

3. Stored Procedure’ ler SQL Server start ettikten sonra otomatik olarak çalıştırılmak üzere ayarlanabilirler.

4. Stored Procedure’ ler harici olarak kullanılırlar. Uygulama tarafından çağrılmak zorundadırlar. Otomatik devreye giremezler.

5. Stored Procedure’ lerın içinde SQL sorgulama diline ek olarak T-SQL komutlarını kullanabiliriz.

6. Kullanıcının bir tabloya erişim izni olmasa bile o tablo üzerinde işlem yapan bir stored procedure’ ü kullanma izni olabilir.

By mert

SQL Server String Fonksiyonları

 

ASCII()
Verilen string ifadenin ASCII kodunu verir.
Kullanım Şekli – ASCII(String Değer)
Örnek: SELECT ASCII ('A')

CHAR()
Verilen sayısal ASCII kodunu karaktere çevirir.
Kullanım Şekli – CHAR(Integer Değer)
Örnek: SELECT CHAR(65)

CHARINDEX()
Cümle içinde aranan kelimenin kaçıncı harften başladığının indexini verir.
Kullanım Şekli – CHARINDEX(Aranacak kelime, cümle)
Örnek: SELECT CHARINDEX('mert', 'Merhaba Dünya')

DIFFERENCE()
İki String değer arasındaki farkın kaçıncı karakterden başladığını gösterir.
Kullanım Şekli – DIFFERENCE(stringdeger1, stringdeger2)
Örnek: SELECT DIFFERENCE('Mert', 'Mrt')

LEFT()
String değerin soldan kaç karakter alacağını söyler.
Kullanım Şekli – LEFT(string ifade, int kaç değer alacağı)
Örnek: SELECT LEFT('abcdefg', '2')

LEN()
String ifadenin uzunluk değerini Integer olarak verir.
Kullanım Şekli – LEN(String ifade)
Örnek: LEN(Mert

LOWER()
String ifadelerim tüm harflerini küçüğe çevirir.
Kullanım Şekli – LOWER(String ifade)
Örnek: SELECT LOWER('Mert')

LTRIM()
String ifadede soldaki boşlukları siler ve düzenler.
Kullanım Şekli –LTRIM(String ifade)
Örnek: SELECT LTRIM('         Mert'

NCHAR()
Çok büyük değerdeki ASCII karekter değerlerini verir.
Kullanım Şekli – NCHAR(int değer)
Örnek: SELECT NCHAR(985)

PATINDEX()
Cümlenin içindeki aranılan harfin kaçıncı indexten başladığını gösterir.
Kullanım Şekli – PATINDEX(aranılacak string, cümle)
Örnek: SELECT PATINDEX ('rt' , 'Mert Kaya')

QUOTENAME()
Cümle içinde özel karakterleri ayırmak için kullanılır.
Kullanım Şekli – QUOTENAME(string ifade)
Örnek: SELECT QUOTENAME('abc[]def')

REPLACE()
Cümle içinde değişecek kelimelerin yerini değiştirir.
Kullanım Şekli – REPLACE(cümle, değişecek cümle, yerine yazılacak cümle)
Örnek: SELECT REPLACE('abcdefghijkcde', 'cde', 'xxx');

REPLICATE()
Verilen String ifadenin kaç kere tekrar edileceğini gösterir.
Kullanım Şekli – REPLICATE(string değer, int tekrar değeri)
Örnek: SELECT REPLICATE('Mert     ', 4)

REVERSE()
Verilen kelime ya da cümleyi tersten yazar.
Kullanım Şekli – REVERSE(string cümle)
Örnek: SELECT REVERSE('Mert Kaya')

RIGHT()
Cümle içinde sağdan kaç harf alacağını gösterir.
Kullanım Şekli – RIGHT(string cümle, int değer)
Örnek: SELECT RIGHT('Mert Kaya', 5) 

RTRIM()
Cümle içinde sağdaki boşlukları siler.
Kullanım Şekli – RTRIM(string ifade)
Örnek: SELECT RTRIM('Mert Kaya                    ')

SOUNDEX()
String değeri Alfanümerik olarak dönüştürür.
Kullanım Şekli – SOUNDEX(String değer)
Örnek: SELECT SOUNDEX ('Mert') 

SPACE()
Cümle içerisinde ne kadar boşluk bırakılacağını gösterir.
Kullanım Şekli – SPACE(int değer)
Örnek: SELECT 'MERT' + SPACE (2) + 'KAYA'

STR()
Decimal ifadeleri kaçıncı karaktere yuvarlayacağını gösterir.
Kullanım Şekli – STR(Decimal değer, kaç değer olduğu, virgülden sonra kaç değer yuvarlayacağı)
Örnek: SELECT STR(123.456, 6 , 2) 

STUFF()
Cümlenin içine kelime eklemek için kullanılır.
Kullanım Şekli – STUFF(String cümle, başlangıç değer, silinecek değer, eklenecek string)
Örnek: SELECT STUFF ('Mert Asya', 3, 5, 'rt KA')

SUBSTRING()
Cümle içerisinden parça almak için kullanılır.
Kullanım Şekli – SUBSTRING(cümle, başlangıç, int, alınacak değer int) 
Örnek: SELECT SUBSTRING ('abcdefgh', 2, 3) 

UNICODE()
ASCII kodunu verir.
Kullanım Şekli – UNICODE(Char değer)
Örnek: SELECT UNICODE ('A') 

UPPER()
Verilen kelime veya cümleyi büyük harfe çevirir.
Kullanıum Şekli – UPPER(String değer)
Örnek: SELECT UPPER('mert kaya') 

By mert

SQL Server Tarih Fonksiyonları

Merhaba arkadaşlar, bu yazıda sizlere SQL Server Tarih fonksiyonlarını anlatacağım.

SQL Server’da sistem tarihini almak için GETDATE() fonksiyonunu kullanırız.

GETDATE()

SELECT GETDATE()

Yukarıdaki sorgu bize, SQL Server’ın kurulu olduğu Server’ın sistem tarihini görüntüler.

* 2011-12-12 11:43:23.556

YEAR()

SELECT YEAR(GETDATE())

Yukarıdaki sorgu bize, dönecek olan tarihin yıl bilgisini gösterir.

* 2011

MONTH()
SELECT MONTH (GETDATE())

Yukarıdaki sorgu sistem tarihinin ay bilgisini gösterir. Month fonksiyonu bizden tarih değeri olan bir değişken ya da kolon adı ister.

* 12

DAY()

SELECT DAY (GETDATE())

SELECT DAY (DogumTarihi) as [Personelin Doğduğu Gün] FROM Personeller WHERE ID=1

Yukarıdaki sorgu data tipi date olan bir kolonun ya da değişkenin sadece gün bilgisini gösterir. DAY fonksiyonu bizden parantezler içinde tarih tipinden bir değişken ya da kolon adı istiyor.

* 20

By mert

Anders Hejlsberg Kimdir?

Danirmarka’lı bir bilgisayar mühendisi. Borland‘ın ilk çalışanlarından, Turbo Pascal‘ı yazan kişi. Sonlarını Delphi ürün hattının baş mimarı olarak çalıştı. On sene kadar önce Microsoft tarafından 3 milyon dolara transfer edildi. Microsft’ta Visual J++ ve Windows Foundation Classes‘i geliştirmede önemli rol oynadı. Ardından COM+ ve VS.Net Framework ekibinin başında çalıştı. C# dilini tasarladı ve derleyicisini yazdı.

By mert