27 Temmuz 2010 Salı

WPF uygulamalarında drag&drop işlemleri.

wpf uygulamalarında kullanılan ozelliklerinden bırıdır surukle bırak ıslemleri. bu ornekte bir textbox içerisindekı bilgileri baska bir textbox ıcerisine surukleyıp bırakacagız.bu ıslemlede bircok event kullanılmakta.

Öncelikle surukleme yapılacak textbox ın mousedown event ozelligi kullanılmakta.kodlar:

C#kodları
private void TextBox_MouseDown(object sender, MouseButtonEventArgs e)
        {
            Label lbl = (Label)sender;
            DragDrop.DoDragDrop(lbl,lbl.Content, DragDropEffects.Copy);
        }
daha sonra bırakcagımız textboxın textdrop event ayarlamalar yapılmalı.ornegın kopyalanacak veri string dısında baska bir veriyse kopyalama yapılmayacagından surukleme ıslemını engellemek uzere mouse imlecini degiştirdik. kodlar ise sekıldeki gibi
C#

private void text_Drop(object sender, DragEventArgs e)
        {
             if (e.Data.GetDataPresent(DataFormats.Text))
                e.Effects = DragDropEffects.Copy;
            else
                e.Effects = DragDropEffects.None;
        }
ayrıca xmal dosyasının icerigide sekıldeki olmalı eventlar xmal dosyasınada eklenmelidir.
:

XMAL kodları:

26 Temmuz 2010 Pazartesi

Wpf uygulamalarında event kullanımı

wpf uygulamalarında fark ettım vede kullanıslı olabılecek bi kac event ornegı vermek istıyorum.

ornegin text boxa sadece sayı gırısını saglamak için yapılması gerekenler:

textboxın PreviewTextInput evetın asagıdakı kodlar yazarsak text box icerisine sadece sayı gırısını saglamıs oluruz.  

C# kodları
private void PreviewTextInput(object sender, TextCompositionEventArgs e)
        {
            int val;
            if (!(int.TryParse(e.Text, out val)))
            {
                e.Handled = true;
            }
        }
bu eventta text boxa gırılen deger int.tryparse fonksıyonu ile eger int degere cevriliosa textbox içerisine sayı girisine izin veriyor. bunun dısında baska bı deger girilemez.

baska bir event bahsedecek olursak mesela text box içerisinde bosluk bırakılması ıstenmıyorsa oda;

text boxın baska bir eventın kullancaz PreviewKeyDown eventına asagıdakı kodlar yazıldıgı takdirde text box ıcerıgıne bosluk girilmesi yada baska herhangı bir tusun gırılmesı engellenebilir.
C#kodları
private void PreviewKeyDown(object sender, KeyEventArgs e)
        {
            if (e.Key==Key.Space)
            {
                e.Handled = true;   
            }
        }
movesmove event ilede mouse bulundugu koordınatları belirliyebılırız .örnegin:

C#
private void MouseMove(object sender, MouseEventArgs e)
        {
            Point pt = e.GetPosition(this);
            label1.Content = string.Format("you are at here {0},{1}", pt.X, pt.Y);
        }

WPF xaml kullanarak basit bir uygulama

bu yazıda wpf ile cok basit bir ornek yapcam sadece layout araclarını kullanrak bir uygulama yaptım.
bu uygulamada wpf ait olan 2 layout kullanacz  dockpanel ve stackpanel.

xaml kodları

 

Gorunumu ise:
            
















uygulamada kullanılan  ozellikleri kısaca acıklarsak 1 tane dock panelin içine 2 tane stack panel koyduk.dockpanelin  dockpanel.bottom ve dockpanel.top ozeliklerini kullanarak bir stack panelin yukarda dıerininde asagıda kalmasını sagladık.           
  2.stack panelde orientation ozellıgı stackpanele konulan ogelerin yanyana yada altalt kullanılması saglar.biz burda horizontal yaparak buttonları yan yana dızdık.Ayrıca margin="2,10,10,2" seklinde ayarlanıyor. buda bize ogenın soldan 2 ustten 10 sag 10alttan 2  pixel bosluk bırakmamızı saglıyor.                                            

20 Temmuz 2010 Salı

XAML nedir?

Daha onceki yazıada bahsetmiş oldugum wpf uygulamlarında kullanılan xaml uzantılı dosyalarının kullanım amacları ve sundugu yenılıklerden bahsetmek ıstıyorum.

XAML (Extensible Application Markup Language) aynı xml gibidir ve xml butun ozelliklerini kullanabılır.
Xaml Wpf uygulamaların arayuzlerınde,Silverlight, WF(Workflow Foundation) akıs semalarında ve elektronik sayfa olarak XPS(Xml Paper Specification) kullannılmkata.

XAML Kullanmanın Yararları

Xaml le yapılacak herseyı kodlarlada yapılırız.Xaml sadece nesneleri farklı bir yolla tanımla imkanı sunuyor.Wpf uygulamalarında Xaml kullanmadan da yapılabilir.baslıca yararları ise soyle:

Xaml kodları gayet kısa ve anlasır sekıldedir.
Uygulamanın tasarım kısmı ile yazılım kısmını ayırıyor.bu ozelligide tasarımcıyla yazılımcı arasındakı ilişkiyi ayırıyor.

Daha onceden dedıgım gıbı xaml ile yapılacak herseyi kodlada yapabilirdik. fakat kodla yapmamımız zahmetli oluyor ornek  verecek olursam.bir stack panellin içine bir buton ve bir text box olusturup atalım.

XAML Kodları

     
       
C# Kodları

 StackPanel stack = new StackPanel();
            this.Content = stack;

            TextBox text = new TextBox();
            text.Margin = new Thickness(10);
            text.Height = 20;
            text.Width = 60;
            stack.Children.Add(text);

            Button btn = new Button();
            btn.Height = 20;
            btn.Width = 50;
            btn.Content = "Tıklayın";
            stack.Children.Add(btn);
goruldugu gibi xaml kullanmak ekstra kod yazmaktan kurtarıyor.


XAML Namespace
  Her XAML dosyasının basında 2 tane namespace vardır.
birincisi: http://schemas.microsoft.com/winfx/2006/xaml/presentation. System.Windows.Control  icinde bulunan wpf kontrollerini kullanmamızı saglıyor.
ikincisi:http://schemas.microsoft.com/winfx/2006/xaml
System.Windows.Markup bulunan xaml keywordlerini kullanmamızı saglıyor.

19 Temmuz 2010 Pazartesi

WPF (Windows Presentation Foundation) nedir?

Son gunlerde heryerde karsıma cıkan wpf kısaltmasının ne oldugunu merak edip arastırdım.ne oldugu neye işe yaradıgını nerelerde kullanıldıgını ogrenmek istedim.biraz arastırma yaptıktan sonra gayet guzel ve hayırlı :)  birsey oldugunu ogrendım.Fakat bu konuyu arastırırken buldugum kaynaklar yenı baslayan bırı ıcın pek anlasılır deildi. bu yuzden ben ogrendıklerımı en basıt sekılde anlatmak istiyorum.

bu Teknoloji yenı yenı kullanılmaya baslandı framework 3.0 la gelen bır yenilik.Bu yuzden yapılacak olan calısmalarda framework 3.0 ve ustu yuklu olması gerekiyor.

WPF teknolojisi yapılacak projelerde gorsel ozellik kazandırması saglıyor.Bu teknolojiden oncede gorsel ozellik kazandırmak ekstradan cok kod yazmak gerekiyordu.Bu teknolojıyle ekstra kod yazmadan  2D,3D animasyonlar ve arabirimleri yapmak eski klasik GDI(Graphic Device Interface)' dan çok daha pratik ve performanslı.Normal windows yazılımları şu anda klasik olarak grafikler için GDI kullanıyor ve GDI da bu işlemler için CPU yu kullanıyor.Fakat WPF GPU(Graphics Processing Unit) kullanılıyor.bu ıkısı arasındakı farkı anlatacak olursam eskiden oyun oynarken oyundakı tum grafiksel bilgiler cpu tarafından ıslenıyordu bu da cpu'ya asırı bir yuk bındırıyor ve asırı ısınması neden oluyordu.GPUda ise ekran kartların ustune yerlestırelen işlemcilerle cpu yuk bındırmeden grafiksel işlemler yapılıyor.

     Bu teknolojiyle yuzlerce dolarlara alınan ekran kartlarının işe yarar hale getiriyor.Fakat kullanıcıda iyi bir ekran kartı olmasa bıle eski modda calısmaya devam ediyor.

Wpf uygulaması olusturdugumuzda XAML( Extensible Application Markup Language)  ve .xaml.cs uzantılı dosyalar olusmakta.uygulamanın gorunusu ıle ılgılı bolum XAML dosyasında davranıs ozellikleri ise c# yada visual basic olarak diger dosyada tutulur.Bu ıkı kısım bırbırlerıyle Databındıng,event ve komutlarla bırbırıne baglanır.

Ayrıca wpf uygulamaları grafiksel olrak vektorel grafikler iceriyor.Yani yapılan uygulama herhangi bir buyutme yada kucultme sonucunda gorsel olarak bozukluk meydana gelmez.

Wpf ıle yapılmıs uygulamaları sonraki yazılarda yazmaya calısacam. Zaman ayırıp okudugunuz ıcın tesekurler.

Sql de Like Kullanımı

Sql de sorgu yaparken bazı zamanlarda karakter karsılastırması yapmak gerekebilir. bu durumlarda like kullanarak sorgu yapmak gerekebilir.ornegın isimlerin bulundugu bı tabloda a harfiyle baslayan isimleri bulmak gibi yada web sitelerinde bulunan arama yap bolumu oraya girdiginiz herhangi bir ifadeyi iceren veritabanında bulunan butun bılgıleri getrıyor.iste bu ozellik 'LIKE' sozcuguyle yapılabilir.

ornegin:
                       Select ad from kisiler where ad like 'A%';

seklinde bır sorgu kisiler tablosundaki adı a ile baslayan kisilerin adlarını getirmekte.

Like deyimi ile kullanılan deyimler bize sorgu yaparken kolaylık saglamaktadır.

karakterleri acıklayacak olursak:

LIKE '%A%': icerinde  A harfi bulunduran kayıtlar.
LIKE 'A%' : a ile baslayan tum kayıtlar.
LIKE '_A%': 2.harfi a ile baslayan kayıtlar.
LIKE  '_[ABCD]%' : 2. harfiA yada B yadaC yada D olan kayıtlar.
LIKE   '_[^DEF] % ' : 2.hari D yada E yada F olmayan kayıtlar.

sekilde kullanarak ıstedıgımız sorguyu yapabılıyoruz.Ayrıca like deyiminde sorgulama "=" kulanmadan yapılmaktadır.

Asp.net Literal kullanımı

Asp.net kontrollerine sole bı bakarken literal kontrolunu gordum ismi cok karizmatik ama ne işe yaradıgınadair bi fikrim yoktu.biraz arastırdıktan sonra ne işe yaradıgını anladım ve ogrendıklerımı burda paylasmak istedim.

literal kullanımı label kullanımı ile neredeyse aynıdır.aralarındaki fark ise label yazdıgımız textleri html cıktısında span taglarının arasını alır literal o olzellik yok.

ornegin literal properties ozelliginden mode ozelligini ' encode ' yaparsak literala yazdıgımız html kodları aynı sekılde gorunur.




 cıktısı :


 seklindedir.

15 Temmuz 2010 Perşembe

Asp.net Bulletedlist Kullanımı

asp.net bulletedlist pek kullanılan bı ozellil degil.fakat cok kullanıslı bır kontrol.ornegin bu kontrolu kullanarak kendı menumuzu yapabiliriz.yada veri tabanında cekılen verılerın gosterilmesi gibi yani kontrolun kullanımı sızın hayalgucunuze gore ıstenılenheryerde kullanılabılır.kısaca kontrolun kullanımı anlatmaya calısacam.bir ornek uzerınden anlatım daha bı anlasılır olacagına ınanıyorum.
Ayrıca bu kontrolun ozellkler kısmındakı Dısplaymode ozelliginden normal text,link button yada hyperlink ozelliklerini kullanabılıyoruz.

ornekte sql verı tabanında bulunan verileri cekerek formumda gostermeye calısacaz.oncelilke veri tabanı olusturuyoruz.verı tabanınmıza bir tablo olsuturuoz.

create table veri
(
      veri_icerik varchar(50),
      veri_url varchar(50),
)  
seklinde bır tablo olusturuyoruz.tablo içine veri girelim.






simdi sırada projemize veri tabanı baglantısı yapmak gerek.sonra datareader la veri tabanındakı verileri okuyoruz ve bulletedlist e eklememiz gerekiyor.fakat eklemek ıcın bu kontrol bizden ListItem tipinde bir item istiyecektır.bu yuzden veriler ListItem aktarılır daha sonra bulletedList aktarılır.ListItem text ve value degerleri atanır.
projemızın c# kodları sekıldeki gıbı olmalı.



















projemız calısınca sekıldeki gibi veriler verı tabanından cekılerek web sayfasına yuklenıyor.

13 Temmuz 2010 Salı

asp.net adrotator ile updatepanel içinde kullanımı.

Adrotator onceki yazımızda degınmıstık.adrotatorun kullanım amacı siteye eklenen reklamlarını gosterılmesınde buyuk kolaylık saglıyordu.onceki yazımızda yaptıgımız adrotator ornegınde siteye eklenen reklamların sadece sayfa yenınlenıce degişmesıne yarıodu. Fakat biz sayfayı yenılemeden  reklamların sureklı değişmesi istiyorsak ne yapmalıyız? Ajax kullanarak yapılabılır.visual studıo 2008 içinde gelen ajax extensions tool kullanarak.burada bulunan 'updatepanel' kontrolunu kullanarak sadece istedigimiz bılgılerı ıcıne koyarak o kısmın sayfa yenılenmeden sureklı olarak değişmesını saglıyabılıriz. Updatepanal kullanmak için oncelikle scriptmanager eklenmelidir. bu kontrol web formunda ajax ozelliklerini kullanmamızı saglıyor.ayrıca updatepaneli bir timera baglıyarak reklamların ne sıklıkla degişecegıne karar verebılıyoruz.




ornek olarak
forma oncelikle 1 adet script manager ekkliyoruz.1 adet update panel 1adet timer ve son olarak adrotatoru updatepanelin içine koyuyoruz.formumuz html kodları sekıldeki gıbı olmalı:






sekildedir. kodları acıklıycak olursak .olsuturdugumuz timerin interval degeri 2000millisaniye ayarlı oldugundan 2 snde bir timer tetiklenencek.ve updatepanelin tetikleyicisine timeri bagladıgımızda update panelin ıcerigi 2 snde 1 yenılenecek.bu sayede adrotatorun advertisementfile kısmına ekledgimiz reklam xml dosyasının icerisinde bulunan reklamlar impresion degerine gore degisecek.bu sayede kullanıcının surekli aynı reklam görup sıkılması engellemek ve reklamların daha bır cekıcı olmasını saglamıs olduk...

12 Temmuz 2010 Pazartesi

Asp.net Adrotator ile xml reklam olusturmak

oncelikle adrotatorun ne işe yaradıgını anlatayım.Adrotator kontrolu genellikle web sayfalarındakı reklamların yonetımını saglayan bır kontroldur.sayfa her yenıden yuklendıgınde sızın ayarlamıs oldugunuz reklamlar sureklı degişmesını saglıyor.

bu kontrolu bır verı tabanı baglıyarak yada xml dosyasına yazdıgım verileri cekerek kullanabılırıyoruz. bu yazıda xml kullanarak adrotatoru anlatmaya calısacam.

ornek uzerınde ıncelıyelim.
oncelıkle bır web sitesi acıyoruz.bu sıteye anasayfa adında bır web form eklıyoruz. daha sonra toolboxtan adrotator kontrolunu web formunun uygun bır yerıne koyuyoruz.

daha sonra web sitesine bır ıtem daha eklıyoruz.bir xml dosyası eklıyoruz bu xml dosyasına
reklam.xml ismini veriyoruz ve bu xml dosyasının ıcerigi:

<Advertisement>
 <ad>
 //  <ImageUrl>../resimler/resim.gif<ImageUrl> ///reklamın resminin urlsı
 //  <NavigateUrl>http://www.sıte.com<NavigateUrl>///tıklayınca gıdılecek url 
 // <AlternateText>İnternet,Tasarım,Popüler Kültür<AlternateText>///resim acılmazsa cıkacak yazı 
 //<Keyword>Genel<Keyword>///reklamın hangı kategorıye ait oldugu
 //<Impressions>5<Impressions>///reklamın gosterılme sıklıgını gosteren deger.

</ad>
</Advertisement>



reklamı eklıyoruz.eklemek ıstedıgımız farklı reklam varsa yıne aynı sekılde advertisement aralıgına yazabılırız. bu xml dosyasını adrotator un ozelliklerinde bulunan advertisementfile kısmına reklam.xml dosyasını ekliyoruz.artık sitemizin reklam bolumu calısır duruma geldi.Artık site her acıldıgında xml dosyasına ekledigimiz reklamları gosterılme sıklıgına gore goruntulenmeye baslar.adrotator kontrolu ayrıca bır verıtabanına baglanarak ordakı verılerı cekerek reklamları gosterebiliriz. veri tabanına baglanma işlemını sonrakı yazılarda anlatmaya calısacam.

asp.net cookie kullanımı

Cookie turkce cerez anlamına gelmektedir.Cookie kelimesi "web sayfası sunucusunun sizin bilgisayarınızın hard diskine yerleştirdiği ufak bir text dosyası" için kullanılmaktadır.bu text bi cok sey bulanabılır.ornegin bir siteye uye ismi ve şifre ile girdinizde benı hatırla butonu vardır iste bu cerezlere bı ornek verilebilir.bu secersenız web sitesi bılgısayarınıza sifre ve uye adınızın bulundugu bir text dosyası kayıt eder.bu text dosyası bir cookiedir.

bu yazıda nasıl bir cookie yapılacagını kısaca anlatacam.

asp.net icersinde httpcookie nesne si bulunmakta. bu nesne cookieler ilgili tum işlemleri içinde barındırır.ornegın cookie olusturma,okuma gibi işlemler.


bunu kodlara anlatacak olursa:bir web sitesi olusturuoruz.ve cookie_yarat web formu olsuturuoz.bu formun tasarımı:





burada text gırdıgımız ad ve soyadı cookie kayıt etcez oncelikle.buttonun click evetı altında cookie olusturma ıslemlerini yazıoruz.

protected void Button1_Click(object sender, EventArgs e)
    {
        HttpCookie mycookie = new HttpCookie("cerez");
        mycookie["ad"] = TextBox1.Text;
        mycookie["soyad"] = TextBox2.Text;
        mycookie.Expires = DateTime.Now.AddDays(30);
        Response.Cookies.Add(mycookie);
        Response.Redirect("Default.aspx");
    }
burda httpcookie nesnesi kullanarak cerez adında bır cookie olusturarak my cookie degişkenıne atıyoruz.
mycookie.expires komutu cerezi bılsayarın hafızasında süre olarak ne kadar kalacagını ayarlıyoruz.
response.redirect komutu bir sonrakı sayfaya yonlendırmekte.default sayfasında ise cerezlere kaydettigimiz degerleri kullanacagız.

default sayfamıza 2 tane label koyuyoruz.bu label lara ceraz ıcındekı degerlerı atcaz.default sayfanın load kısmına asagıdakı konutlar yazılarak sayfa yuklenırken degerlerın sayfa yazılır.

protected void Page_Load(object sender, EventArgs e)
    {
        HttpCookie cookie = Request.Cookies["cerez"];
        Label1.Text = cookie["ad"];
        Label2.Text = cookie["soyad"];
    }
ornegin cookie yarat sayfasında ad:ali soyad:balci yazarsak default sayfası sekıldeki gibi geliyor.







cookie olusturmaya kısaca degişmiş olduk fakat cookiler bılgısayarda ulasılabılır bır text dosyası oldugundan kotu nıyetlı ınsan kısısel bılgılerinıze ulasılabılır.bunun onlemenın yolları cookie lar kaydedilerken sıfrelenerek kayıt edılebilir.yada bılgısayarda kayıtlı cookıe sık sık temızlemek.

7 Temmuz 2010 Çarşamba

Windows 8 ile gelecek yenilikler..

windows 7 daha yenı yenı alısmaya baslamısken windows 8 ile ilgili bi ton haber cıkmaya basladı.bu yenılıkler gercekten guzel olcaga benzıyor. iste wındows 8 le gelcek yenılıkler.

1- Şifrelerden kurtulmak

Sayısız  ezberlemek yerine, bunları Windows 8'de güvenli tutacak bir sistem üzerinde çalışmalar sürüyor. Kullanıcılar şifre girmeyecek, sistem kullanıcınınn yüzünü tanıyarak açılacak ve hizmetlere erişime izin verecek.

2- Her bilgisayara ayrı uygulama almaya son

Microsoft, Windows hesabını kullanıcı üzerine kuracak ve kullanıcı masaüstü PC, dizüstü bilgisayar ya da tablet PC arasında geçiş yaparken, kendi işletim sistemini ve ayarlarını kullanmaya zahmetsizce devam edebilecek.

3 Gelişmiş dokunmatik desteği

Microsoft ortaklarına Apple'ı ünlü yapan dokunmatik desteğini aşacaklarını söylüyor. Özellikle tablet cihazlarda kullanımı çok kolay sanal klavye ve gelişmiş kontrol vadediyor. Ayrıca ekranlar kullanım açısına ve ışığına göre görüntüyü ayarlayarak en iyi tecrübeyi sunabilecek.

4 Her yerden TV izlemek


Kullanıcılar sabit disklerindeki zengin medya içeriğine bütün ekranlardan ulaşabilecek. Yani PC kablosuz kablolarla oturma odasındaki TV'ye görüntüleri besleyecek. Kullanıcılar istedikleri yerde, istedikleri zaman bu içeriklere erişim sağlayabilecek.
5 Windows App Store

Apple'ın başarısını kanıtladığı online uygulama dükkanına Microsoft da öenm veriyor. Bu dükkan hakkında yeterince detay ortada yok. Ancak Windows yazılım geliştiricileri için kullanıcılara ulaşmanın merkezi bir yolu olarak başarılı olabilir.

6 Formatsız format atmak

Virüs ya da zararlı yazılım, bozulan ayarlar veya artık sistemin eskisi gibi istikrarlı işlemediği durumlarda, kişisel veri kaybı riski olmadan reset atmak mümkün olacak.

Microsoft ayarları ve belgeleri koruyarak işletim sistemini ilk ayarlara döndürecek. Uygulama dükkanından ya da başka yerlerden satın alınan uygulamaları da hızla yüklemek mümkün olacak.
7 Anında açılan PC
PC'Lerin basar basmaz açılması Wİndows 8'de de mümkün olmayacak ancak Microsoft bu konuda çalışıyor. 40 Saniyeden 27 saniyeye düşen açılış süresi yarı yarıya indirilerek 10-15 saniye civarına indirilebilir.

8 İşletim sistemini çözmek
Windows 8 kullanımı kolaylığını hedefliyor. Bu yüzden kullanıcı arayüzündeki geliştirmeler ile işletim sistemi ne kadar kaynak kullanıyor, güç verimliliği ve açılış-kapanış süreleri nedir kolayca öğrenebilecek. Ayrıca ne nasıl yapılır işletim sistemi içerisinden kolayca öğrenip tavsiye alabilecek.
chıp.com.tr den alıntıdır...





6 Temmuz 2010 Salı

Sql iç içe select yapısı

Verıtabanında bazen bir tablodan cektıgımız bılgıler le baska bır tablodakı bilgileri sorgulamak isteyebılırız.
bu tur sorgular ıc ıce sorgularla yapılabılır.

ornegin elimizde 2 tablo birinde ogrenci tablo su dieride bu bu ogrencilerin notlarını ıceren bır tablo olsun.

ogrenci tablosu





not tablosu sekıldeki gibi olsun.
ornegın notu 60 uzerinde olan ogrencilerin bılgılerı ıstenırse
yapılacak sorgu sekıldekı gıbı olur:
select * from ogrenci where ogr_id 
in(select ogr_id from notlar where ogr_not>60) istedigimiz sorguyu yapmıs olduk.



2 sql sorgusunu 'in ' kalıbıyla baglamıs olduk.kin kullanılma amacı içteki sorguda buldugumuz degerleri 2 sorguda butun  tabloda tek tek sorgulamasıdır.' NOT IN' kalıbı içtekı sorgudan gelen degerleri ilk sorguda sorgulanmamsını saglar.
ayrıca ıce ıce cumlerde ANY,ALLkalıblarıda kullanılır
select * from notlar 
where ogr_not>any(select *from notlar2 where not1>12)
icteki donguden donen degerlerin herhangı bırınden buyuk degeler getiren bı cumlecıktır.

ALL aynı sekılde kullanılmakta fakat any tam tersi olarak calısır.


EXİSTS ve NOT EXİST
bu kalıplar 1 ve 0 dondurur. yani içerdeki sorgudan donen herhangı bır deger varsa  dıstakı sorgunun calısmasını saglar yoksa dıstakı dongu calısmaz.
 select * from ogrenci where exists (select * from notlar where ogr_not=99)  sekıllınde kullanılır.eger icerdeki sorgudan hıc kayıt donmezse birinci sorgu calısmaz.

5 Temmuz 2010 Pazartesi

Sql Server View Kullanımı

View sanal tablo olarak adlandırabılırız.Bu tablo veri tabanında aslında bulunmamaktadır ancak gercek bir tablo gıbı sorgulanmaktadır.View kullanıldıgı baslıca yerler: kullanıcıların bazı kritik tabloların sadece belli satır ve sutunları gormesi istendıgınde kullanılabılır.
   Ayrıca ilişkisel veri tabanlarında tabloları bırlestirmek ıcın surekli inner joın kullanmaktansa view kullanmak veri tabanı performans artırır.

View olusturmak için:
                                  Create view view_adı(view_sutun1,viewsutun2) 
                                    as
                                 select tablo tablo_sutun1,tablo_sutun2 
                                  from tablo
                                 where tablo_sutun3=veri 
seklınde kullanılır.bır ornekle acıklarsak.
bır bankanın hesap tablosu  sekıldeki gibi olsun.






bu bılgılerin herkes tarafından gorunmesı guvenlık acıgına neden olur.bunun yerıne bir sanal tablo yani view olusturuyoruz.ornegın sadece hesap_no ve hesap sahıbının bılgılerı gorunsun ıstıyorsak.

create view bılgıler
as select hesap_no,hesap_sahıbı_ad,hesap_sahıbı_soyad
from hesap ..
komutları ıle bılgıler adında bı view tablosu olusturduk. bu tablonun son hali:

 



 view kullanarak veri tabanın tablolara erısımı yetkılere gore belırleyıp kımın hangı bılgılere ulasacagını belirleyebılırz.

olustural bır view sılmek ıcın:
drop view view_adi
yazarak sılebılıırz


View bir dezavantajı gercek anlamda birer tablo olmadıkları ıcın vıew uzerınde ekleme veya guncelleme yaparken cesıtlı kısıtlamalar vardır.


4 Temmuz 2010 Pazar

Sql İndex kullanımı

Index kullanımı bı ornekle anlatmak daha ii olacak.
öncelikle bir ogrenci tablosu olusturduk




index kullanmadan tablodakı tum bılgıler sekıldekı gıbı gorunuyor.



 fakat ındex kullanarak yaparsak.

         create clustered index on ogrenci(ogr_ad)                            seklınde bır ındex olusturuoruz.

tablonun yeni hali isim sırasına gore geliyor.

index kullanmak tablo ustunde arama yapmada cok buyuk kolaylıklar saglamakta.
index kullanmadan yapılan aramalarda veriyi tum tabloda aramak zorunda kalıoruz eger tabloda mılyonlarca kayıt varsa bayagı performans kaybı olur.

fakat ındex kullanarak yaparsak tablodakı veriler zaten sıralı bı sekılde tutuldugundan istedigimiz verilere cok rahatllıkla erisebılmekteyız.index kullanarak yapılan tablolarda deger aranırken 'b tree' data yapısı kullanılarak yapılır.1 mılyonluk kayıt ıceren bır tabloda ıstedıgimiz kayıtı tabloya 20 kez bakarak bulabılmekte.

NON-CLUSTERED İNDEX
Yukardakı ornekte indexi clustered(kumeleme) ile yaptık buda bıze lıstemızı sıralı olarak getirdi.fakat ındex olusturulurken herhangı bır ozellık verilmezse default olarak non-clustered olur.Non-clustered indexin ozelligi tablo gosterdıgımızde sıralı olarak gelmez fakat index fiziksel olarak hafızada sıralı tutulur.Tablo içindeki verilerin sıklıkla degıstıgı tablolarda non -clustered index kullanmak daha elverişlidir.

İndex silmek

tabloda bulunan bir index silmek için :
       drop index tablo_ismi.index_ismi     seklınde kullanılır ve ıstenen ındex sılınmıs olur.

Sql sutun ekleme sutun silmek ve degisiklik yapmak

Veritabanında olsuturulan bı tabloya yenı bı sutun ekleme işlem 'alter' ile yapılır.

 Alter table tablo_adi add eklenecek_sutun(veri_tipi)      sekılde tabloya yeni bir sutun eklemıs olduk.

Tablodakı sutunlarda ekstra bır ozellık eklemek ıstersek 'Alter' kullanabılıriz.ornegın tablodakı bır sutunun bos deger gırılmesı  engellemek için:
       
Alter table tablo_adi alter column satır_adi  veritipi NOT NULL sekılde yapılabılır.

Tablodan satır sılme ıslemı Drop ile yapılır.

"Drop table tablo_adi" ile tabloyu sılebiliriz.

 "Alter table tablo_adi drop column satır_adi " seklınde yaptıgımızda ıstedıgımız tablodan ıstedıgımız satırı sılmıs oluruz.

Sql Primary Key ve Unique Key Kullanımı

Primary key: Standart olarak bir tablodakı her bir satırın yerıne kullanılan bır anahtar verıdır.Yani kolan primary key tanımlanmısa o kolana aynı deger gırılemez sadece tek ve essız deger gırılebılır.boylece her kayıta kendısine ait bi ozellık eklemıs oluruz ve diger kayıtlardan farklı bır kımlık kazandırmıs olduk.

Örnegın kısıler tablosu yapmak ıstıyoruz tablomuzda tc_kimlik_no adında bı satırımız var ve tc_kımlık no kısıye ozel oldugundan aynı kımlık numarasını 2 farklı kısıye vermemeyız bunu engellemek ıcın tc_kımlık_no primary key olrak tanımlanır.

create table kisi(
                             kisi_adi nvarchar(100),
                             tc_kımlık_no integer,
                             pimary key(tc_kımlık_no) ,
                        )
seklınde yaparsak her kısının kendıne ozgu bır kımlık numarası sahıp olcaktır.aynı kımlık numarasının tekrar gırılmesıne ızın verılmez.

Primary key sadece 1 satıra yaplıdıgı gıbı bırden fazla satıra aynı anda uygulanabılır.

create table kisi(
                             kisi_adi nvarchar(100),
                             tc_kımlık_no integer,
                             pimary key(tc_kımlık_no,kisi_adi) ,

                        )
kımlık_no ve adı primary yaptık.bu sekılde yaparsak ornegin:kımlık no:10 ve kısı_adi=ali olan tek birkayıt girilebilir.ama kımlık no:10 kısı_adi=veli sekılde gırıse ızın verır.

Unique key:primary key ile kullanımı neredeyse aynıdır.fakat pimary key null olmaz.Unique null olarak gırılebılır.

3 Temmuz 2010 Cumartesi

sql de veri tabanı ve tablo olusturmak

Sql veri tabanı olusturmak için
                                        "create database veritabanı_ismi"
sekılde yapılır. buyuk veya kucuk harfle yazılması onemli degildir.Sql veritabanı buyuk kucuk harf duyarlılıgı yoktur.olusturulan veritabanı sılmek için
                                           "drop database veri_tabanı ismi" seklindedir.

olusturdumuz verıtabanı tablo eklemek ıcın  

             "create table tablo_ismi(
                                                  kolonadi1 veritipi[veri_boyutu]
                                                  kolonadi2 veritip[veri_boyutu]
                                                 )
seklındedır.Fakat veritip integersa boyut belirtmemız gerekmıyor.ornegın:"kıtap_no integer"diye tanımlanır.

ayrıca olusturan kolonun bos bırakılmasını izin vermemek ıcın kolan olusturken "not null"  ifadesi eklenir.

Boylece olusturulan kolon bos bırakılamaz verı gırılmek zorundadir.

Yeni bir Baslangıc

Kendime bır blog sayfası acmanın mutlulugunu yasıyorum:) sıcak ve sıkıcı bır yaz gununde blog acmanın vaktının geldıgı anladım(yapcak bısı bulamadım).burada ögrendigim yasadıgım herseyı paylasmayı planlıyorum. benı izlemeye devam edin:))