You are on page 1of 338

Modul 1:

ADO.NET

Modl 1: Gelitirme Ortamn Tanmak

Bu modlde, Visual Studio .NET ortamn ile tanacak ve ierisinde kullanlan temel proje bileenleri hakknda genel bilgiler verilecektir. Ayrca alma zaman hatalarn yakalamay ve uygulamay derlemeyi reneceksiniz. Bu modl tamamlandktan sonra: Proje oluturabilecek, Projeye referans ekleyebilecek, Projeye isim alan ekleyebilecek, Proje zelliklerini deitirebilecek, Dinamik yardm alabilecek, Proje ierisine grevler ekleyebilecek alma zaman hatalarn yakalayabilecek, Uygulamalar derleyebileceksiniz.

ADO.NET

Modl 1:

Konu 1: C# .NET ile Proje Oluturmak

C# ortam, C#.NET projelerini kolay bir ekilde oluturma imkan salar. Projenin almas iin gereken dosyalar otomatik olarak ekler. Projenin gelitirilme aamasnda yeni bileenlerin eklenmesi, men ve ara ubuklar ile kolay bir ekilde gerekletirilir.

ADO.NET

Proje ablonu Semek

C#.NET ile Windows tabanl, Web tabanl gibi eitli projeler gelitirilebilir. Bu projeler farkl platformlarda alaca veya farkl amalara ynelik oluturulaca iin, balang bileenleri farkllk gsterecektir. rnein Windows tabanl projeler iin Windows formlarnn kullanlmas ve baz referanslarn eklenmesi gerekir. Visual Studio ortamnn salad ablonlar, proje dosyalarnn balang kodlarn otomatik olarak yazp gerekli referanslar ekleyerek gelitiriciye hzl bir balang saar.
Windows Application Class Library

Windows tabanl uygulamalar gelitirmek iin kullanlr. Dier projeler iin class ktphaneleri salayan DLL (Dynamic Link Library) oluturmak iin kullanlr. Bu bileenler projelere Reference olarak eklenerek tekrar kullanlr.
Windows Control Library

Kullanc tanml Windows kontrolleri oluturmak iin kullanlr. Bu kontroller Windows uygulamalarnda, birok formda tekrar kullanlmak zere tasarlanr.
Smart Device Application ASP.NET Web Application

Mobil cihazlar zerinde uygulama gelitirmek iin kullanlr. IIS (Internet Information Services) zerinde alacak Web uygulamalar gelitirmek iin kullanlr.
ASP.NET Web Service

ADO.NET

Modl 1:

Web uygulamalarna XML Web Service salayan projeler gelitirmek iin kullanlr. Oluturulan bu projeler, dier uygulamalara Web Reference olarak eklenir.
Web Control Library Console Application Windows Service

Web uygulamalarnda, kullanc tanml kontroller oluturmak iin kullanlr. Komut penceresinde alacak konsol uygulamalar gelitirmek iin kullanlr. Windows altnda srekli alan uygulamalar iin kullanlr. Bu uygulamalar, kullanclarn sisteme giri yapmad durumlarda da almaya devam eder.
Other Projects

Enterprise Applications (irket uygulamalar), Deployment Projects (Ykleme projeleri), Database Projects (Veritaban projeleri) gibi deiik ablonlardr.
Empty Project

Herhangi bir ablon uygulanmadan alan Windows projelerdir. Balang nesnesi ve referanslar eklenmez.
Empty Web Project

Herhangi bir ablon uygulanmadan alan Web projelerdir. Bu proje IIS zerinde tanmlanr ancak form ve referans nesneleri eklenmez.
Blank Solution

Balang olarak bir proje almaz. Bo bir solution dosyas alr. stenen projeler, Add New Project komutu ile bu solution iine dhil edilir. Visual Studio ile yeni bir proje birka admda oluturulabilir. 1. File mensnden New alt mensne iaret edin ve Project komutunu sein. 2. New Project penceresinden Visual C# Projects tipini ve almak istediiniz ablonunu sein. 3. Name zelliine projeye vereceiniz ismi yazn. 4. Location zellii projenin dosyalarnn bulunaca yeri belirler. Browse dmesine basarak Windows dizinine ulan ve projenin yerini sein. 5. More dmesine basld zaman, solution dosyas iin yeni bir isim kullanlmas ve ayr bir klasr almasn salayan panel grntlenir. Solution iin farkl bir isim vermek iin Create directory for Solution seeneini iaretleyin ve metin kutusuna solution iin yeni bir isim yazn. 6. OK tuuna basld zaman proje alr. Solution iin ayr bir klasr seilmemise, proje dosyalar proje ismi ile oluturulan klasr altnda oluturulur.

ADO.NET

Proje Dosyalarna Genel Bak

Visual C# .NET ile oluturulan bir projenin almas iin gereken baz dosyalar vardr. Bu dosyalarn birou, projenin tipine gre farkllk gsterir. Yeni bir proje aldnda, projeye verilen isim ile bir klasr alr ve proje dosyalar bu klasr altna yerletirilir. Solution Dosyalar (.sln, .suo) Visual C# .NET projeleri bir solution dosyas (.sln) altnda oluturulur. Solution dosyas farkl projeleri bir arada tutar ve birden fazla projeyi ierisinde barndrr. Visual Studio ile proje oluturulurken solution dosyas otomatik olarak eklenir. Solution User Option (.suo) dosyalar, kullancnn solution ile alrken yapt ayarlar tutar ve proje tekrar ald zaman bu ayarlar getirir. Project Dosyalar (.csproj, .csproj.user) Bir projenin iinde bulunan bileenlerin, eklenen referanslarn tutulduu proje dosyasdr. Visual C# projeleri .csproj uzantl dosya ile oluturulur. Bu dosya ayn zamanda, bir solution iinde farkl dilde ve tipteki projeleri ayrt etmek iin kullanlr. Projeye zg ayarlar ise .csproj.user dosyasnda tutulur. Yerel Proje Dosyalar (.cs) Form, class gibi bileenlerin tutulduu dosyalardr. Bir .cs uzantl dosya iinde birden class tutulabilir. Ancak projedeki her form iin ayr bir .cs dosyas oluturulur. Web Projeleri Dosyalar (.aspx, .asmx, .asax) Web uygulamalarnda oluturulan dosyalar Web sunucusunda (ISS) tutulur. Bu dosyalar web formlar iin .aspx, Web Service iin .asmx, global snf iin .asax uzantsna sahiptir.
ADO.NET

Modl 1:

Proje oluturulduktan sonra yeni nesnelerin eklenmesi Project mens ile ya da Solution Explorer paneli kullanm ile gerekleir. Project mensnden yeni bir form, module, class, component, user control eklemek iin ilgili men komutu seilebilir. Add New Item komutu ile farkl tipte birok dosya projeye dhil edilebilir.

Assembly Nedir?

Visual Studio .NET ortamnda gelitirilen uygulamalar derlendiinde, .exe veya .dll uzantl dosyalar oluur. .NETin otomatik olarak oluturduu bu dosyalara assembly denir. Assembly ierisinde dosyaya ait balk, aklama ve telif hakk gibi kritik bilgiler tutulur. Visual Studio .Net ierisinde gelitirilen bir projeye, farkl kiiler tarafndan gelitirilmi assemblyler eklenebilir. zellikle gelimi projelerde assemblyler ayr programclar tarafndan yazlarak ortak bir proje altnda toplanabilir.

ADO.NET

Projeye Referans Eklemek

Herhangi bir projenin ierisine, bileen ktphanelerinin eklenmesi iin kullanlr. Bu bileen ktphaneleri, .NET ve COM bileenlerden oluur. Projeye referans eklemek iin belirtilen admlar takip edin. 1. Solution Explorer penceresinden References mens sein. References mensne sa tklayn. 2. Alan menden Add Reference komutunu verin. 3. Alan pencere zerinden .NET, COM, Projects sekmelerinden herhangi birini sein. .NET, projeye NET bileen ktphanelerini eklemek iin kullanlr. COM, projeye COM bileen ktphanelerini eklemek iin kullanlr. Projects, proje ile ayn solution ierisinde yer alan bileen ktphanelerini eklemek iin kullanlr. 4. Eklenecek assembly nesnesini sein ve Select dmesini tklayn. Birden fazla assembly semek iin ayn ilemi tekrar edin. 5. Referans ekleme ilemini tamamlamak iin OK dmesine tklayn. Proje ablonlar ierisinde en ok kullanlan referanslar unlardr:

ADO.NET

Modl 1:

System: Programn almas iin gerekli en temel referanstr. System.dll ktphanesi ierisinde tutulur. System.Data: Veritaban balantlarnn yaplmas iin gerekli referanstr. System.Data.dll ktphanesi ierisinde tutulur. System.Drawing, System.Windows.Forms: Windows form ve kontrollerini ieren referanstr. System.Drawing.dll ve System.Windows.Forms.dll ktphaneleri ierisinde tutulur. System.XML: XML teknolojisinin kullanlmasn salayan referanstr. System.XML.dll ktphanesi ierisinde tutulur.

ADO.NET

10

sim Alan (Namespace) Nedir?

.NET ierisindeki tm ktphaneler, .NET Framework ismi verilen ortak at altnda toplanr. Bu at altndaki tm ktphaneler amalarna gre namespace denilen isim alan altnda gruplandrlr. Bu isim alan ierisinde snflar, ara yzler ve modller bulunur. .NET ierisinde veritaban uygulamalar gelitirmek iin System.Data.dll ktphanesine ihtiya duyulur. Bu ktphane Visual Studio .NET ierisindeki tm proje ablonlarnda otomatik olarak yer alr. System.Data.dll ktphanesi ierisinde;
System.Data System.Data.Common System.Data.SqlClient System.Data.OleDb System.Data.SqlTypes System.Xml

isim alanlar yer alr.

ADO.NET

Modl 1:

11

Yeni sim Alan Eklemek

Yeni isim alan oluturmak iin namespace anahtar kelimesi kullanlr.


namespace Isimalani_ismi { ... }

rnekte NSBilgeAdam isminde bir isim alan tanmlanmtr. Bu isim alan ierisine Egitim ve Ogrenci isminde snflar eklenmitir.
namespace NSBilgeAdam { // BilgeAdam isim alannda kullanlacak //Snf, Modul ve Arayzler tanmlanr class Egitim { //... } class Ogrenci { // } // vs... }

BilgeAdam isim alan iindeki Ogrenci snfn kullanmak iin, snf ismini, isim alan ile birlikte belirtilmelidir.

ADO.NET

12 bilgeadam.NSbilgeadam.Ogrenci yeniogrenci; yeniogrenci = new bilgeadam.NSbilgeadam.Ogrenci() ;

UYARI: Proje ile ayn isimdeki bir isim alan .NET derleyicisi tarafndan yeni oluturulan
tm projelere eklenir. Bu genel isim alanna kk isim alan (root namespace) denir. Dolaysyla kendi oluturulan isim alanlarn, kk isim alann ile birlikte belirtilmelidir.

Herhangi bir isim alan ierisinde birden fazla isim alan tanmlanabilir. rnekte NSBilgeAdam isim alan ierisinde Idari, Egitim ve Ogrenci adnda ayr isim alan eklenmitir.

namespace NSBilgeAdam { // BilgeAdam isim alannda kullanlacak // Class, Module ve Interfaceler tanmlanr namespace Idari { class Personel { } } namespace Egitim { class Grup { } } namespace Ogrenci { class Bilgi { } } // vs... }

ADO.NET

Modl 1:

13

Projeye sim Alan Dhil Etmek

Bir isim alan ierisinde yer alan snflar tanmlamak iin, snfn bulunduu ktphanenin yolunu eksiksiz olarak belirtmek gerekir. Ancak bu ekilde kullanmlar, kodun okunmasn olduka zorlatrr. rnekte snflar bu yntemle tanmlanmtr.
bilgeadam.NSbilgeadam.Idari.Personel kisi1; kisi1 = new bilgeadam.NSbilgeadam.Idari.Personel(); bilgeadam.NSbilgeadam.Ogrenci.Bilgi Ogrencibilgi; ogrencibilgi = new bilgeadam.NSbilgeadam.Ogrenci.Bilgi();

Her snf iin ktphane yolunun tekrarn ortadan kaldrmak iin, using anahtar szc kullanlr. using szc ile eklenen isim alanlarnn nesnelerine, proje ierisinden dorudan eriilebilir. rnekte NSBilgeAdam isim alannn projeye dhil edilmesi gsterilmektedir.
using bilgeadam.Nsbilgeadam; NSBilgeAdam isim alannda bulunan bir snf kullanmak iin sadece ismini

yazmak yeterli olacaktr.


Ogrenci.Bilgi ogrenciBilgi = new ogrenci.Bilgi();

ie isim alannn kullanmnda, iteki isim alanna kolayca erimek iin ksaltmalar kullanlabilir. rnekte, NSBilgeAdam isim alan ierisindeki Ogrenci isim alanna eriim gsterilmektedir
ADO.NET

14 using ogr = bilgeadam.NSBilgeadam.Ogrenci; Public Class Form1:System.Windows.Forms.Form { // ... ogr.Bilgi OgrBilgi = new ogr.Bilgi(); }

Proje zelliklerini Ayarlamak

Projenin genel davranlarn ve konfigrasyon zelliklerini deitirmek iin Property Page penceresi kullanlr. Proje zelliklerini deitirmek iin belirtilen admlar takip edin. 1. Proje isminin zerinde farenin sa butonunu tklayn. 2. Alan menden Properties komutunu verin. 3. Alan Property Page penceresi zerinde Common Properties (Genel zellikler) ve Configuration Properties (Konfigrasyon zellikleri) sekmelerinden herhangi birini sein. 4. Genel zellikler, projenin genel davranlarn deitirmek iin kullanlr. 5. Konfigrasyon zellikleri, Hata ayklama ve Derleme seeneklerinin deitirilmesi iin kullanlr. 6. Proje zelliini deitirdikten sonra OK butonunu tklayn. En ok kullanlan proje zellikleri unlardr:

ADO.NET

Modl 1:

15

Assembly Name: Derlenen uygulamann exe veya .dll uzantl kt dosyasnn adn belirler. Root Namespace: Kk isim alann belirler. Varsaylan olarak projenin ismi gelir. Project Output Type: Derlenen uygulamann hangi tipte assembly oluturacan belirler. Bu tipler Windows, konsol uygulamalar ya da snf ktphaneleri (.dll) olabilir. Startup Object: Uygulamann hangi formdan veya modlden almaya balayacan belirtilir.

ADO.NET

16

Konu 2 : Proje Bileenlerini Tanmak

Solution Explorer Kullanmak

Solution Explorer paneli, bir solution iindeki tm dosyalar grntler. Solution iinde birden fazla proje bulunabildii iin, bu projeler sral bir

ADO.NET

Modl 1:

17

ekilde listelenir. Koyu renkle gsterilen proje, solution iinde ilk altrlacak projedir. Bu panel ile solution iine proje ekleme silme, projelere yeni nesne ekleme silme ilemleri gerekletirilir. Panelin st tarafnda buluna ara ubuu, dosyalar zerinde baz ilemlerin gerekletirilmesi iin ksa yollar sunar. rnein ara ubuundan Show All Files komutu seildii zaman, projelerin bulunduu klasrdeki tm dosyalar gsterilir. Solution Explorer panelinde beyaz ile gsterilen nesneler projeye dhil edilmemitir. rnein, proje klasrnde bulunan bir resim dosyasn projeye dhil etmek iin, resme sa tklayp Include In Project komutu verilmelidir.
Solution Explorer panelini grntlemek iin View mensnden Solution Explorer komutunu verin.

Object Browser Kullanmak

Object Browser, Visual Studio .NET ierisindeki ktphane ve isim alanlarn tm alt eleriyle ile beraber hiyerarik ekilde listeler. Object Browser grntlemek iin, View Penceresinden Object Browser

komutunu verin.
Object Browser pencerenin sol st kesinde Browse alan Selected Components seenei ile birlikte varsaylan olarak grnr. Bu seenek ile
ADO.NET

18

projeye dhil edilen referanslar ve bu referanslarla ilikili isim alanlar hiyerarik bir ekilde listelenir.
Objects paneli ierisinden seilen herhangi bir isim alan geniletilirse, iindeki

tm eler hiyerarik ekilde listelenir. Bu elerin herhangi biri seildiinde, o eye ait tm alt eler Members penceresinde listelenir.
Objects penceresinin sa alt kesinde ise, seilen enin tanmn ve hangi

isim alannn altnda olduu gsterilir.

Server Explorer Kullanmak

Server Explorer, Visual Studio .NET ortam ierisinde veri salayclarla almay kolaylatrmak iin tasarlanm bir aratr. Ayrca Server Explorer sunucu makine bileenlerinin ynetimi ve kullanmn salar. Server Explorer, Data Connections ve Servers olmak zere iki sekmeden

oluur. Veri salayclar ile almak iin Data Connections seenei kullanlr. Yeni bir veri salayc oluturmak iin belirtilen admlar takip edin. 1. Server Explorer zerinden Data Connections seeneini sein. 2. Data Connections seenei zerinde farenin sa butonunu tklayn. Alan menden Add Connection komutunu verin. 3. Alan Data Link Properties penceresinden balant oluturulur.
ADO.NET

Modl 1:

19 Servers mensn kullanarak, veritaban

Servers sekmesinin altndaki SQL

ilemleri yerine getirilebilir ve veritaban nesneleri, srekle brak metodu ile form zerine srklenebilir.

Dinamik Yardm Almak

Visual Studio .NET, ierisinde ok fazla konuyu barndrd iin tmne hakim olmak neredeyse imknszdr. Bu nedenle yazlm gelitiricilerin iini kolaylatrmak iin, Visual Studio .NET ierisinde dinamik yardm ktphanesi oluturulmutur. Dinamik yardm, uygulama gelitirirken yazlan koda gre tm yardm konularn listeler. PUCU: Dinamik yardm aktif hale getirmek iin, Help mensnden Dynamic Help
komutunu tklayn.

ADO.NET

20

Grev Listesini Kullanmak

Grev Listesi, aktif proje ierisine grev eklemek iin kullanlr. Bu grevler uygulama geliiminin takip edilmesini salar. Grev Listesi iersine eklenen tm grevleri nem srasna gre sralanabilir. Grev Listesi aracn proje ortamnda aktif hale getirmek iin View mensnn Other Windows alt mensnden Task List komutunu tklayn. Grev Listesi arac zerinde Click here to add a new task alan tklanarak yeni grev eklenebilir. Biten grevin nndeki onay kutusu tklanarak, grev sonlandrlabilir.

ADO.NET

Modl 1:

21

Konu 3: Uygulamalarda Hata Ayklama

Uygulamalarn gelitirme srasnda birok hata ile karlalr. Bu hatalarn ou alma zamannda ortaya kt iin, kodun yazlmas srasnda hatann kaynann anlalmas zordur. Hata reten kod satrlarn, hatalarn nedenini anlamak iin Visual Studio Debug (Hata ayklama) arac kullanlr. Visual Studio Debug arac Kodlar arasna BreakPoint konarak, almann istenen satrda durmasn, Kodlar arasnda ilerlerken deerlerinin gzlenmesini,
Command Debug

panelleri

ile

deikenlerin altrlmasn,

paneli ile alma annda komut deikenlerin deerlerinin deitirilmesini salar.

ADO.NET

22

BreakPoint

BreakPoint kullanm, uygulamann almasnn istenen kod satrnda durdurulmasn salar. alma, bir artn gerekletii durumda da durdurulabilir. rnein bir deikenin, belli bir deeri ald kod satrnda uygulamann durmas istenebilir.

stenen bir kod satrna BreakPoint koymak iin, kod sayfasnn sol tarafnda bulunan panele tklanr ya da F9 tuuna baslr. Belirtilen bir art gerekletikten sonra almann durmas isteniyorsa, Breakpoint zerine sa tklanp BreakPoint Properties komutu verilmelidir. kan pencerede Condition dmesine baslarak BreakPoint Condition penceresi alr. Bu pencerede bir deikenin istenen bir deeri aldktan sonra almann durmas belirtilir.

ADO.NET

Modl 1:

23

almann, artn belli bir say kadar saland zaman durdurulmas iin, BreakPoint Properties penceresinde Hit Count dmesine baslr. BreakPoint Hit Count penceresinde, artn gerekleme says girilir. rnekte, BreakPoint be defa veya daha fazla ulald zaman durulmas belirtilir.

Debug Panelleri

alma durdurulduktan sonra, deikenlerin o andaki durumlar Debug panelleri ile gzlemlenir. Bu paneller ancak hata ayklama srasnda kullanlabilir. Debug panelleri, Debug mens altnda Windows mensnden seilebilir.
Autos

ADO.NET

24

almakta olan satrla, bir nceki ve bir sonraki arasnda kalan deikenleri listeler.
Locals

allan kapsam iindeki tm deikenleri listeler. Bu kapsam bir modl, yordam veya dng olabilir.
Watch

Deeri incelenmek istenen deiken veya zellikler, bu panele yazlarak eklenir. alma durdurulduktan sonra kodlar arasnda ilerlemek gerekir. Kodlar arasnda ilerlemenin, yordamlarn iine girilmesi, zerinden atlanmas gibi birok yol vardr. 1. Step Into altrlan kod eer bir yordam veya fonksiyon ise bu yordam veya fonksiyonun iine girilir ve hata ayklamaya devam edilir. 2. Step Over Bir yordam veya fonksiyon iine girilmeden ilerlenir. 3. Step Out Bir yordam veya fonksiyon iinde ilerleniyorsa, buradan klarak yordam veya fonksiyonun arld yere dnlr. 4. Continue Bir sonraki BreakPoint satrna gidilir. Eer baka bir BreakPoint konmamsa, uygulama normal almasna devam eder.

ADO.NET

Modl 1:

25

Command Panelini Kullanmak

Command paneli iki farkl modda kullanlr. Immediate Bu modda, deiken deerleri deitirebilir, .NET Framework snflarndaki metotlar veya kullanc tanml metotlar altrlabilir. Immediate moduna gemek iin immed komutu kullanlr. Immediate modunda bir deikenin deeri ? ile renebilir ve yeni deer atanabilir.
?sayi 40 sayi = 50 ?sayi 50

Command Bu modda, Visual Studio ortamnda tanml veya kullanc tanml makrolar, men eleri kullanlabilir. Command moduna gemek iin >cmd komutu kullanlmaldr.
>cmd >Debug.StepOver >Help.About

ADO.NET

26

Konu 4: Uygulamann Derlenmesi

Derleme Seeneklerine Bak

C# .NET ile gelitirilen uygulamalar altrlmadan nce derleme ileminden geer. Derleme ilemi ile kodun C# sz dizimine uygun yazlp yazlmad kontrol edilir ve kod altrlmak zere makine diline evrilir.
ADO.NET

Modl 1:

27

Uygulamalar derlenmesi Build mensnden yaplr. Build Solution Solution iindeki, son derleme ileminden sonra deien projelerin derlenmesini salar. Rebuild Solution Solution iindeki tm projelerin tekrar derlenmesini salar.

Build Proje smi Belirtilen projenin, son derleme ileminden sonra deien bileenlerinin derlenmesini salar. Rebuild Proje smi Belirtilen projenin tm bileenlerinin tekrar derlenmesini salar. Uygulama derlendikten sonra bulunan hatalar Task List panelinde grntlenir. Task List panelinde grntlenen hatalara ift tklanarak, hatann yapld satra ulalr.

NOT:

C# .NET ile uygulama gelitirirken yaplan sz dizimi hatalar hemenTask List

paneline yansr. Buna Background Compiling denir.

ADO.NET

28

Modl zeti

1. 2. 3. 4. 5. 6.

Assembly nedir? sim Alan nedir? Object Browser niin kullanlr? Server Explorer ne ie yarar? alma zaman hatalarn yakalamak iin neler yaplr? Proje nasl derlenir?

ADO.NET

Modl 1:

29

LAB1 : Gelitirme Ortamn Tanmak

Uygulama1
Windows Uygulamas Oluturmak
Bu uygulamada Windows Application kullanarak ar Merkezi (Call Center) isminde bir uygulamas oluturacaz. ar Merkezi uygulasn oluturmak 1. Visual Studio .Neti kullanarak ar Merkezi isminde uygulama oluturmak.
File mens altndan New alt mensn iaret edin ve Project komutunu

tklayn.
New Project ileti kutusundan Windows Application ablonunu sein. Name metin kutusuna CagriMerkezi yazn. Location metin kutusuna C:\Proje yazn ve OK butonunu tklayn

2.

Uygulamann Assembly Name Cagri ad ile deitirmek. Proje isminin zerinde farenin sa butonunu tklayn. Alan menden Properties komutunu verin. Alan pencere zerinden Common Properties (Genel zellikler) klasrn sein Common Properties klasr altndaki General sekmesi ierisinden Assembly Name metin kutusuna Cagri yazn ve OK butonunu tklayn.

ADO.NET

30

Uygulama 2
Object Browser Kullanmak
Bu uygulamada Object Browser kullanarak System.Data ktphanesini inceleyeceiz. System.Data ktphanesini amak 1. 2. 3. 4.
View mens ierisinden Object Browser alt mensn sein. Object paneli ierisindeki System.Data ktphanesini geniletin. System.Data Ktphanesi ierisindeki System.Data.OleDb isim alann

geniletin. alann ierisindeki OleDbConnection, OleDbCommand, OleDbDataReader, OleDbDataAdapter snflarn inceleyin.


System.Data.OleDb

isim

Uygulama 3
Debug Aracn Kullanmak
Bu uygulamada ar merkezi veritabanna balant alan kodlar Debug kullanarak incelenir. Kodlarn yazlmas 1. Form1 nesnesinin kod sayfasna gein ve OleDbConnection oluturan bir fonksiyon yazn.

ADO.NET

Modl 1:

31

private System.Data.OleDb.OleDbConnection ConnectionOlustur (string connectionString) { return new System.Data.OleDb.OleDbConnection(connectionString); }

2. Formun zerine ift tklayarak Load olayna gelin. Load olaynda, veri tabanna balant aan kodlar yazn. Bu veri taban C:\Proje\CagriMerkezi klasr altnda bulunacaktr.
System.Data.OleDb.OleDbConnection con = new System.Data.OleDb.OleDbConnection(); // Connection oluturan fonksiyon arlr con = ConnectionOlustur(@"data source=C:\Proje\CagriMerkezi\CagriMerkezi.mdb;Provider=Micro soft.Jet.OleDB.4.0"); con.Open(); // Veritaban ilemleri ilerleyen modllerde // anlatlacaktr. Bu ksm bo brakn. con.Close();

Hata ayklama 1. Formun Load metoduna bir BreakPoint yerletirin. 2. Projeyi F5 ile altrn. Balang formu yklendii zaman Load olay alaca iin, alma belirtilen noktada durur. 3. Debug mensnden Step Into komutunu seerek ya da F11 tuuna basarak kod iersinde ilerleyin. ConnectionOlustur isimli metodun iine girildii grlr. 4. ConnectionOlustur metodundan kldktan sonra, Locals panelini an ve con isimli deikeni inceleyin. 5. Command panelini an ve immed komutunu yazarak, Immediate moduna gein. 6. Command paneline con.State yazarak Connection nesnesinin State zelliini renin. 7. Debug mensnden Continue komutunu vererek ya da F5 tuuna basarak almann ilerlemesini salayn. 8. Formu kapatarak uygulamay sonlandrn. 9. con.Open() kodunun bulunduu satra BreakPoint koyun ve sa tklayarak BreakPoint Properties komutunu verin. 10. Condition dmesine tkayn ve metin kutusuna con.State = 1 yazn. con nesnesinin State zellii 1 (balant ak) olduu zaman almann durmas ayarlanr.

ADO.NET

32

11. OK tuuna basn ve projeyi altrn. almann belirtilen noktada durmad gzkr. Bunun nedeni, BreakPoint iinde verilen artn salanmamasdr. 12. Formu kapatarak uygulamay sonlandrn ve Visual Studio ortamndan kn.

ADO.NET

Modul 1:

ADO.NET

34

Modl 2: Veri Merkezli Uygulamalar ve ADO.NETe Giri

Bu modlde verilerin hangi ortamlarda depolandn reneceksiniz. Ayrca depolanan veriye erimek iin kullanlan yntemleri renecek ve ADO.NET teknolojisi hakknda bilgi sahibi olacaksnz. Bu modln sonunda:
ADO.NET

Modul 2:

35

Veri depolama yntemlerini renecek, Balantl ve Balantsz veri ortamlarn renecek, Veri eriim yntemlerini renecek, ADO.NET nesne modelini renecek, ADO.NET nesne modelinde veri salayclarn seebileceksiniz.

ADO.NET

36

Konu 1: Veri Merkezli Uygulamalar

Veri Depolama

Gnmzde verileri saklamak iin eitli teknikler kullanlr. rnein bir emlak emlak alm, satm bilgilerini dosya ktlar zerinde depolayabilir. Bu yntem veri arama ve listeleme ilemlerinin karmak hale gelmesine ve arama
ADO.NET

Modul 2:

37

sresinin uzamasna sebep olur. Hatta daha byk organizasyonlarda ilemlerin yavalamasna ve durmasna sebep olabilir. Artan ihtiyalar dorultusunda veri depolamak ve depolanan veriye erimek iin eitli veri depolama yntemleri gelitirilmitir. Bu yntemler: Yapsal Olmayan: Bu yntem ile depolanan veriler iin belirli bir snflandrma ve sralama yoktur. Veriler dz bir ekilde kaydedilir. rnein basit not dosyalar. Yapsal: Bu yntem ile depolanan veriler eitli gruplara ayrlarak saklanr fakat bu gruplar arasnda bir alt-st ayrm yaplmaz. rnein virglle ayrlm dosyalar (csv), Excel belgeleri. Hiyerarik: Hiyerarik depolama yntemini aa yapsna benzetebiliriz. Bu yntemde veriler eitli kategorilere blnerek depolanr. Her bir kategorinin ierisinde alt kategorilerde olabilir. rnein XML (eXtensible Markup Language) dosyalar. likisel Veritaban: likisel veritabanlarnda veriler tablolar zerinde depolanr. Tablo ierisindeki her bir satr kayd, her bir stun ise veriyi ifade eder. rnein SQL Server, Oracle, Access. Nesne Ynelimli Veritaban: En gelimi veri depolama yntemidir. Bu yntemde veriler; ihtiyaca gre gruplandrlarak, nesneler ierisinde saklanr. rnein Versant, AOL

ADO.NET bu depolama tekniklerinin tmn destekler.

ADO.NET

38

Balantl (Connected) Veri Ortamlar

Balantl veri ortamlar, uygulamalarn veri kaynana srekli bal kald ortamlardr. Bu ortamlarda veri alma ve deitirme ilemleri uygulama ile veri kayna arasnda balant kurulduktan sonra gerekletirilir. Balantl veri ortamlarnda, veri ilemleri gerekletii srece balant ak kalr. lk bilgisayar retiminden bugne en ok tercih edilen yntem balantl veri ortamlar olmutur. Balantl ortamlar veriye erimek iin birok avantaj salar. Avantajlar: En gvenli veri ortamdr. Veri kaynana yaplan e zamanl eriimlerde, veri kaynann kontroln kolaylatrr.

Dezavantajlar: Uygulama ile veri kayna arasnda gerekleen koruyabilmek iin sabit bir a balantsnn olmas gerekir. balanty

Uygulama ile veri kayna arasndaki balant a zerinden gerekletii iin, a trafiinin younluunu artrr.

rnein araba reten bir fabrikada yaplan retim bilgilerinin dier birimlere ulatrlmas ve bu kaytlarn depolanmas iin ezamanl bir balant kurulmas gereklidir. Ya da bir emlak firmasnda emlaknn, mlk ve menkul bilgilerini gncel tutabilmesi iin sabit bir balant kurmas gereklidir.
ADO.NET

Modul 2:

39

Balantsz (Disconnected) Veri Ortamlar

Balantsz veri ortam, uygulamann veri kaynana srekli bal kalmad veri ortamdr. Uygulama ile veri kayna arasnda balant, veri al verii yaplrken alr ve ilem bittikten sonra kapatlr. Bu veri ortamlar evrimd almak iin kullanlr. Teknolojinin ilerlemesi ve veri depolayan aralarn tanabilirliinin salanmas ile tm dnyada evrimd ortamlara duyulan ihtiya artmtr. Laptop, Notebook ve Pocket PC gibi aralarn yaygnlamas ile gnmzde uygulamann veri kaynana bal olmad durumlarda bile veri girii yaplabilir. Uygulamada sadece evrimii veya evrimd ortamlardan birini semek yeterli olmayabilir. Gelimi uygulamalarda her iki ortamn avantajlarn birletiren bir zm tercih edilebilir. Avantajlar: Laptop, Notebook ve Pocket PC gibi aralarla girilen veriler, istenilen zamanda veri ortamlarna aktarlabilir. evrimd ortamlar sayesinde, verilerin depoland uygulama zerindeki yk hafifletilir. Bu durum performans artn salar.

Dezavantajlar: Balantsz veri ortamlarnda, verilerin gncel kalmasna dikkat edilmelidir. Bu ortamlarda veri gncelleme ilemleri farkl zamanlarda
ADO.NET

40

gerekletirilebilir. Veri zerinde yaplan bu deiimlerin, dier kullanclara gsterilebilmesi iin eitli zmler gelitirilmelidir. Balantsz veri ortamlar ierisinde farkl kullanclar ezamanl gncelleme ilemleri gerekletirebilir. Bu durumda oluacak veri akmalarnn engellenmesi gerekir.

rnein bir toptanc firmasnda, firma alanlar farkl konumdaki bayilerinin tm siparilerini bir el bilgisayarna kaydedebilir. Bu veriler el bilgisayarnda geici bir sre iin depolanr. Bu sre alanlarn sahada kald sredir. Sre sonunda veriler sunucu bilgisayara aktarlr.

ADO.NET

Modul 2:

41

Veri Eriim Yntemleri

lk bilgisayardan bugne veriye erimek iin pek ok yntem gelitirilmitir. Bu yntemlerin bazlarnda ama yerleim, bazlarnda ise paylam olmutur. Amacn veriyi saklamak olduu durumlarda paylam konusunda zm aranm, amacn veriyi birok kullanc arasnda paylamak olduu durumda ise ana verinin nerede saklanaca konusunda zm yollar aranmtr.
ADO.NET

42

Kullanc saysnn ve verinin boyutunun artmasyla, veri eriimi iin bilinen modeller de olduka gelimitir. Birebir veri paylam yerine, internet zerinden oklu kullanc desteine ak veri eriim modelleri gelitirilmitir. Gnmzde gelinen son nokta ise, her an her yerden veriye kolayca erimemizi salayan XML Web Servis modelidir. Veri merkezli uygulamalar gelitirmek iin veri eriim modelleri kullanlr. Bir veri eriim modelinde ki mantksal her birime katman (tier) denir. Veri merkezli bir uygulamada katman says makine saysna bal deildir. Katman saysn veri eriim modelindeki dzeyler belirler.

stemci Katman (Client tier): Sunum ya da kullanc servis katman olarak da bilinir. . Bu katman kullanc ara yzn iermektedir. Katman (Business tier): Bu katman, uygulamann veri kayna ile etkileen blmdr. Veri Katman (Data tier): Veriyi ieren katmandr. Birlikte alabilirlik Katman (Interoperability tier): Platform ve dilden bamsz, her tr veriye etkileim salayan katmandr. Bu katmana herhangi bir iletim sistemi zerinde bulundurulabilen XML Web Servislerini rnek verebiliriz.

ADO.NET

Modul 2:

43

Uygulamalar, katmanlara blnerek leklenebilirlii artrlr. NOT: Katman says arttka, veri eriim modelinin leklendirebilirlii ve karmakl da
artar.

ADO.NET

44

Konu 2: ADO.NETe GR

ADO.NET Nedir?

ADO (ActiveX Data Objects), farkl veri kaynaklarna hzl ve gvenli eriim

iin Microsoft tarafndan gelitirilen nesne modelidir. ADO.NET ise ADO teknolojisinin en yeni versiyonudur. ADO ile ayn programlama modelini
ADO.NET

Modul 2:

45

kullanmamakla birlikte, ADO modelinden gelen pek ok zm yolunu da beraberinde getirir. Uygulama geliim ihtiyac arttka, yeni uygulamalarda Web uygulama modeline olan ballk gittike azalmaktadr. imdilerde ise a balantlar zerinden veriyi rahata aktarabilmek iin XML kullanmna olan ynelim artmaktadr. te ADO.NET, XML ve ADO.NETin .NET Framework iinde en uygun ekilde programlama ortam oluturmamz salar. ADO.NET modelinin dier veri eriim modellerine gre stnlklerini yle sralayabiliriz: ADO.NET, veritabanndan ekilen verilerin kopyasn XML formatn kullanarak bellee aktarr. Uygulamann kullanc says arttka kaynak kullanm da artmaktadr. N-Katmanl (N-tier) uygulama yaps kullanlarak, uygulamalarn katmanlar zerinden datlmas salanr. Bylece uygulamalarn leklenirlii artar. ADO.NET ile balantsz veri ortamlar iin uygulama gelitirilebilir. ADO.NET gelimi XML destei verir.

ADO.NET Nesne Modeli:

ADO.NET nesne modeli iki ana blmden olumaktadr.


DataSet Snflar

.NET Veri Salayc Snflar


ADO.NET

46

DataSet snflar, evrimd ortamlar iin veri depolama ve ynetme ilemlerini salar. DataSet snflar veri kaynandan bamsz her tr uygulama ve veritaban iin kullanlabilir. zellikle likisel Veritaban, XML ve XML Web Servisleri zerinden veri ekmek iin kullanlr.

.NET veri salayc snflar, farkl trdeki veritabanlarna balanmak iin kullanlr. Bu snflar sayesinde istenilen trdeki veri kaynana kolayca balant kurulabilir, veri ekilebilir ve gerekli gncelleme ilemleri yaplabilir. ADO.NET nesne modeli, aadaki veri salayc snflarn ierir: SQL Server .NET Veri Salaycs OLE DB .NET Veri Salaycs Dier .NET Veri Salayclar
Hangi veri kayna kullanlacaksa, sadece ona uygun veri salayc snf

DKKAT:
kullanlmaldr.

ADO.NET Veri Salayclar:

NET veri salayclar, ADO.NET mimarisinin veritaban ile uygulama (Windows, Web) veya XML Web Servis arasnda balant kurmak iin her tr alt yapy barndran ekirdek bileendir. Tm veri salayclar, System.Data isim alan iinde tanmlanmtr.

ADO.NET

Modul 2:

47

NET Framework 1.0 srm ile birlikte SQL Server .NET ve OLE DB .NET veri salayc snflar gelmitir. SQL Server .NET: SQL Server 7.0 ve SQL Server 2000 veritabanlarna hzl balant salar. SQL Server balant nesneleri System.Data.SqlClient isim alannda bulunur. OLE DB .NET: SQL Server 6.5 ve daha ncesi srmlerine, Oracle, Sybase, DB2/400 ve Microsoft Access veri tabanlarna balant kurmay salar. OLE DB balant nesneleri System.Data.OleDb isim alannda bulunur. NET Framework 1.1 srm ile birlikte SQL Server .NET ve OLE DB .NET veri salayclarna Oracle .NET ve ODBC .NET veri salayclar da eklenmitir. ORACLE .NET: Oracle veritabanlarna balant iin tasarlanm veri salaycsdr. Oracle balant nesneleri System.Data.OracleClient isim alannda bulunur. NOT:
System.Data.OracleClient isim alann kullanmak iin, projeye

System.Data.OracleClient.dll referans eklenmelidir.

ODBC .NET: Dier veritabanlarn destekleyen genel bir veri salaycdr. ODBC balant nesneleri System.Data.ODBC isim alannda bulunur. renim ve kullanm kolayl olmas amacyla ADO.NET veri salayclarn isimlendirilmesinde genelletirmeye gidilmitir. SQL Server .NET veri salayclarnn snf isimleri Sql n eki ile, OLE DB .NET veri salayclarnn snf isimleri ise OleDb n eki ile balar. Bu genellemeye SqlConnection ve OleDbConnection rnekleri verilebilir.

ADO.NET

48

Her bir veri salaycs ierisinde, birok balant nesnesi bulunur.


Connection Command DataReader DataAdapter

XxxConnection: : Veri kaynana balant iin kullanlan snftr.


ADO.NET

Modul 2:

49

XxxCommand: Veri kayna zerinde sorgu altrmak iin kullanlr. Veri kaynandan dnen kaytlar XxxDataReader veya DataSet kullanlarak veri balantl kontrollere aktarlr. XxxDataReader: evrimii balantlarda sadece veri okumak iin kullanlan snftr. XxxDataAdapter: evrimd balantlarda kullanlan veri ileme nesnesidir. NOT:
Xxx yerine seilen veri salaycsna gre SQL, OLEDB, Oracle ve ODBC

eklerinden biri kullanlr.

Modl zeti

1. 2. 3. 4.

Veri depolama yntemleri nelerdir? Balantl ve Balantsz Veri ortamlar nelerdir? Veri eriim yntemleri nelerdir? ADO.NET veri salayclar nelerdir?

ADO.NET

50

Lab 2: Veri Merkezli Uygulamalar ve ADO.NETe Giri

Uygulama 1
Yeni balant oluturmak.
Bu uygulamada Server Explorer kullanarak ar Merkezi uygulamas iin yeni bir balant oluturulur. ar Merkezi Uygulamas iin yeni balant oluturmak.

ADO.NET

Modul 2:

51

3.

Visual Studio .Neti kullanarak ar Merkezi uygulamasn amak.


File mens altndan Open alt mens ierisinden Project komutunu tklayn.

Look in alan kutusundan C:\Proje\ CagriMerkezi klasrn sein. Alan Open Project penceresinden CagriMerkezi.sln dosyasn seerek Open butonunu tklayn. 4. Uygulamaya CagriMerkezi veritabann eklemek. Proje isminin zerinde farenin sa butonunu tklayn. Alan menden Add mensnden Add Existing Item komutunu verin. Alan pencere zerindeki Look in alan kutusundan CD Srcs\Veritaban klasrn sein. Alan Add Existing Item penceresinden CagriMerkezi.mdb veritabann seerek Open butonunu tklayn. 5. CagriMerkezi uygulamas iin yeni balant oluturmak. Server Explorer penceresi zerinde farenin sa butonunu tklayn. Alan menden Add Connection komutunu tklayn. Alan Data Link Properties penceresinin Provider sekmesini tklayn. Provider sekmesinden Microsoft.Jet.OLEDB.4.0 Provider i seerek Next butonunu tklayn.

Alan Connection sekmesinin grntsn resimdeki gibi dzenleyerek OK butonunu tklayn.

ADO.NET

Modul 4:

ADO.NET

Modul 3

53

Modl 3: Veri Kaynaklarna Balanmak

Veriyi yneten uygulamalar, bu verilerin bulunduu kaynaa balanma ihtiyac duyar. Visual Basic .NET ile veri kaynana balanmak iin, kaynan tipine, yapsna gre farkl nesneler ve farkl veri salayclar kullanlr. Bu modln sonunda:
ADO.NET

54

Farkl veritabanlarna gre veri salayclar seebilecek, Balant cmlesi oluturabilecek, Farkl veritabanlar iin Connection nesnelerini ynetebileceksiniz.

ADO.NET

Modul 3

55

Konu 1: Veri Salayc Semek

Veri Salayc Nedir?

ADO.NET mimarisi, uygulama ile veritaban arasnda balant kurmak ve kurulan balant zerinden kaytlar almak, deitirmek ve silmek iin veri salayclarn kullanr. Farkl veritabanlar iin farkl veri salayclar kullanlr.
ADO.NET

56

Uygun veri salayc seiminde en nemli kriter Hangi salayc en iyi performans verir? sorusunun cevabdr. nk Sql Server, Oracle, Access gibi veritabanlarna farkl veri salayclar ile eriilebilir. Microsoft .NET Framework, veritabanlar ile balant kurmak iin farkl veri salayclarn destekler. SQL Server .NET OLEDB .NET ODBC .NET

Veri Salayc Snflar

.NET Framework iindeki veri salayclar, System.Data.dll ierisinde ki System.Data isim alannda yer alr. Tablo 1.1 de hangi salayc isim alan ile hangi veritabanna balanlabilecei gsterilmektedir.

ADO.NET

Modul 3

57

Veri Taban
Sql Server 7.0 ve sonraki srmler Sql Server 6.5 ve nceki srmler Microsoft Access veri taban Oracle Server Dier veri tabanlar(Oracle, Sybase, DB2/400)

Veri Salaycs sim Alan System.Data.SqlClient System.Data.OleDb System.Data.OleDb System.Data.OracleClient System.Data.OleDb

Tablo 1.1: Veri Tabanlar ve Veri Salayc sim Alanlar ODBC .NET veri salayclar, dier veri salayclarndan farkl olarak, veri kaynana balanrken hibir ara katman kullanmaz. Bunun yerine, balant iin ODBC APIleri kullanr. .NET Framework veri salayclar Tablo 1.2 de belirtilen snflar kullanmaktadr. Snf isimlerinin nndeki XXX n eki kullanlan veri salayc ismini simgeler. Eer veritabanna OLEDB veri salaycs ile balanlrsa OLEDB n ekini, eer SQL Server veri salaycs ile balanyorsa SQL n ekini alr.

ADO.NET

58

Snf
XXXConnection XXXCommand

Aklama
Balant amak ve kapatmak iin kullanlan snftr. Veritaban zerinde Stored Procedure (Sakl Yordamlar) veya SQL Cmleleri altrmak iin kullanlan snftr. Veritabanndan sadece okunur ve ileri hareketli kaytlar ekmek iin kullanlan snftr. Veritabanndan ekilen verileri DataSet ierisine veya DataSet e evrimd eklenmi verileri veritabanna aktarmak iin kullanlan snftr

XXXDataReader XXXDataAdapter

Tablo 1.2: Veri Salayc Snf simleri

System.Data.SqlClient isim alan ierisinden evrimii balantlar gelitirmek iin SqlConnection, SqlCommand, SqlDataReader snflar kullanlr.
ADO.NET

Modul 3

59

SqlConnection; MS SQL Server zerinde balant amak ve kapatmak iin kullanlan snfdr. SqlCommand; MS SQL Server zerinde Stored Procedure (Sakl Yordamlar) veya SQL Cmleleri altrmak iin kullanlan snftr. SqlDataReader; MS SQL Server zerinde SqlCommand ile altrlan SELECT sorgularn sonularn geri dndrmek iin kullanlan snftr.
System.Data.SqlClient

isim alan ierisinden evrimd balantlar gelitirmek iin SqlConnection, SqlDataAdapter, DataSet snflar kullanlr.

SqlConnection; MS SQL Server zerinde balant amak ve kapatmak iin kullanlan snftr. SqlDataAdapter; MS SQL Serverdan ekilen verileri DataSet ierisine ve DataSete evrimd eklenmi verileri MS SQL Servera aktarmak iin kullanlan snftr. DataSet; SQLDataAdapter nesnesinden gelen kaytlar evrimd depolamak ve ynetmek iin kullanlan snftr. DataSet tm veri salayc snflar iin ortaktr. NOT: DataSet, System.Data isim alan ierisinde yer alr.
System.Data.OleDb isim alan ierisinden evrimii balantlar gelitirmek iin OleDbConnection, OleDbCommand, OleDbDataReader snflar kullanlr.

OleDbConnection; Access veya dier veritabanlar zerinde balant amak ve kapatmak iin kullanlan snftr. OleDbCommand; Access veya dier veritabanlar zerinde Stored Procedure (Sakl Yordamlar) veya SQL Cmleleri altrmak iin kullanlan snftr. OleDbDataReader; Access veya dier veritabanlar zerinde OleDbCommand ile altrlan SELECT sorgularn sonularn geri dndrmek iin kullanlan snftr.
System.Data.OleDb isim alan ierisinden evrimd balantlar gelitirmek

iin OleDbConnection, OleDbDataAdapter snflar kullanlr. OleDbConnection; Access veya dier veritabanlar zerinde balant amak ve kapatmak iin kullanlan snftr. OleDbDataAdapter; Access veya dier veritabanlarndan ekilen verileri DataSet ierisine ve DataSete evrimd eklenmi verileri ilgili veritabanna aktarmak iin kullanlan snftr.

ADO.NET

60

Konu 2: Balant Oluturmak

Balant Cmlesi (Connection String) Oluturmak

ADO.NET

Modul 3

61

Balant cmlesi, veri kaynana balanmak iin gerekli bilgileri tutar.. Bu cmle, veri kaynana balant kurmak iin gerekli balant parametrelerin birleiminden oluur. Bu parametrelerin listesi Tablo 2.1de gsterilmitir.
Parametre Provider Tanm
Sadece OleDbConnection nesnelerinde kullanlr. Balant salaycsnn ismini tutar. Salayc isimleri Tablo 2.2 de belirtilmitir. Veritaban balant iin beklenmesi gereken maksimum saniye saysdr. Varsaylan deger 15 saniye dir. Veri taban ad SQL Server ad, veya MS Access veri taban iin dosya ad SQL Server login(giri) parolas SQL Server login(giri) ad SQL sunucusuna Windows hesab ile balant yaplacan belirtir. True, False veya SSPI girilebilir. SSPI, True ile e anlamldr ve bu durumda Windows hesab kullanlr. Varsaylan deeri False olur. Bu durumda gvenlik iin hassas bilgileri geri dndrmez. True olduunda ise gvenlik risk tamaya balar. Workstation veya client(istemci) adn belirtir. Client(istemci)-server(sunucu) aras veri transferinde kullanlan paketlerin boyutunu belirtir. Veritabann Read-only(Sadece okunur) ya da Write(Yazlabilir) modunu belirtir. SQL Server balantlarnda kullanlmaz.

ConnectionTimeout veya Connect Timeout Initial Catalog Data Source Password (pwd) User Id (uid) Integrated Security veya Trusted Connection

Persist Security Info

WorkstationID (wid) Packet Size

Mode

Tablo 2.1: Balant cmlesinin parametreleri


Provider parametresinin Access, SQL Server ve Oracle veri tabanlarna gre

alaca deerler Tablo 2.2 de gsterilmitir

Tr
SQLOLEDB MSDAORA Microsoft.Jet.OLEDB.4.0

Aklama
SQL Server iin Microsoft OLE DB Provider ORACLE iin Microsoft OLE DB Provider Microsoft Jet iin OLE DB Provider

Tablo 2.2: Balant cmlesinin parametreleri

ADO.NET

62

Balant Cmlesini (Connection String) Kullanmak

Yeni balant oluturmak ve ynetmek iin OleDbConnection, SqlConnection gibi XXXConnection snflar kullanlr. Veri kaynana balanmak iin oluturulan Balant Cmlesi, XXXConnection snfnn ConnectionString zelliine atanr. rnekte SQL Server veritaban iin balant cmlesi oluturulmutur. London isimli sunucuda bulunan Northwind veritabanna, sa kullanc ismi ve 2389 parolas ile balanlyor. Eer veritaban sunucusundan 60 saniye iinde cevap alnamazsa balant iptal ediliyor.
System.Data.SqlClient.SqlConnection cnNorthwind; cnNorthwind = new System.Data.SqlClient.SqlConnection(); cnNorthwind.ConnectionString ="Data Source=London;Initial Catalog=Northwind;User ID=sa;Password=2389;Connection TimeOut=60";

rnekte Microsoft Access veritaban iin balant cmlesi oluturulmutur. OleDb balants yapld iin Provider zelliinin Microsoft.Jet.OleDB.4.0 olarak belirtilmesi gerekir. Balantnn yaplaca Northwind veritabannn local makinede C:\Samples dizini altnda bulunduu belirtiliyor.
System.Data.OleDb.OleDbConnection cnNorthwind; cnNorthwind = new System.Data.OleDb.OleDbConnection();

ADO.NET

Modul 3

63

cnNorthwind.ConnectionString=@"Provider=Microsoft.Jet.OLEDB. 4.0;Data Source=C:\Samples\Northwind.mdb";

rnekte Sql Server 6.5 veri taban iin balant cmlesi oluturulmutur. SQL Server 7.0 srmnden eski bir veritaban sunucuna balant yapld iin Provider zellii SQLOLEDB olarak belirtiliyor. ProdServ isimli sunucudaki Pubs veritabanna, Windows hesab (SSPI) ile balanlyor.
System.Data.OleDb.OleDbConnection cnNorthwind; cnNorthwind = new System.Data.OleDb.OleDbConnection(); cnNorthwind.ConnectionString = Provider=SQLOLEDB;Data Source=ProdServ;Initial Catalog=Pubs;Integrated security=SSPI;

DKKAT:

Microsoft Access veri kayna, tek veri tabanndan oluur. SQL Server veri

kayna ise birden fazla veri tabanndan oluur. Bu yzden SQL Server veritaban balant cmlesinde Initial Catalog parametresi kullanlr.

Balant Cmlesi(Connection String) rnekleri

ADO.NET

64

Ms Access ile OLEDB Balant Cmleleri

Tablo 2.3 de OLEDB ile Accesse balanmak iin gerekli, rnek Balant Cmleleri gsterilmektedir.
Accesse Balant Accesse alma Grubu dosyas zerinden Balant Accesse Parola Korumal Balant Networkteki Accesse Balant Remote Server(Uzak Server) zerindeki bir Accesse Balant "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=DB_Name.mdb; " "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=Db _Name.mdb; Jet OLEDB:System Database=Db _Name.mdw" "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=Db _Name.mdb; Jet OLEDB:Database Password=sifreniz" "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=\\Server_Name\Share_Name\Share_Path\Db _Name.mdb" "Provider=MS Remote; Remote Server=http://Your-RemoteServer-IP; Remote Provider=Microsoft.Jet.OLEDB.4.0; Data Source=Db_Name.mdb"

Tablo 2.3: Ms Access ile OLEDB Balant Cmleleri

ADO.NET

Modul 3

65

SQL Server ile ODBC Balant Cmleleri

Tablo 2.4 de ODBC ile SQL Servera balanmak iin gerekli, rnek Balant Cmleleri gsterilmektedir.
SQL Server sunucusuna SQL Authentication ile balanmak "Driver={SQL Server};Server= Server_Name;Database=Db_Name;Uid=Username;Pwd= sifreniz;"

"Driver={SQL Server}; Server= Server_Name; Database=DB SQL Server sunucusuna Windows Authentication ile _Name;Trusted_Connection=yes;" balanmak

Tablo 2.4: SQL Server ile ODBC Balant Cmleleri

ADO.NET

66

SQL Server ile OLEDB Balant Cmleleri

Tablo 2.5 de OLEDB ile SQL Servera balanmak iin gerekli, rnek Balant Cmleleri gsterilmektedir.
SQL Server sunucusuna SQL Authentication ile balanmak "Provider=SQLOLEDB;Data Source= Server_Name;Initial Catalog=Db_Name;User Id= Username;Password=sifreniz;"

"Provider=SQLOLEDB;Data Source= Server_Name;Initial SQL Server sunucusuna Windows Authentication ile Catalog=DB_Name;Integrated Security=SSPI;" balanmak

Tablo 2.5: SQL Server ile OLEDB Balat Cmleleri

ADO.NET

Modul 3

67

SQL Server ile Sql Server Balant Cmleleri

Tablo 2.6 de SQLClient ile SQL Servera balanmak iin gerekli, rnek Balant Cmleleri gsterilmektedir.
SQL Server sunucusuna SQL Authentication ile balanmak SQL Server sunucusuna SQL Authentication ile balanmak SQL Server sunucusuna Windows Authentication ile balanmak SQL Server sunucusuna SQL Authentication ile balanmak "Data Source=_Server_Name;Initial Catalog=Db _Name;User Id= Username;Password=sifreniz;" "Server= Server_Name;Database=Db_Name;User ID= Username;Password=sifreniz;Trusted_Connection=False "Data Source= Server_Name;Initial Catalog=Db_Name;Integrated Security=SSPI; "Server=Server_Name;Database=Db_Name;Trusted_Connecti on=True;"

Tablo 2.6: SQL Server ile SQL Server Balant Cmleleri UYARI :
Balant cmle paramerelerinin benzer edeerleri vardr. Bu edeerler hem

OLEDB hemde SQLClient veri salaycalarda kullanlabilir. Tablo 2.7. de bu edeerler gsterilmektedir.

ADO.NET

68

OLEDB ve SqlServer Parametreleri Data Source User ID Password Initial Catalog

Edeerleri Server UID PWD Database

Tablo 2.7: OleDb ve Sql Server Parametre Edeerleri

ADO.NET

Modul 3

69

Konu 3: Balant Ynetimi

Balanty Amak ve Kapatmak

Balant cmlesini oluturduktan sonra, balanty amak ve kapamak iin Connection snfnn iki nemli metodu kullanlr. Open
ADO.NET

70

Close Open metodu, balant cmlesinde belirtilen veri kaynan amak iin kullanlr. Close metodu, alan balanty kapatmak iin kullanlr. Close metodu ile kullanlmayan balantlar kapatmak, kaynak tketimini azaltr.
Open metodu; uygulama ile veri kayna arasndaki balanty, balant

cmlesinin Timeout parametresinde belirtilen sre ierisinde kurmaya alr. Eer belirtilen sre ierisinde balant gereklemiyorsa, uygulama hata retir. Bu sre iin herhangi bir deer belirtilmemise, varsaylan deer 15 saniyedir. Daha nceden alm bir balant; kapatlmadan tekrar almaya allrsa, uygulama yine hata retecektir. Kapatlan balantnn yeniden kapatlmas hataya yol amaz.
Open metodu ile alan balantnn kapatlmamas durumunda, Garbage Collector ad verilen p toplayc devreye girerek balantnn kapatlmasn salar. Bu durum balant deikeninin geici bir sre bellekte yer tutmasna neden olur.

NOT: Balant nesnesinin Dispose metodu da balanty kapatmak iin kullanlabilir. rnekte Northwind.mdb isimli Access veritaban zerinde, Open ve Close metotlarnn kullanm gsterilmektedir.
cnNorthwind.ConnectionString = @"Provider=Microsoft.Jet. OLEDB.4.0;Data Source=C:\Samples\Northwind.mdb"; //Balanty amak cnNorthwind.Open(); //Veritaban ilemleri bu arada gerekletirillir. //Balanty kapatmak cnNorthwind.Close(); Open metodu ile veri kayna alrken, eitli alma zaman hatalarndan

dolay balant almayabilir ve uygulama hata retebilir. Bu alma zaman hatalar Sunucunun bulunamamasndan, Veritabannn bulunamamasndan, Hatal kullanc ad veya parola girilmesinden, Donanm veya yazlmdan kaynaklanabilir.

Try, Catch, Finally deyimlerini kullanarak bir blou oluabilecek potansiyel hatalardan korunur. Try blou iinde, hata retebilecek kodlar yazlr. rnein tm veritaban ilemleri bu blok iersine yazlmaldr.
ADO.NET

Modul 3

71

Catch bloklar, uygulamann rettii hatalar, tiplerine gre sral bir ekilde

iler. Bu blok iersine, yakalanan hataya gre yaplacak ilemler yazlmaldr. rnein balantnn almad bir durumda veritaban ilemleri gerekletirilmeye alld zaman, kullancya balantnn almasn bildiren mesaj kutusu karlabilir. Finally blounda, Try ve Catch bloklarndan herhangi biri ilendikten sonra alr. Bu blokta, hatann retildii veya retilmedii iki durumda da yaplmas gereken ilemler yazlr. rnein, balantnn kapatlmas her iki durumda da yaplmas gereken bir ilemdir.
System.Data.OleDb.OleDbConnection cnNorthwind; try { cnNorthwind = new System.Data.OleDb.OleDbConnection(); cnNorthwind.ConnectionString = @"Provider=Microsoft.Jet. OLEDB.4.0;Data Source=C:\Samples\Northwind.mdb"; cnNorthwind.Open(); // Veritaban ilemleri gerekletirilir. } catch (InvalidOperationException XcpInvOp) { // lk nce bu tipte hata yakalanr. MessageBox.Show("nce veri taban balantsn kapatn"); //Hata Mesajnn ieriini grmek iin kullanlr. MessageBox.Show(XcpInvOp.ToString()); } catch (Exception Xcp) { //Dier hatadan farkl bir tipte hata burda yakalanr. MessageBox.Show(Xcp.ToString()); } finally { cnNorthwind.Close(); //ya da cnNorthwind.Dispose(); }

ADO.NET

72

Balant Durumlarn Kontrol Etmek

Balant snfnn durumu hakknda bilgi almak iin, balant snfnn State zellii kullanlr.
State zelliinin alabilecei deerler tablo 3.1.1de belirtilmitir. sim Broken Closed Connecting Executing Fetching Open Aklama
Yalnzca, ak bir balantnn kopup tekrar balanld durum Balant kapal Veri kaynana balanma aamasnda Balant zerinden bir komutu altrlyor Balant zerinden veri ekiliyor Balant ak

Deeri
16 0 2 4 8 1

Tablo 3.1.1: Connection nesnesinin State Property deerleri


private void ConnectionAc(OleDb.OleDbConnection con) { //Connection, sadece kapal ise alacak If (con.State == ConnectionState.Closed) { con.Open(); }

} Balant nesnelerinin durumu deitii zaman StateChange olay tetiklenir. Bu olay ile balantnn hangi durumlarda alp kapand renilebilir.
ADO.NET

Modul 3

73

Balantnn eski ve yeni durumlar StateChangeEventArgs parametresi ile renilir. Tablo 3.1.2de bu parametrenin CurrentState ve OriginalState zellikleri grlr.
Property CurrentState OriginalState Aklama

Balantnn yeni durumu hakknda bilgi verir. Balantnn deimeden nceki durumu hakknda bilgi verir.

Tablo 3.1.2: StateChangeEventArgs parametresinin zellikleri


public void ConnectionOlustur() { System.Data.OleDb.OleDbConnection conn; conn = new System.Data.OleDb.OleDbConnection(); // Balant ayarlar yaplr. // ... // Balantnn StateChange olay gerekletii zaman // DurumRapor yordamnn arlmas ayarlanr conn.StateChange += new StateChangeEventHandler(DurumRapor); } public void DurumRapor(Object sender,StateChangeEventArgs e) { MessageBox.Show("Balant " +e.OriginalState.ToString() + " durumundan " + e.CurrentState.ToString() + " durumu olarak deiti."); }

ADO.NET

74

Modl zeti:

1. Veri salayclar ne ie yarar? SQL Server 6.5 veri tabanna balanmak iin hangi veri salaycnn kullanlmas gerekir. 2. Connection nesnelerinin kullanlmas iin gereken temel zellik hangisidir? 3. Balant akken tekrar almaya alldnda ne olur? Bu durum nasl engellenir? 4. Try Catch blou ne iin kullanlr? Finally blounda hangi kodlar yazlr? 5. Balant durumu Connection nesnesinin hangi zellii ile anlalr? Durum deitii zaman hangi olay tetiklenir?

ADO.NET

Modul 3

75

Lab 1: Balant Oluturmak

Bu labda, kullancn girdii deerlere gre Connection String oluturulur. Bu balant cmlesi ile yeni bir Connection nesnesi oluturarak, balantnn durumu incelenir. Bu lab tamamlandktan sonra: Farkl veritabanlarna gre balant cmlesi oluturabilecek, Veritabanna balant ap kapayabilecek, Balantlarn State zellii ile durumunu gzlemleyebileceksiniz.

Kontrollerin eklenmesi
VeriTabaniBaglantisi isminde yeni bir Windows projesi an. Form zerine, tablodaki kontrolleri ekleyin belirtilen zelliklerini ayarlayn.
Kontrol Kontrol smi TextBox txtVeriTabani TextBox txtSunucu TextBox txtKullaniciAdi TextBox txtParola TextBox txtTimeOut Label lblConnectionString Label lblConnectionState zellik Text Text Text Text Text Text Text
ADO.NET

Deer

Closed

76 GroupBox ComboBox ComboBox1 Button Button1 Button Button2 Button Button3 Button Button4 Text DropDownStyle Text Text Text Text

Balant lemleri:
DropDownList

Connection Olutur Connection A Connection Kapat

String

Connection Olutur

Kodlarn yazlmas
Veritaban balants oluturmak iin ncelikle balant cmlesi oluturulmas gerekir. Bu balant cmlesi, kullancnn girecei bilgilere gre oluturulur. 1. Balant cmlesi iin gerekli bilgileri tutan deikenleri tanmlayn.
private private private private private private private string string string string string string String ConnectionString; Provider; Database; Server; KullaniciAdi; Parola; TimeOut;

// Sql veritabanna balanmak iin private System.Data.SqlClient.SqlConnection sqlCon; // Access veritabanna balanmak iin private System.Data.OleDb.OleDbConnection oleDbCon;

2. Formun Load annda, ComboBox kontrolne veritaban seeneklerini ekleyin.


private void Form1_Load(System.Object sender, System.EventArgs e) { comboBox1.Items.Add("Microsoft Access");
ADO.NET

Modul 3

77 comboBox1.Items.Add("Microsoft SQL Server 2000"); comboBox1.Items.Add("Microsoft SQL Server 6.5"); // Varsayilan olarak Sql Server 2000 seili olur comboBox1.SelectedIndex = 1;

3. ComboBox kontrolnden veritaban seildii zaman, Provider ismini deitirin. Seilen veritaban Access ise, kullanc ad, parola, sunucu ve timeout TextBox kontrollerini pasif duruma getirin.
private void comboBox1_SelectedIndexChanged(System.Object sender, System.EventArgs e) { // Farkli Veritabani seildigi zaman tetiklenir. switch (comboBox1.SelectedIndex) { case 0: Provider = "Microsoft.Jet.OleDB.4.0"; EnableTextBoxes(false); break; case 1: Provider = ""; EnableTextBoxes(true); break; case 2: Provider = "SQLOLEDB"; EnableTextBoxes(true); break; } } private void EnableTextBoxes(bool SQLVeriTabaniSecili) { txtKullaniciAdi.Enabled = SQLVeriTabaniSecili; txtParola.Enabled = SQLVeriTabaniSecili; txtTimeOut.Enabled = SQLVeriTabaniSecili; txtSunucu.Enabled = SQLVeriTabaniSecili; // Access veritabani seili ise if (! SQLVeriTabaniSecili) { txtKullaniciAdi.Text = ""; txtParola.Text = ""; txtTimeOut.Text = ""; txtSunucu.Text = ""; } }

4. Connection String oluturma dmesine basld zaman, girilen deerleri aln ve balant cmlesi oluturun.
private void Button1_Click(System.Object sender,System.EventArgs e) { ConnectionString = ""; // Access Veritabani seili ise if (comboBox1.SelectedIndex == 0) { Database = txtVeritabani.Text;
ADO.NET

78 ConnectionString = "Provider= " + Provider + ";Data Source= " + Database ; } else { KullaniciAdi = txtKullaniciAdi.Text; Parola = txtParola.Text; TimeOut = txtTimeOut.Text; Server = txtSunucu.Text; Database = txtVeritabani.Text; if (Provider != "") { ConnectionString = "Provider=" + Provider + ";"; } ConnectionString ConnectionString ConnectionString ConnectionString ConnectionString } lblConnectionString.Text = ConnectionString; } += += += += += "Data Source=" + Server; ";Initial Catalog=" + Database; ";User ID=" + KullaniciAdi; ";Password=" + Parola; ";Connection TimeOut=" + TimeOut;

5. Balant cmlesi oluturulduktan sonra, bu cmleyi kullanarak Connection nesnesi oluturun. Burada dikkat edilmesi gereken nokta, kullancnn setii veritaban tipine gre farkl balant nesnesi oluturulmasdr.
private void Button2_Click(System.Object sender, System.EventArgs e) { // Access veritabani seili ise if (comboBox1.SelectedIndex == 0) { oleDbCon = new System.Data.OleDb.OleDbConnection(ConnectionString); oleDbCon.StateChange+= new StateChangeEventHandler(DurumDegisti); } else { sqlCon = new System.Data.SqlClient.SqlConnection(ConnectionString); sqlCon.StateChange += new StateChangeEventHandler(DurumDegisti); } } // Balant durumu deitii zaman, DurumDegisti // yordamndaki kodlar alr. private void DurumDegisti(Object sender, System.Data.StateChangeEventArgs e) { // Balantnn durumu kullancya bildirilir. lblConnectionState.Text = e.CurrentState.ToString(); }
ADO.NET

Modul 3

79

6. Balant nesnesi oluturulduktan sonra, Connection A dmesine baslnca balant Open metodu ile an. Ancak kullancnn baz deerleri yanl girmesi durumu gz nne alnarak Try Catch bloklar kullanlmaldr.
private void Button3_Click(System.Object sender, System.EventArgs e) { if (oleDbCon != null) { // OleDB baglantisi olusturulduysa try { oleDbCon.Open(); } catch (InvalidOperationException ex) { MessageBox.Show(ex.Message.ToString()); } catch (System.Data.OleDb.OleDbException ex) { MessageBox.Show(ex.Message.ToString()); } } else { // Sql baglantisi olusturulduysa try { sqlCon.Open(); } catch (InvalidOperationException ex) { MessageBox.Show(ex.Message.ToString()); } catch (System.Data.SqlClient.SqlException ex) { MessageBox.Show(ex.Message.ToString()); } } } }

7. Connection Kapat dmesine baslnca oluturulan balanty bularak kapatn.


private void Button4_Click(System.Object sender, System.EventArgs e) { if (oleDbCon != null) { // OleDB baglantisi olusturulduysa oleDbCon.Close(); } else { // Sql baglantisi olusturulduysa sqlCon.Close(); } }
ADO.NET

Modul 5:

Modl 4: Balantl (Connected) Veritaban lemleri

Bu modlde ADO.NET ile balantl veritaban ilemlerin nasl yapldn reneceksiniz.

Konu: 4

81

Bu modln sonunda: Balantl veri ortamlaryla almay renecek, Command oluturabilecek, Command ile geriye tek deer veya kayt kmesi dndrebilecek, Command ile altrabilecek, INSERT, UPDATE ve DELETE sorgularn

82

Modl 4: Connected Veritaban lemleri

Konu 1: Balantl Veri Ortamlaryla almak

Balantl Uygulamalar in Veritaban Mimarisi

Konu: 4

83

Balantl veri ortamlar, uygulamalarn veri kaynana srekli bal kald ortamlardr. Bu ortamlarda veri alma ve deitirme ilemleri uygulama ile veri kayna arasnda balant kurulduktan sonra gerekletirilir. Balantl veri ortamlar ile veritaban zerinde, gerekli tm veritaban ilemleri yaplabilir. Veritabanndan tek deer ekme Sadece okunabilir kayt kmeleri dndrme Kayt ekleme Kayt silme Kayt gncelleme

Balantl veri ortamlar ierisinde kullanlan snflar Tablo 4.1 de belirtilmitir.


Snf
XXXConnection XXXCommand

Aklama
Balant amak ve kapatmak iin kullanlan nesnedir. Veritaban zerinde Stored Procedure (Sakl Yordam) veya SQL Cmleleri altrmak iin kullanlan nesnedir. Veritabanndan sadece okunur ve ileri hareketli kaytlar ekmek iin kullanlan nesnedir. Kaytlar XXXCommand nesnesinin ExecuteReader metodu ile XXXDataReader ierisine aktarlr.

XXXDataReader

Tablo 4.1. Balantl Veri Ortam Snflar

84

Modl 4: Connected Veritaban lemleri

Konu 2: Command ile almak

Commmand Nedir?

Command, veritaban zerinde Stored Procedure (Sakl Yordam) ve Sorgu

Konu: 4

85

altrmak iin kullanlr. Command Nesneleri ile veritaban tablolarnda; sorgu, ekleme, silme ve gncelleme ilemleri yaplabilir. Tablo 4.2 de hangi veri salayc iin hangi Command Nesnesinin kullanld gsterilmektedir. Tablo 4.2. Command Nesneler

Nesne System.Data.SqlClient.SqlCommand System.Data.OleDb.OleDbCommand

Veri Salayclar SQL Server .NET Veri Salaycs OLE DB .NET Veri Salaycs

System.Data.OleDb.ODBCCommand ODBC .NET Veri Salaycs Veritaban zerinde Stored Procedure ve Sorgu altrmak iin Command Nesnelerinin belirli zelliklerini kullanmak gerekir. Command Nesnelerinin bu zellikleri aada belirtilmitir.

Name: Command nesnesinin kod ierisindeki ismidir. Bu isim Command nesnesine bavurmak iin kullanlr. Connection: Command nesnesinin hangi Connection zerinde alacan belirler. CommandType: altrlacak komutun trn belirtir. Text, Stored Procedure ve TableDirect olmak zere deeri vardr. TableDirect SQL Server tarafndan desteklenmez. CommandText: Stored Procedure adn veya Sorgu cmlesini tutar.

86

Modl 4: Connected Veritaban lemleri

Parameters: Command ierisinde altrlacak Stored Procedure veya Sorgu cmlesine, dardan deer almak ve darya deer gndermek iin kullanlr. Her bir Command Nesnesi iin bir veya birden ok parametre tanmlanabilir.

Command zelliklerine deer girildikten sonra, Command altrmak iin Tablo 4.3 deki metotlardan uygun olan seilir.
Command Metodu ExecuteScalar ExecuteReader ExecuteNonQuery Aklama
altrlan Command nesnesinden geriye tek deer dndrmek iin kullanlr. altrlan Command nesnesinden geriye kayt kmesi dndrmek iin kullanlr. Command Nesnesi zerinde veri gncelleme, deitirme ve silme ilemleri yapmak iin kullanlr. Bu ilemin sonucunda etkilenen kayt says geriye dndrr. altrlan Command Nesnesinden geriye XML dndrmek iin kullanlr. Sadece SQL Server 7.0 ve sonraki versiyonlar iin kullanlr.

ExecuteXmlReader

Tablo 4.3: Command Metotlar

Konu: 4

87

Command Oluturmak

Command, kod ierisinden veya ToolBox zerinden oluturulabilir. Bu yntemler ile kullanlan veritabanna gre, OleDbCommand veya SqlCommand nesneleri oluturulur. rnekte Access veritabanna balanmak iin, OleDbCommand snf tanmlanm ve bu Command snfnn gerekli zelliklerine deer atanmtr.
//Access Veritabanna balanmak iin Command tanmlanr. System.Data.OleDb.OleDbCommand cmd = new System.Data.OleDb.OleDbCommand(); //Command Snfnn CommandText zelliine universiteler cmd.CommandText="select * from universiteler"; //Command Snfnn Connection zelliine aktif connection //aktarlr cmd.Connection=conn; //Command Snfna, sorgu cmlesi yazlacan belirler. cmd.CommandType=CommandType.Text;

ToolBox zerinden Command nesnesi oluturmak iin belirtilen admlar takip edin. 1- Veri kaynana balant kurmak iin Connection tanmlanr. 2- ToolBox iinden Data paneli seilir. 3- Data panelindeki OleDbCommand veya SqlCommand nesnesi form zerine srklenir.

88

Modl 4: Connected Veritaban lemleri

4- Eklenen Command nesnesinin zellikleri Tablo 4.4e gre ayarlanr.


zellik Name Connection Aklama
Command nesnesinin kod ierisinde kullanlan ismidir. Command nesnesinin hangi Connection zerinde alacan belirler. Bu zellik ile yeni Connection oluturabilir veya var olan Connection nesnesine balanlabilir. Command nesnesinin tipini belirler. altrlacak Commanda gre Text, StoredProcedure ve TableDirect seilir. Text: SQL Cmlesi StoredProcedure: Kaytl Yordam TableDirect: Tablo kaytlar

CommandType

TableDirect sadece OleDbCommand


nesnesi tarafndan kullanlr.

CommandText

Command nesnesinin altrlacak komutudur. Seilen CommandTypea gre CommandText belirlenir. Text: altrlacak SQL Cmlesi. StoredProcedure: altrlacak Stored Procedure ad. TableDirect: Veritabanndaki Tablo ad

Parameters

Command nesnesinin CommandText komutuna dardan deer almak veya komuttan geriye deer dndrmek iin kullanlr. Parameters zellii Collection olduu iin bir veya birden ok deer alabilir veya gnderebilir.

Tablo 4.4: Command zellikleri

Konu: 4

89

Parametre Kullanmak

Stored Procedure ve SQL Cmleleri parametre alabilir veya gnderebilir. Ayrca Stored Procedure geriye tek deer bile dndrebilir. Stored Procedure ve SQL Cmlelerinin parametre deerlerini saklamak iin, XXXCommand nesnesinin Parameters zellii kullanlr. Ayn zamanda bu zellik XXXParameters nesnesinin koleksiyonudur. Command nesnesi altrlmadan nce, komuttaki her giri parametresi iin bir deer girilmelidir. Ayrca Command nesnesi altrldktan sonra, sonu parametrelerinin deerleri geriye dndrlebilir. Command nesnesine parametre eklemek iin aadaki yntemler kullanlr. XxxParameter nesneleri oluturulur ve Command nesnesinin Parameters koleksiyonuna bu nesneler eklenir. Properties penceresi kullanlarak Command nesnesinin Parameters zelliine tasarm aamasnda parametreler eklenir. parametre eklemek iin aadaki

XXXParameter nesnesini kullanarak, admlar takip edilir.

1- Yeni bir OleDbParameter veya SqlParameter nesnesi oluturulur. 2- Eklenen Parameter nesnesinin zellikleri Tablo 4.5 gre ayarlanr.

90 Property ParameterName Aklama

Modl 4: Connected Veritaban lemleri

Parametrenin ismi, @Ad gibi gre SqlDbType veya OleDbType enumeratorlerinden seilir.

DbType ,SqlDbType, OleDbType Parametrenin veri tr. Kullanlan veri tabanna

Size Direction

Parametredeki verinin byte olarak maksimum boyutu. Parametrenin tr. ParameterDirection deerlerinden biri ile belirtilir. Bu zelliin alabilecei deerler:

ParameterDirection.Input (varsaylan

deer)
ParameterDirection.InputOutput ParameterDirection.Output ParameterDirection.ReturnValue

Tablo 4.5: XxxParameter zellikleri 3- XxxParameter nesnelerini Command nesnesine eklemek iin, Command nesnesinin Parameters koleksiyonunu ierisindeki Add metodu kullanlr. Eer bu komut sonu dndrecek bir stored procedure aryorsa, herhangi bir parametre eklemeden nce ParameterDirection.ReturnValue parametresini eklenmelidir. Parametrelerin eklenme sras nemli deildir.

Tablo 4.6 da Direction zelliinin deerleri listelenmitir.

Konu: 4

91 Enumeratr Input Output InputOutput ReturnValue zellik


Girdi parametresidir. Varsaylan deerdir. kt parametresidir. Girdi ve kt parametresi olarak kullanlr. Bir fonksiyon sonucunu geri dndrmek iin kullanlr.

Tablo 4.6 Direction zelliinin Enumeratrleri rnekte EmployeeLogin isminde bir stored procedure iin, paramUser, ve paramPass isminde iki OleDbParameter tanmlanm ve bu parametreler Command nesnesinin Parameters koleksiyonuna eklenmitir.
System.Data.OleDb.OleDbParameter paramUser = new System.Data.OleDb.OleDbParameter("@userName", System.Data.OleDb.OleDbType.Char, 50); paramUser.Direction = ParameterDirection.Input; System.Data.OleDb.OleDbParameter paramPass = new System.Data.OleDb.OleDbParameter("@userPass", System.Data.OleDb.OleDbType.Char, 20); paramPass= ParameterDirection.Input; cmd.Parameters.Add(paramUser); cmd.Parameters.Add(paramPass);

ToolBox kontrollerini kullanarak parametre eklemek iin, aadaki admlar takip edilir. 1- Toolbox zerinden OleDbCommand veya SqlCommand nesnesi seilir ve forma eklenir. 2- Properties penceresinden, bu Command nesnesinin Connection, CommandType ve CommandText zelliklerine deerler atanr. 3- CommandText zelliine deer girildikten sonra, ekrana kan Bu komut nesnesi iin parametre eklemek ister misiniz? ileti kutusuna Evet denir. 4- Visual Studio .NET ortam Command nesnesi iin parametre oluturacak kodlar otomatik olarak ekler.

92

Modl 4: Connected Veritaban lemleri

Konu 3: Command ile Geriye Deer Dndrmek

altrlan stored procedure ya da SQL cmlesinden geriye tek deer dndrlebilir. Bu tr durumlar iin DataSet yerine Command nesnesi kullanlmaldr. Command ile geriye tek deer dndren senaryolara, aadaki rnekler verilebilir. Stok tablosundaki toplam stok miktarn geriye dndrmek iin rn tablosundaki toplam kayt saysn geriye dndrmek iin rn kategorisine gre toplam rn saysn geriye dndrmek iin

OleDbCommand veya SqlCommand nesnesi ile geriye deer dndrmek iin, ExecuteScalar metodu kullanlr.

rnekte OleDbCommand nesnesinin ExecuteScalar metodu ile Universiteler tablosundaki toplam kayt says geri dndrlmektedir.
System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection(@"provider = Microsoft.JET.OLEDB.4.0; Data source=..\universiteler.mdb"); System.Data.OleDb.OleDbCommand cmd = new System.Data.OleDb.OleDbCommand("select count(*) from"+ "universiteler", conn); conn.Open(); MessageBox.Show(cmd.ExecuteScalar.ToString()); ExecuteScalar metodu ile geriye deer dndrmek iin, sadece Sum veya Count gibi fonksiyonlar kullanlmaz. Ayn zamanda Select cmlesi veya Stored

Konu: 4

93

Procedure ile geriye tek deer dndrlebilir. rnekte rn Tablosundaki Stok Miktar SqlCommand nesnesi ile geriye dndrlmektedir.
string sql ="SELECT StokMiktari FROM Urun WHERE UrunID=" + "@UrunID"; System.Data.SqlClient.SqlCommand cmUrun = new System.Data.SqlClient.SqlCommand(sql,cnAlisveris); System.Data.SqlClient.SqlParameter prmID = new System.Data.SqlClient.SqlParameter("@UrunID",System.Data.Sql DbType.Int, 4); cmUrun.Parameters["@UrunID"].Value = 42; cnAlisveris.Open(); int adet = Convert.ToInt32(cmUrun.ExecuteScalar()); cnAlisveris.Close(); MessageBox.Show("Quantity in stock: " + adet.ToString());

Konu 4: Command ile Geriye Kayt Dndrmek

altrlan stored procedure ya da SQL cmlesi, geriye birden ok deer veya kayt kmesi dndrlebilir. Bu tr durumlar iin DataAdapter veya DataReader nesneleri kullanlr. Bu nesnelerin genel fark, DataReader balantl, DataAdapter Balantsz veri ortamlar iin kullanlr.
DataReader nesnesinin kullanld senaryolara, aadaki rnekler verilebilir.

94

Modl 4: Connected Veritaban lemleri

Tablodan tek kayt dndrmek.(Msteri tablosundan MsteriID ye gre kayt dndrmek) Sadece okunur sonular dndrmek. (Web Form zerinde aranan rnlerin, sonularn dndrmek )

OleDbCommand veya SqlCommand nesnesi ile geriye kayt dndrmek iin, ExecuteReader

metodu kullanlr. ExecuteReader ile dnen kaytlar

DataReader nesnesine aktarlr.

DataReader zellik ve Metotlar


DataReader dnen kaytlar zerinde ilem yapmay salayan metot ve

zelliklere sahiptir. DataReader nesnesinin bu zellik ve metotlar aada ilemleri yapar. Kayt kmesi iindeki kaytlar tek tek okur. Kaydn belirli bir kolonunu veya tm kolonlarn okur. Kolonlarn ierisinde deer olup olmadn kontrol eder. Kolonlarn ema bilgilerini okur. (ColumnName, ColumnOrdinal,
ColumnSize, NumericPrecision, NumericScale, Datatype,ProviderType, Islong,AllowDBNull)

NOT: DataReader, verilere tek ynl(forward-only) ve okunabilir (read-only) eridii iin


olduka hzldr.

DataReader nesnesinin metotlar Tablo 4.7 de gsterilmitir.

Konu: 4

95 Metot Close GetBoolean GetByte GetBytes GetChar GetChars GetDataTypeName GetDateTime GetDecimal GetDouble GetFieldType GetFloat GetGuid GetInt16 GetInt32 GetInt64 GetName GetOrdinal GetSchemaTable GetString GetTimeSpan GetValue GetValues NextResult Aklama DataReader nesnesini kapatlr ve hafzadan
kaldrr. Belirli bir kolonun deerini boolean olarak geri dndrr. Belirli bir kolonun deerini byte olarak geri dndrr. Belirli bir kolonun deerini byte dizisi olarak geri dndrr. Belirli bir kolonun deerini char olarak geri dndrr. Belirli bir kolonun deerini karakter dizisi olarak geri dndrr. Belirli bir kolonun veri trn verir. Belirli bir kolonun deerini DateTime olarak geri dndrr. Belirli bir kolonun deerini Decimal olarak geri dndrr. Belirli bir kolonun deerini Double olarak geri dndrr. Belirli bir kolonun veri trn geri dndrr. Belirli bir kolonun deerini Float olarak geri dndrr. Belirli bir kolonun deerini Globally-unique identifier(GUID) olarak geri dndrr. Belirli bir kolonun deerini 16-bit tamsay(Short) olarak geri dndrr. Belirli bir kolonun deerini 32-bit tamsay(Integer) olarak geri dndrr. Belirli bir kolonun deerini 64-bit tamsay(Long) olarak geri dndrr. Belirli bir kolonun ismini geri dndrr. Belirli bir kolonun sra numarasn geri dndrr.

DataReader nesnesinin ema bilgilerini gsterir.


Tablo hakkndaki detay bilgilerini gsterir. Belirli bir kolonun deerini string olarak geri dndrr. Belirli bir kolonun deerini TimeSpan nesnesi olarak geri dndrr. Belirli bir kolonun deerini geri dndrr. Belirli bir kaydn tm kolon deerlerini geri dndrr. Komut metninde birden fazla SELECT ifade varsa, sonular bu metot kullanlarak farkl veri kmeleri

96
gibi alnabilir.

Modl 4: Connected Veritaban lemleri

Read

DataReader nesnesinde okunacak kayt olduu srece okuma yapar. Kayt varsa True, yoksa False deeri geri dndrr.

Tablo 4.7 DataReader Metodlar


DataReader, Balantl veri ortamlarnda kullanld iin veri kaynana srekli

baldr. Bundan dolay veri al ilemi bittikten sonra Connection ya da DataReader nesnesi kapatlarak, bellein daha etkin kullanlmas salanr.

DataReader nesnesinin zellikleri Tablo 4.8 de gsterilmitir. zellik


FieldCount IsClosed Item RecordAffected

Aklama
DataReader iinde tutulan stun saysn belirtir. DataReader balantsnn durumunu belirtir. Balant ak ise FALSE , kapal ise TRUE dndrr. DataReader ile gelen verilere eriim salar. DataReader ile gelen kayt saysn verir.

Tablo 4.8 DataReader zellikleri

Konu: 4

97

DataReader kullanarak kayt ekmek iin aadaki admlar takip edin.

1- Balanlacak veritabanna gre Connection nesnesi eklenir 2- Balanlacak veritabanna gre OleDbCommand veya SqlCommand nesnesi eklenir ve gerekli zellikleri ayarlanr. 3- Veritaban balants alr. 4- DataReader tanmlanr. Command nesnesinin ExecuteReader metodu ile arlan kaytlar DataReader nesnesine atanr. 5- DataReader nesnesinin Read metodu False oluncaya kadar, kaytlar dng ile okunur ve Form kontrollerine aktarlr. 6- DataReader kapatlr. rnekte rn Tablosundaki tm rnler, OleDbDataReader ile form zerindeki ListBox kontrolne eklenir.
System.Data.OleDb.OleDbCommand cmUrun = new System.Data.OleDb.OleDbCommand("SELECT UrunAdi, StokMiktari" +"FROM Urun", cnAlisveris); cnAlisveris.Open(); System.Data.OleDb.OleDbDataReader rdrUrun; rdrUrun = cmUrun.ExecuteReader(CommandBehavior.CloseConnection); while (rdrUrun.Read()) { listBox1.Items.Add(rdrUrun.GetString(0)+" - "+ rdrUrun.GetInt16(1)); } rdrUrun.Close();

98

Modl 4: Connected Veritaban lemleri

Konu 5: Command ile Kayt Dndrmeyen Sorgular altrmak

Command ile veritaban yapsnda deiiklik yaplabilir (Tablo, View ve Stored Procedure oluturmak, deitirmek ve silmek), gvenlik seenekleri ayarlanabilir (Tablo ve View izinleri) ve veritaban ierisindeki veri deitirilebilir (Kayt ekleme, silme ve gncelleme). OleDbCommand veya SqlCommand nesnesi ile bu tr ilemlerin yaplabilmesi iin, ExecuteNonQuery metodu kullanlr.
ExecuteNonQuery Metodu ile Select hari SQL (Structured Query Language)

ve T-SQL (Transact- Structured Query Language) komutlar kullanlr. SQL "Structured Query Language" (Yaplandrlm Sorgulama Dili) veritaban sorgu dilidir. SQL ile veritabanna kayt ekleme, silme, var olan kayd dzenleme ve kayt sorgulama ilemleri yaplabilir. SQL standart bir veritaban sorgu dilidir ve Oracle, db2, Sybase, Informix, Microsoft SQL Server, MS Access gibi veritaban ynetim sistemlerinin temelini oluturur. En sk kullanlan SQL komutlar SELECT, INSERT, UPDATE ve DELETE komutlardr. SQL Servern sorgulama ve programlama diline T-SQL denir. Transact-SQL ile ilikisel veritaban sistemi ynetilebilir. TransactSQL komutlar kullanm amalarna gre genel kategoriye ayrlr. Bunlar: SQL Veri leme Dili (Data Manipulation Language-DML)

Konu: 4

99

SQL Veri leme Dili; veri girmek, deitirmek, silmek ve verileri almak iin kullanlr. En sk kullanlan DML komutlar ve kullanm amalar Tablo 4.9 gsterilmitir.
DML Komutu
SELECT DELETE UPDATE INSERT

Aklama
Veri semek Veri silmek Veri gncellemek Veri girmek

Tablo 4.9 DML Komutlar SQL Veri Tanmlama Dili (Data Definition Language-DDL) SQL Veri Tanmlama Dili; Veritaban nesnelerini yaratmak, silmek ve baz temel zelliklerinin dzenlemek iin kullanlr. En sk kullanlan DDL komutlar ve kullanm amalar Tablo 4.10da gsterilmitir.
DDL Komutu
CREATE ALTER DROP

Aklama
Yeni bir veritaban nesnesi yaratmak. rnek CREATE TABLE, CREATE TRIGGER Veritaban nesnelerinde deiiklik yapmak. rnek ALTER TABLE, ALTER TRIGGER Veritaban nesnelerini silmek. rnek DELETE TABLE, DELETE TRIGGER

Tablo 4.10 DDL Komutlar SQL Veri Kontrol Dili (Data Control Language-DCL) SQL Veri Kontrol Dili; bir veritaban kullancs veya rol ile ilgili izinlerin dzenlenmesini salar. Aadaki tablo DCL komutlarn ve fonksiyonlarn gstermektedir.
DCL Komutu
GRANT DENY REVOKE

Aklama
Kullancya yetki vermek Kullanc, grup veya rol herhangi bir eylem iin engeller. Daha atanm olan yetki veya engeli kaldrr.

Tablo 4.11 DCL Komutlar


ExecuteNonQuery metodu ile DDL ve DCL komutlar altrmak iin aadaki

admlar takip edin 1- Balanlacak veritabanna gre Connection nesnesi eklenir 2- Balanlacak veritabanna gre OleDbCommand veya SqlCommand nesnesi eklenir ve gerekli zellikleri ayarlanr. 3- Veritaban balants alr. 4- Command nesnesinin ExecuteNonQuery metodu kullanlr. 5- Veritaban balants kapatlr.

100

Modl 4: Connected Veritaban lemleri

rnekte SqlCommand nesnesinin ExecuteNonQuery metodu altrlarak, rn isminde tablo oluturulmaktadr.


System.Data.SqlClient.SqlCommand cmUrunTabloOlustur = new System.Data.SqlClient.SqlCommand("CREATE TABLE Urun (UrunID" + "int, UrunAdi varchar(50), StokMiktari int) ", connAlisveris); cmUrunTabloOlustur.CommandType = CommandType.Text; try { connAlisveris.Open(); int kayitSayisi; kayitSayisi=cmUrunTabloOlustur.ExecuteNonQuery(); connAlisveris.Close(); MessageBox.Show(kayitSayisi+" "+"kayt eklendi."); } catch(Exception ex) { MessageBox.Show(ex.Message.ToString()); } ExecuteNonQuery metodu ile INSERT, UPDATE ve DELETE sorgular

altrlabilir. rnekte ExecuteNonQuery metodu altrlarak, rn tablosuna yeni kayt eklenmitir.


System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand("INSERT INTO Urun"+ "(UrunID,UrunAdi,StokMiktari) VALUES" + "(@UrunID,@UrunAdi,@StokMiktari)", connAlisveris); cmd.Parameters.Add("@UrunID", 1); cmd.Parameters.Add("@UrunAdi", "DVD"); cmd.Parameters.Add("@StokMiktari", 15); try { connAlisveris.Open(); int kayitSayisi = cmd.ExecuteNonQuery(); connAlisveris.Close(); MessageBox.Show(kayitSayisi+" "+"kayt eklendi."); } catch(Exception ex) { MessageBox.Show(ex.Message); } rnekte ExecuteNonQuery metodu altrlarak, rn tablosunda kayt

gncellenmitir.
System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand("Update Urun Set" + "StokMiktari = @StokMiktari Where UrunID = @UrunID", connAlisveris); cmd.Parameters.Add("@UrunID", 1); cmd.Parameters.Add("@StokMiktari", 30); try { connAlisveris.Open(); int kayitSayisi = cmd.ExecuteNonQuery(); connAlisveris.Close(); MessageBox.Show(kayitSayisi+" kayt deitirildi.");

Konu: 4

101 } catch(Exception ex) { MessageBox.Show(ex.Message); } rnekte ExecuteNonQuery metodu altrlarak, rn tablosundan kayt

silinmitir.
System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand("Delete Urun Where"+ "UrunID= @UrunID", connAlisveris); cmd.Parameters.Add("@UrunID", 1); try { connAlisveris.Open(); int kayitSayisi=cmd.ExecuteNonQuery(); connAlisveris.Close(); MessageBox.Show(kayitSayisi+" kayt silindi."); } catch(Exception ex) { MessageBox.Show(ex.Message); }

Modl zeti

1. 2. 3. 4. 5.

Balantl veri ortam hangi .NET nesneleri ile gerekletirilir? Command nesnesinin ka farkl altrlma biimi vardr? Aklayn. Command nesnesinin Parameters zellii ne iin kullanlr? DataReader nesnesinin alma modelini bir rnekle aklayn. Ka farkl SQL sorgu tr vardr?

102

Modl 4: Connected Veritaban lemleri

Lab 1: Veritaban lemleri

Bu uygulamada, veritabanndaki Personel tablosu zerinde kayt ilemleri gerekletirilir. Personel kaytlarnn okunup TextBox kontrollerine doldurulmas, yeni personel kaydnn eklenmesi, bir personelin bilgilerinin gncellenmesi veya silinmesi ilemleri yaplr. Bu lab tamamlandktan sonra: Access veritabanna balant oluturabilecek, Command nesnesinin ExecuteNonQuery metodu ile INSERT, DELETE sorgusu altrabilecek, Sorgulara parametre ekleyebilecek, Command nesnesinin ExecuteReader metodu ile DataReader oluturabilecek,
DataReader nesnesi ile kayt okuyabileceksiniz.

Veritabannn oluturulmas
Bu uygulamada kullanlacak Personel tablosu iin bir veritaban oluturulmas gerekir. 1. Microsoft Access ile kisi isminde bir veritaban oluturun. 2. Veritabanna Personel isminde bir tablo ekleyin ve tabloda belirtilen kolonlar ekleyin.

Konu: 4

103 Alan Ad Veri Tr AutoNumber Text Text Date/Time Text Text

Numara Ad Soyad DogumTarihi Adres Sehir

Kontrollerin eklenmesi
Personel isminde yeni bir Windows projesi an. Form zerine, tablodaki kontrolleri ekleyin belirtilen zelliklerini ayarlayn.
Kontrol Kontrol smi TextBox txtAd TextBox txtSoyad TextBox txtDTarihi TextBox txtSehir TextBox txtAdres zellik BorderStyle BorderStyle BorderStyle BorderStyle BorderStyle Multiline ComboBox cbNo Button btnYeni Button btnIptal Button btnKaydet Button btnSil ScrollBars DropDownStyle Text Text Text Text Deer FixedSingle FixedSingle FixedSingle FixedSingle FixedSingle True Vertical DropDownList

Yeni ptal Kaydet Sil

104

Modl 4: Connected Veritaban lemleri

Kodlarn yazlmas
Personel tablosu zerinde ilem yaplmas iin veritabanna balant almas gerekir. Bu balant iin gereken Connection String ifadesinin merkezi bir yerden alnmas, deiiklik durumunda kolaylk salayacaktr. 1. Projeye bir modl ekleyin ve balant dizisini tanmlayn.
public string connStr=@"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\Samples\kisi.mdb";

DKKAT: Bu aamadan sonra kodlar, Formun kod tarafna yazlacaktr.

ExecuteNonQuery metodu
2. Veritabanna yeni bir Personel kayd eklemek iin gereken kodlar bir yordam altnda yazn.
public void Kaydet() { System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection(); conn.ConnectionString = Module1.connStr; System.Data.OleDb.OleDbCommand comm = new System.Data.OleDb.OleDbCommand(); comm.Connection = conn comm.CommandType = CommandType.Text; comm.CommandText = "INSERT INTO"+ "Personel(Ad,Soyad,DogumTarihi,Adres,Sehir)"+ "values(@ad,@soyad,@tarih,@adres,@sehir)"; comm.Parameters.Add("@ad", txtAd.Text); comm.Parameters.Add("@soyad", txtSoyad.Text); comm.Parameters.Add("@tarih", txtDTarihi.Text); comm.Parameters.Add("@adres", txtAdres.Text); comm.Parameters.Add("@sehir", txtSehir.Text); try { conn.Open(); comm.ExecuteNonQuery(); } catch(Exception ex) { MessageBox.Show(ex.Message); }

Konu: 4

105

finally { conn.Close(); } }

3. Verilen bir Personel numarasna gre tablodan kayt silme ilemini gerekletiren kodlar yazn.
public void Sil(int ID) { System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection(); conn.ConnectionString = Module1.connStr; System.Data.OleDb.OleDbCommand comm = new System.Data.OleDb.OleDbCommand(); comm.Connection = conn; comm.CommandType = CommandType.Text; comm.CommandText = "Delete from Personel Where"+ "Numara=@No"; comm.Parameters.Add("@No", ID); try { conn.Open(); comm.ExecuteNonQuery(); } catch(Exception ex) { MessageBox.Show(ex.Message); } finally { conn.Close(); } }

ExecuteReader ve DataReader
4. ComboBox kontrolne personel numaralarn dolduran kodlar yazn. Bu ComboBox, personel kaytlarn numaraya gre semek iin kullanlacaktr.
public void IDDoldur() { cbNo.Items.Clear(); System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection(); conn.ConnectionString = Module1.connStr; System.Data.OleDb.OleDbCommand comm = new System.Data.OleDb.OleDbCommand(); comm.Connection = conn; comm.CommandType = CommandType.Text; comm.CommandText = "Select Numara from Personel"; System.Data.OleDb.OleDbDataReader dr; try { conn.Open(); dr = comm.ExecuteReader();

106

Modl 4: Connected Veritaban lemleri

while(dr.Read()) { cbNo.Items.Add(dr.GetInt32(0)); } } catch(Exception ex) { MessageBox.Show(ex.Message); } finally { dr.Close(); conn.Close(); } }

5. ComboBox kontrolnden seilen personel numarasna gre formdaki kontrollerin doldurulmasn salayan kodlar yazn.
public void IDyeGoreFormDoldur(int ID) { System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection(); conn.ConnectionString = Module1.connStr; System.Data.OleDb.OleDbCommand comm = new System.Data.OleDb.OleDbCommand(); comm.Connection = conn; comm.CommandType = CommandType.Text; comm.CommandText = "Select Ad,Soyad,Adres, Sehir, "+ "DogumTarihi from Personel Where Numara=@No"; comm.Parameters.Add("@No", ID); System.Data.OleDb.OleDbDataReader dr; try { conn.Open(); dr = comm.ExecuteReader(); if(dr.Read()) { txtAd.Text = dr.GetString(0); txtSoyad.Text = dr.GetString(1); txtAdres.Text = dr.GetString(2); txtSehir.Text = dr.GetString(3); txtDTarihi.Text = dr.GetString(4); } } catch(Exception ex) { MessageBox.Show(ex.Message); } finally { dr.Close(); conn.Close(); } }

Form Kontrolleri ilemleri


6. Formdaki TextBox kontrollerinin deerlerini sfrlayan kodlar yazn.
public void Temizle() {

Konu: 4

107

Control kontrol = new Control(); foreach(TextBox kontrol in this.Controls) { kontrol.Text=""; } txtAd.Focus(); }

7. Kayt eklenmeden nce, tm deerlerin doru girilmesini kontrol eden kodlar yazn.
public bool Kontrol() { if(txtAd.Text == "") { MessageBox.Show("Ad Giriniz"); txtAd.Focus(); return false; } else if(txtSoyad.Text == "") { MessageBox.Show("Soyad Giriniz"); txtSoyad.Focus(); return false; } else if(txtDTarihi.Text = "") { MessageBox.Show("Doum Tarihini Giriniz"); txtDTarihi.Focus(); return false; } else if(txtAdres.Text = "") { MessageBox.Show("Adresi Giriniz"); txtAdres.Focus(); return false; } else if(txtSehir.Text = "") { MessageBox.Show("ehiri Giriniz"); txtSehir.Focus(); return false; } else { return true; } }

Yordamlarn Formda kullanlmas


8. btnKaydet dmesinin Click olayna Kaydet ve Kontrol yordamlarn kullanarak kaydetme ilemlerini yazn.
private void btnKaydet_Click(System.Object sender, System.EventArgs e) { if(Kontrol == true)

108 {

Modl 4: Connected Veritaban lemleri

Kaydet(); btnYeni.Enabled = true; btnKaydet.Enabled = false; btnIptal.Enabled = false; IDDoldur(); cbNo.SelectedIndex = cbNo.Items.Count - 1; } }

9. btnYeni dmesinin Click olaynda formu, yeni kayt eklemek iin hazrlayan Temizle yordamn kullann.
private void btnYeni_Click(System.Object sender, System.EventArgs e) { Temizle(); btnYeni.Enabled = false; btnKaydet.Enabled = true; btnIptal.Enabled = true; cbNo.SelectedIndex = - 1; }

10. btnIptal dmesine basld zaman kontrolleri temizleyen ve ilk kayta dnen kodlar yazn.
private void btnIptal_Click(System.Object sender, System.EventArgs e) { Temizle(); btnYeni.Enabled = true; btnKaydet.Enabled = false; btnIptal.Enabled = false; cbNo.SelectedIndex = 0; }

11. btnSil dmesine basld zaman kayt silme ilemleri gerekletiren yordam kullann.
private void btnSil_Click(System.Object sender, System.EventArgs e) { if(MessageBox.Show[cbNo.SelectedItem + " nolu kayd silmek istiyor musunuz?", this.Text, MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2] == DialogResult.Yes) { Sil(cbNo.SelectedItem); IDDoldur(); cbNo.SelectedIndex = cbNo.Items.Count - 1; } }

12. Formun Load olaynda ComboBox kontroln personel numaralar ile dolduran yordam kullann.
private void frmPersonel_Load(System.Object sender, System.EventArgs e) { IDDoldur(); cbNo.SelectedIndex = 0; } 13. ComboBox kontrolnde bir personel numaras seildiinde, bu

personele ait bilgileri forma ykleyen kodlar yazn.

Konu: 4

109

private void cbNo_SelectedIndexChanged(System.Object sender, System.EventArgs e) { IDyeGoreFormDoldur(cbNo.SelectedItem); }

Modul 6:

Modl 5: Balantsz (Disconnected) Veritaban lemleri

Balantsz veri ortamlar, uygulamalarn veritabanndan bamsz alt ortamlardr. Veritaban sunucusunun uzak olmas, veri ilemlerinin uzun

Konu: 5

111

srmesi ve mobil alma ihtiyac, balantsz veri ortamlarna olan ihtiyac artrmtr. Bu modl tamamlandktan sonra: Balantsz veritaban mimarisini renecek,
DataAdapter nesnesinin yapsn tanyacak DataSet nesne modelini renecek DataTable nesne modelini renecek

Veri arama ve sralama ilemlerini reneceksiniz.

Konu 1: Disconnected Uygulamalar in Veritaban Mimarisi

Balantsz veri ortam, uygulamann veri kaynana srekli bal kalmad veri ortamdr. Bu modelde, veri kaynann istenen blm ekilerek bellee alnr. Veri zerinde gerekli ilemler gerekletirildikten sonra, veri kaynana aktarlarak gncelleme yaplr.

112

Modl 5: Disconnected Veritaban lemleri

Balantsz veri ortamlar ierisinde kullanlan snflar Tablo 5.1 de belirtilmitir.


Snf
XXXDataAdapter

Aklama
Connection, Command ve DataReader snflarn kullanarak, verilerin DataSete doldurulmasn ve DataSet de yaplan deiikliklerin veri tabanna kaydedilmesini salar. rnein SqlDataAdapter snf SQL Server ile DataSet arasndaki etkileimi salar. Balant amak ve kapatmak iin kullanlan nesnedir. rnein SqlConnection SQL Server a balant salar. Veritaban zerinde Stored Procedure (Sakl Yordam) veya SQL Cmleleri altrmak iin kullanlan nesnedir. rnein SqlCommand SQL Server zerinde Stored Procedure veya SQL Cmleleri altrmay salar. Veritabanndan sadece okunur ve ileri hareketli kaytlar ekmek iin kullanlr. rnein SqlDataReader ile SQL Server zerinden kaytlar okunur. Kaytlar SqlCommand nesnesinin ExecuteReader metodu ile DataReadera aktarlr.

XXXConnection XXXCommand

XXXDataReader

Tablo 5.1. Balantsz Veri Ortam Snflar

Konu: 5

113

Konu 2: DataSet ve DataTable Oluturmak

Veri kaynandan DataAdapter ile ekilen verilerin, ekirdek bellee atlan kopyas DataSet ierisinde saklanr. DataSet ile bu veriler zerinde gerekli dzenlemeler yapldktan sonra, veriler ayn DataAdapter ile veritabanna aktarlr. DataSetin temel zellikleri aada listelenmitir: Veri salayc trnden bamsz alr: DataSet tm verisalayclar ile kullanlabilir. Tamamen trden bamsz alr. Srekli evrimddr: DataAdapter nesnesi ile veriler DataSet ierisine aktarlr ve balant kapatlr. Balant kesildikten sonra yaplan tm deiiklikler DataSet ierisine kaydedilir. Bu durum uygulamann evrimd almasn salar. Deiikliklerin kaydn tutar: DataSet ierisinde yaplan tm deiiklikler, DataAdapter nesnesi ile veri kaynana aktarlr. Birden fazla tablo bulundurabilir: likisel veri tabanlarnda olduu gibi, birden fazla tablo ve ilikileri hafzada tutmann tek yolu DataSet kullanmaktr.

114

Modl 5: Disconnected Veritaban lemleri

DataSet Nesne Modeli

DataSet, Sanal bir veritaban yapsn temsil eder. DataTable nesnelerinden oluur. Bu tablolar arasnda ilikiler tanmlanabilir. DataSeti oluturan nesneler: DataTable, DataColumn, DataRow, DataRelation nesneleridir.

DataTable

Konu: 5

115

Veritaban tablolarn temsil eder. DataColumn, DataRow nesnelerinden oluur. Primary Key alan tanmlanabilir. DataColumn DataTable nesnelerini oluturmak iin gereken kolonlar temsil eder.

DataRow
DataTable nesneleri iin veri satrlarn temsil eder.

DataRelationship Tablolar arasndaki ilikileri temsil eder. DataView DataTable nesneleri zerinde filtreleme, veri gncellemeleri ilemleri yapmak iin kullanlr.

rnekte ds isminde yeni bir DataSet, New anahtar szc tanmlanmaktadr. Tanmlamada DataSete parametre olarak girilen YeniDataSet deeri, DataSet nesnesinin DataSetName argmandr. Eer hibir isim verilmezse varsaylan olarak NewDataSet ismi verilir.
DataSet ds = new DataSet(Yeni DataSet);

DataSet, dier bir DataSet nesnesinden kopyalanarak oluturulabilir. DataSet kopyalamak iin iki yntem kullanlr. Birinci yntem Copy metodu ile dier bir DataSet nesnesinin, veri ve ilikileri (eme bilgileri) kopyalanarak yeni bir DataSet oluturmak. kinci yntem Clone metodu ile dier bir DataSet nesnesinin ema bilgilerini kopyalanarak, yeni bir DataSet oluturmak. Bu yntem ablon kopyalamak iin kullanlr.

116

Modl 5: Disconnected Veritaban lemleri

rnekte ds ismindeki DataSet nesnesinin tm tablo, iliki ve verileri dsCopy ismindeki DatasSet nesnesinin ierisine aktarlmtr
DataSet dsCopy; dsCopy = ds.Copy();

rnekte ds ismindeki DataSet nesnesinin tm tablo ve ilikileri, dsClone ismindeki DataSet nesnesinin ierisine aktarlmtr.
DataSet dsClone; dsClone = cd.Clone();

rnekte Stok veritabann ierisindeki tm kitaplar, DataAdapter nesnesi ile DataSete aktarlmtr.
OleDbConnection conn = new OleDbConnection ("provider= + microsoft.jet.oledb.4.0; data source=../stok.mdb"); OleDBDataAdapter da = new OleDbDataAdapter("select * from + kitaplar", conn); DataSet ds = new DataSet(Set); Da.Fill(ds,Kitaplar) DataGrig1.DataSource = ds.Tables[Kitaplar];

DataSet snfnn Tables koleksiyonu ile DataSet ierisine bir veya birden ok DataTable eklenebilir. DataSet snfnn Relations koleksiyonu ile DataSet ierisine bir veya birden ok DataRelation eklenebilir. rnekte dtKitaplar isminde yeni bir DataTable oluturulmaktadr.

DataTable dtKitaplar = new DataTable(Kitaplar);

Oluturulan tabloyu DataSet ierisine eklemek iin DataSet nesnesinin Tables koleksiyonu kullanlr.
Ds.Tables.Add(dtKitaplar);

DataTable nesnesinin ierisine kolon eklenebilir. rnekte dtKitaplar ismindeki DataTable nesnesinin ierisine, yeniId isminde yeni bir kolon eklenmektedir. Yeni kolon eklemek iin, DataTable nesnesinin Columns koleksiyonu kullanlr.
DataColumn colKitapId = dtKitaplar.Columns.Add("yeniId");

Konu: 5

117

rnekte DataTable nesnesi iin Ucret, KDV ve Tutar isminde 3 adet kolon oluturulmutur. rnekteki KDV kolonu, Ucret kolonun %17 deeri zerinden hesaplanr. Tutar kolonu ise Ucret ve KDV deerinin toplam ile hesaplanr.
DataColumn colUcret DataColumn colKdv = colKdv.Expression = DataColumn colTutar colTutar.Expression = new DataColumn("Ucret"); new DataColumn("KDV"); "Ucret * 0.17"; = new DataColumn("Tutar"); = "Ucret + KDV";

Konu 3 : DataAdapter ile kaytlar Datasete doldurmak

DataAdapter snf, DataSet ile veri kayna arasnda kpr oluturur. Veri kaynana yaplan balant ile verilerin DataSet nesnesine aktarlmasn salar. DataAdapter ayrca DataSet zerinde yaplan deiikliklerin veri kaynana aktarlmasn salar. rnekte OleDbDataAdapter ile ekilen veriler, ds ismindeki DataSet nesnesine aktarlr. DataSet ierisindeki veriler, DataGrid ile ekranda gsterilir.
OleDbConnection conn = new OleDbConnection ("provider = " + "microsoft.jet.oledb.4.0; data source=C:\Stok.mdb"); OleDbDataAdapter da = new OleDbDataAdapter("select * from kitaplar", conn); DataSet ds = new DataSet(); da.Fill(ds,Kitaplar);

118

Modl 5: Disconnected Veritaban lemleri

DataGrid1.DataSource= ds.Tables[Kitaplar];

DataAdapter ile veri ekmek iin DataAdapter nesnesinin balang fonksiyonuna, SELECT sorgu ve balant nesnesi parametre olarak gnderilir.
OleDbDataAdapter da = new OleDbDataAdapter("select * from " + "kitaplar", conn);

DataAdapter ile veri ekmenin dier bir yntemi SELECT sorgu ile Command nesnesi oluturmaktr. Oluturulan Command, DataAdapter nesnesinin SelectCommand zelliine atanr. rnekte Command ile DataAdapter nesnesinin beraber kullanm gsterilmektedir.
OleDbConnection conn As = new OleDbConnection ("provider = " + "microsoft.jet.oledb.4.0; data source=C:\Stok.mdb"); OleDbCommand cmd = new OleDbCommand("select * from kitaplar"); cmd.CommandType = CommandType.Text; cmd.Connection = conn; OleDbDataAdapter da = new OleDbDataAdapter(cmd); DataSet ds = new DataSet(); da.Fill(ds, "kitaplar"); DataGrid1.DataSource = ds.Tables["kitaplar"];

DataAdapter nesnesinin Fill metodu veri kaynandaki veriyi DataSet veya DataTable nesnesini doldurmak iin kullanlr. rnekte da isimli DataAdapter ile ekilen veriler, Kitaplar tablosuna doldurulmaktadr.
da.Fill(ds, "kitaplar");

Bir DataSet iinde birden fazla tablo bulunabilir. Bu durumda DataAdapter nesnesinin Fill metodunu birden ok kez arlr. Fill metodu ile belirli kayt aral DataSet ierisine aktarlabilir. rnekte da isimli DataAdapter ile ekilen ilk alt kayt, Kitaplar tablosuna aktarlr.
da.Fill(ds, 0, 5, "kitaplar");

DataSet zerinde yaplan deiiklikleri veri kaynana aktarmak iin, DataAdapter snfnn Update metodu kullanlr. DataAdapter nesnesinin DeleteCommand, UpdateCommand ve InsertCommand nesneleri iinde tutulan sorgular ile gncelleme ilemi gerekletirilir. rnekte Sipari tablosundaki tm deiiklikler veri kaynana aktarlmaktadr.
da.Update(ds, "siparisler");

Konu: 5

119

Konu4: DataSet nesnesini Kontrollere balamak

DataSet nesnesi ile veritabannn bir kopyas ekirdek bellee atldktan sonra, bu veriler eitli Windows Kontroller ile gsterilebilir veya deitirilebilir. Bu kontrollerin en nemlisi DataGrid bileenidir.

120

Modl 5: Disconnected Veritaban lemleri

DataSet erisideki Veriyi Windows Kontrollerine Balamak

DataSet nesnesin ierdii veri, Windows Form ierisindeki herhangi bir kontrolun herhangi bir zelliine balanabilir. rnein DataSet ierisindeki bir tablonun ilk satr ve stunundaki veri, TextBox kontrolunun Text zelliine balanabilir. DataSet ierisindeki veriyi Windows kontrollere balamann iki yntemi vardr. Bu yntemler basit (simple data binding) ve karmak (complex data binding) veri balama olarak adlandrlr. Basit veri balama; DataSet ierisindeki bir veri elemann (DataTable kolonunu) Windows kontrolere balama ilemidir. TextBox, Label, RadioButton gibi kontroller bu gruba girer. rnein DataSet tablosundaki herhangi bir kolonu TextBox, Label gibi Windows kontrollere balamak. Karmak veri balama; DataSet iersindeki birden fazla veri elamann Windows kontrollere balama ilemidir. DataGrid, ListBox, ErrorProvider gibi kontroller bu gruba girer. rnekte Dataset ierisindeki kitap_baslik kolonun deeri, TextBox ve Label kontrollerin Text zelliine aktarlr.

Konu: 5

121 TextBox1.Text = ds.Tables["kitaplar"].Rows[2].Item["kitap_baslik"]; Label1.Text = ds.Tables["kitaplar"].Rows[2].Item["kitap_baslik"];

ComboBox ve ListBox gibi kontrollere veri balamak iin DataSource ve DataMember zellii kullanlr. DataSouce zellii DataSet ierisindeki tablo ismini DisplayMember ise Tablo kolonunu belirtir. rnekte ComboBox ve ListBox kontrolunun DataSource ve DisplayMember zellikleri kullanlmaktadr.
ComboBox1.DataSource = ds.Tables["kitaplar"]; ComboBox1.DisplayMember = ds.Tables["kitaplar"].Columns["kitap_baslik"].ToString(); ListBox1.DataSource = ds.Tables["kitaplar"]; ListBox1.DisplayMember = ds.Tables["kitaplar"].Columns["kitap_baslik"].ToString();

TreeView kontrolne veri balamak iin, TreeNode nesnesinin Text zellii kullanlr.
TreeView1.Nodes[0].Text = ds.Tables["kitaplar"].Rows[1].Item["kitap_baslik"];

rnekte DataSet nesnesinden gelen veriler ListView ve CheckedListBox kontrollerine aktarlmtr.


int count ; Count = ds.Tables["kitaplar"].Columns.Count(); for (int i=0;i< count;i++) { ListView1.Items.Add(ds.Tables["kitaplar"].Rows[i][0]. ToString()); } for (int i=0;i<count;i++) { CheckedListBox1.Items.Add(ds.Tables["kitaplar"].Rows[i][0]. ToString()); }

122

Modl 5: Disconnected Veritaban lemleri

DataSet erisindeki Veriyi DataGride Balamak

DataGrid, veriyi satrlar ve stunlar halinde grntler. DataGrid ile ilikisiz DataSet Tablolar kolay bir ekilde grntlenebilir. Bu grnt excel tablolarna benzemektedir. DataGrid ilikili DataSet tablolarda gsterebilir. Bu durumda istenilen tabloya DataGrid zerindeki gezinti kprlerinden eriilebilir. DataSet tablolarn DataGrid kontrolune balamak iin iki yntem kullanlr. Bu yntemler grafiksel ve programlama yntemleridir. Grafiksel yntem ile balant salamak iin aadaki admlar takip edin. Ara kutusu zerindeki DataGrid kontrolu form zerine srkleyin. DataGrid kontrolnn DataSource zelliini, nceden oluturulmu DataSet nesnesine balayn. DataGrid kontrolnn DataMember zelliini , DataSet tablolarnn herhangi biri ile balayn.

Programlama yntemi ile balant salamak iin DataGrid nesnesinin DataSource zellii kullanlr. rnekte, DataSet ierisindeki Kitaplar tablosu DataGrid kontrolune balanr.
DataGrid1.DataSource = ds.Tables["Kitaplar"];

Konu: 5

123

Konu : 5 DataTable zerindeki Veriyi Dzenlemek

DataTable, veritaban tablolarn temsil eder. DataColumn, DataRow nesnelerinden oluur. DataSet ierisinde yeni bir DataTable oluturduktan sonra, veritaban zerinde ilem yapyormu gibi veri zerinde dzenlemeler yaplabilir. DataTable, bu evrimd dzenlemeleri kabul veya iptal etme olana sunar. DataTable nesnesine, yeni bir satr eklemek iin DataRow nesnesi kullanlr. DataTable nesnesinin NewRow metodu ile oluturulan yeni satr, DataRow nesnesinin deikenine atanr. rnekte dtKitaplar tablosuna drNew isminde yeni bir kolon eklenmitir.
DataRow drNew = dtKitaplar.NewRow();

DataRow nesnesi tanmlandktan sonra, index veya kolon isimleri zerinden kolonlara deer girilir. rnekte birinci kolona kitabn ISBN numaras, ikinci kolona ise yazar adi bilgileri girilmitir.
drNew[0] = 975-8725-14-9; drNew[1] = Tamer ahiner;

veya
drNew[kitap_ISBN] = 975-8725-14-9;

124 drNew[kitap_yazar] = Tamer ahiner;

Modl 5: Disconnected Veritaban lemleri

Kolanlara bilgi girildikten sonra, tanmlanan DataRow nesnesi DataTable nesnesinin Rows koleksiyonuna eklenir. rnekte drNew nesnesi, dtKitaplar nesnesinin Rows koleksiyonuna eklenir.
dtKitaplar.Rows.Add(drNew);

DataTable nesnesine DataRow kullanmadan kayt eklenebilir. rnekte dtKitaplar ismindeki DataTable nesnesine bu yntem ile kayt eklenmitir.
dtKitaplar.Rows.Add(New Object[] {975-8725-14-9, Tamer ahiner});

DataRow ile DataTable ierisindeki kaytlar deitirilebilir. DataRow nesnesi ile satr dzenleme ilemleri iin aadaki metodlar kullanlr. BeginEdit EndEdit CancelEdit

BeginEdit, veriyi dzenlerken oluabilecek olaylar askya alr. Veriyi

dzenlemek iin Items koleksiyonu kullanlr. EndEdit metodu ile, askya alnan olaylar yeniden aktif edilir. CancelEdit metodu ile deiikliklerden ve askya alnan olaylardan vazgeilir. rnekte DataTable ierisindeki drdnc kayt iin gncelleme ilemi yaplmtr.

Konu: 5

125 DataRow drNew = dtKitaplar.Rows[3]; drNew.BeginEdit(); drNew["kitap_baslik"] = "yeni hayat"; drNew["kitap_yazar"] = "can dndar"; drNew.EndEdit();

DataRow ile DataTable ierisindeki belirli bir satr silinebilir. rnekte DataTable ierisindeki drdnc kayt silinmitir.
DataRow drSil = dtKitaplar.Rows[3]; dtKitaplar.Rows.Remove(drSil);

DataRow nesnesinin Delete metodu kullanlarak aktif kayt silinebilir.


DrSil.Delete();

Windows Form ile Kayt zerinde Hareket Salamak

Verileri dzenlemeden nce, hangi veri zerinde dzenleme yaplacann tespit edilmesi gerekir. Windows Form uygulamalar, veri iinde hareket salanan nesneler ile verilerin bal olduu katman ynetebilir. DataSet, DataTable veya DataView ile kaytlar zerinde hareket salayan nesneye CurrencyManager denir. DataSet iinde oklu veri kayna CurrencyManager nesnesi ierebilir. tutulabildii iin, birden fazla

126

Modl 5: Disconnected Veritaban lemleri

Belirli bir satra gidebilmek iin, CurrencyManager nesnesinin Position zellii kullanlr. rnekte dtKitaplar tablosunun kaytlar arasnad ilk, son, nceki ve sonraki satra hareket salanmtr.
CurrencyManager cmKitaplar = new CurrencyManager(); private void Form1_Load() { txtKitapAdi.DataBindings.Add("Text", dtKitaplar, _ "kitap_baslik"); cmKitaplar = (CurrencyManager)BindingContext[dtKitaplar]; cmKitaplar.Position = 0; } private void btnMoveNext() { If (cmKitaplar.Position != cmKitaplar.Count) { cmKitaplar.Position += 1; } } private void btnMoveFirst() { cmKitaplar.Position = 0; } private void btnMovePrevious() { If (cmKitaplar.Position != 0) { cmKitaplar.Position -= 1; } } private void btnMoveLast() { cmKitaplar.Position = cmKitaplar.Count-1; }

Konu: 5

127

Lab 1: Balantsz Veritaban lemleri

Bu uygulamada, veritabanndaki Personel tablosu zerinde kayt ilemleri gerekletirilir. Personel kaytlarnn okunup DataGrid kontrolune doldurulmas, kaytlar arasnda gezinti, yeni personel kaydnn eklenmesi, bir personelin bilgilerinin gncellenmesi veya silinmesi ilemleri yaplr. Bu lab tamamlandktan sonra: Access veritabanna balant oluturabilecek, DataGrid kontrolne kayt doldurabilecek, DataGrid kontroln biimlendirebilecek, Kaytlar arasnda dolaabilecek, Kayt ekleme, gncelleme ve silme ilemlerini DataSet ierisinde gerekletirebilecek. DataSet ierisindeki deiiklikleri veritabanna kaydedebileceksiniz.

Veritabannn oluturulmas
Bu uygulamada kullanlacak Personel tablosu iin bir veritaban oluturulmas gerekir. 3. Microsoft Access ile kisi isminde bir veritaban oluturun. 4. Veritabanna Personel isminde bir tablo ekleyin ve tabloda belirtilen kolonlar ekleyin.

128 Alan Ad Veri Tr AutoNumber Text Text Date/Time Text Text

Modl 5: Disconnected Veritaban lemleri

Numara Ad Soyad DogumTarihi Adres Sehir

Kontrollerin eklenmesi
Baglantsz_Personel isminde yeni bir Windows projesi an. Form zerine, tablodaki kontrolleri ekleyin belirtilen zelliklerini ayarlayn.
Kontrol Kontrol smi DataGrid dgPersonel TextBox txtAd TextBox txtSoyad TextBox txtDogumTarihi TextBox txtSehir TextBox txtAdres zellik ReadOnly BorderStyle BorderStyle BorderStyle BorderStyle BorderStyle Multiline Button btnYeni Button btnIptal Button btnKaydet Button btnSil Button btnVDoldur Button btnVKaydet Button btnCikis ScrollBars Text Text Text Text Text Text Text Deer True FixedSingle FixedSingle FixedSingle FixedSingle FixedSingle True Vertical

Yeni ptal Kaydet Sil Veritabanindan Getir Veritabanina Kaydet ks

Konu: 5

129

Balant Cmlesinin oluturulmas


Personel tablosu zerinde ilem yaplmas iin veritaban balantsnn kurulmas gerekir. Bu balant iin gereken Connection String cmlesini Server Explorer kullanarak oluturun. Baglantsz_Personel uygulamas iin yeni balant oluturmak. 1. Server Explorer penceresi zerinde farenin sa butonunu tklayn. Alan menden Add Connection komutunu tklayn. 2. Alan Data Link Properties penceresinin Provider sekmesini tklayn. 3. Provider sekmesinden Microsoft.Jet.OLEDB.4.0 Provider i seerek Next butonunu tklayn.

130

Modl 5: Disconnected Veritaban lemleri

4. Alan Connection sekmesinin grntsn resimdeki gibi dzenleyerek OK butonunu tklayn.

Balantnn Oluturulmas
Kisi veritabanna balant salamak iin OleDbConnection oluturun. 1. Ara kutusu zerindeki OleDbConnection kontrolu form zerine srkleyin. 2. OleDbConnection kontrolunun ConnectionString zellii iin oluturduunuz balant cmlesini sein.

DataAdapter nesnesinin Oluturulmas


Personel tablosunu DataSet ierisine aktarmak iin OleDbDataAdapter oluturun. 1. Ara kutusu zerindeki OleDbDataAdapter kontrolu form zerine srkleyin. 2. Karnza kan Data Adapter Configuration Wizard penceresi zerinde Next butonunu tklayarak, bir sonraki adma gein. 3. Choose Your Data Connection penceresi zerinde, oluturduunuz balant cmlesini sein ve Next butonunu tklayarak, bir sonraki adma gein. 4. Choose a Query Type penceresinden Use Sql statements seeneini sein ve Next butonunu tklayarak, bir sonraki adma gein. 5. Generate the Sql statements penceresindeki metin kutusuna SELECT
Numara, Ad, Soyad, DogumTarihi, Adres, Sehir FROM Personel

yazn ve Next butonunu tklayarak, bir sonraki adma gein. 6. Finish butonunu tklayarak Data Adapter Configuration Wizard sihirbazn sonlandrn.

Konu: 5

131

DataSet nesnesinin Oluturulmas


Personel kaytlar ile evrimd almak iin DataSet oluturun. 1. da zerinde farenin sa butonunu tklayn. 2. Alan ksayol mensnden Generate DataSet mensn tklayn. 3. Choose a Dataset mensnden New seeneini sein ve metin kutusuna ds yazn. 4. Ok butonunu tklayn

Dataset ierisindeki verinin DataGrid kontrolune balanmas


Personel tablosunu DataGrid kontrolune balayn. 1. DgPersonel isimli DataGrid nesnesinin DataSource zelliine ds1 isimli DataSet nesnesini sein 2. DgPersonel isimli DataGrid nesnesinin DataMember zelliine Personel tablosunu sein.

Dataset ierisindeki verinin TextBox kontrollerine balanmas


Personel tablo ierisindeki Ad, Soyad, DTarihi, Adres ve Sehir kolonlar srayla txtAd, txtSoyad, txtDogumTarihi, txtAdres ve txtSehir metin kutularn balayn. 1. txtAd metin kutusunun DataBindings koleksiyonun Text zelliine Ad kolonunu sein. 2. txtSoyad, txtDogumTarihi, txtAdres ve txtSehir metin kutularn srayla Soyad, DTarihi, Adres ve Sehir kolonlarna balayn.

Kodlarn Yazlmas
14. btnDDoldur kontrolunun Click olayna kaytlar DataGrid kontrolne dolduran kodlar yazn.
try { conn.Open(); da.Fill(Ds1, "Personel"); } catch (Exception ex) { MessageBox.Show(ex.Message.ToString()); } finally { conn.Close(); }

15. btnDKaydet kontrolunun Click olayna. DataSet kontrolundeki tm deiiklikleri veritabanna kaydeden kodu yazn

132 try { conn.Open(); da.Update(Ds1, "Personel");

Modl 5: Disconnected Veritaban lemleri

} catch (Exception ex) { MessageBox.Show(ex.Message.ToString()); } finally { conn.Close(); }

16. btnYeni kontrolunun Click olayna. DataSet tablosu iin yeni satr oluturan kodu yazn.
BindingContext(Ds1, "Personel").EndCurrentEdit(); BindingContext(Ds1, "Personel").AddNew();

17. btnIptal kontrolunun Click olayna. DataSet tablosu iinde eklenen yeni satr iptal eden kodu yazn.
BindingContext(Ds1, "Personel").CancelCurrentEdit();

18. btnKaydet kontrolunun Click olayna. DataSet tablosuna yeni kayt ekleyen kodu yazn.
BindingContext(Ds1, "Personel").EndCurrentEdit();

19. btnSil kontrolunun Click olayna. DataSet tablosundan aktif kayd silen kodu yazn.
BindingContext(Ds1, "Personel").RemoveAt(BindingContext(Ds1, "Personel").Position);

20. btnIlk kontrolunun Click olayna. ilk kayda giden kodu yazn.
BindingContext(Ds1, "Personel").Position = 0;

21. btnOnceki kontrolunun Click olayna. nceki kayda giden kodu yazn.
BindingContext(Ds1, "Personel").Position -= 1;

22. btnSonraki kontrolunun Click olayna. sonraki kayda giden kodu yazn.
BindingContext(Ds1, "Personel").Position += 1;

23. btnSon kontrolunun Click olayna. son kayda giden kodu yazn.
BindingContext(Ds1, "Personel").Position = BindingContext(Ds1, "Personel").Count-1;

Konu: 5

133

Konu 6: Veri Arama ve Sralama

DataSet ierisinde veri arama ve sralama ilemleri yapmak iin, DataTable ve DataView snfnn arama ve sralama metotlar kullanlr. DataTable snfnn Find metodu, birincil anahtar deerine gre arama yaplmasn salar. Select metodu ise, belirli bir arama kriterine gre arama yaplmasn salar. Select metodu ile geriye satr koleksiyonlar dndrlr. rnekte DataTable snfnn Find metodu ile kitap barkod numarasna gre arama yaplmaktadr. Bu aramann sonucunda yazar ad geriye dndrlr.
OleDbConnection conn = new OleDbConnection("provider =" + microsoft.jet.oledb.4.0;data source=c:\Proje\stok.mdb"); OleDbDataAdapter da = new OleDbDataAdapter("select * from" + "kitaplar", conn); DataTable tbl = new DataTable; da.Fill(tbl); tbl.PrimaryKey = new DataColumn() { tbl.Columns("kitap_ISBN"); } DataRow row = tbl.Rows.Find("975-12-53-3"); if (row==null) { MessageBox.Show("Kayt Bulunamad!"); } else

134 {

Modl 5: Disconnected Veritaban lemleri

MessageBox.Show(row["kitap_yazar"].ToString()); }

rnekte Tbl ismindeki DataTable nesnesine, DataAdapter nesnesinden gelen kaytlar doldurulur. Tbl tablosunun Kitap_ISBN kolonu birincil anahtar olarak atanr. Row isminde yeni bir DataRow tanmlanr. DataTable nesnesinin Find metoduna kitabn barkod numaras girilir ve sonu Row deikenine aktarlr. Son olarak Row deikeni ierisindeki sonu ekrana yazlr. Arama ilemlerinde zel karakter kullanlabilir. rnein yazar ismi E harfi ile balayan kaytlar sorgulamak iin aadaki komut kullanlr.
Select * from kitaplar Where kitap_yazar Like 'E%'

DataTable snfnn Select metodu ile DataRow nesnelerinden oluan bir koleksiyon geri dndrr. Select metodu aslnda orjinal DataSet iindeki satrlar iaret eden iaretiler kmesi olarak da alglanabilir. Veri kopyalama yapmaz ancak deiimleri grntler. rnekte DataTable snfnn Select metodu kullanlarak, kitap fiyat sekizden farkl kaytlar gsterilmektedir. Bu kaytlar Kitap isimlerine gre sralanmtr.
DataRow selRows = tbl.Select("kitap_fiyat != 8", "kitap_baslik ASC", DataViewRowState.CurrentRows); foreach (DataRow row In selRows) { MessageBox.Show("kitap: " + row["kitap_baslik", DataRowVersion.Original].ToString()); }

Select metodunun drt farkl kullanm vardr. Bu kullanmlar aada listelenmitir.


public DataRow() Select() public DataRow() Select(string filterExpression) public DataRow() Select(string filterExpression, string sort) public DataRow() Select(string filterExpression, string sort,recordStates as DataViewRowState)

Select metodunun filterExpression, Sort ve recordStates isminde parametresi bulunur. filterExpression, filtreleme yaplacak ifadeyi ierir.

Konu: 5

135 "Country = Turkey' AND City <> 'Ankara'"

Sort, sonularn hangi srada grntleneceini belirtir.


City DESC

Veriler artan ve azalan olmak zere iki ekilde sralanabilir. Sralanacak kolonun sonuna; azalan sralama iin DESC, artan sralama iin ASC anahtar szc yazlr. recordStates ise, kaytlarn durumuna gre, (Deleted, Modified gibi) seim yapar.

DataView zellik ve Metodlar

ADO.NET ile veri kaynandan alnan bilgileri, sralamak ve filtrelemek iin DataView nesnesi kullanlr. DataView nesnesi ile DataTable nesneleri zerinde arama veya sralama ilemleri yaplabilir. DataView, dier kontrollere balanabilen bir nesnedir. DataView nesnesi oluturmak iin iki yntem kullanlr. Bu yntemler grafiksel ve programlama yntemleridir. Grafiksel yntem ile balant salamak iin aadaki admlar takip edin. Ara kutusu zerindeki DataView kontrolu form zerine srkleyin.

136

Modl 5: Disconnected Veritaban lemleri

DataView kontrolunun Table zellii ile kullanlacak DataTable sein. DataView kontrolnn Sort zelliine, sralanacak kolon bilgilerini girin. DataView kontrolnn RowFilter zelliine arama sorgusunu girin.

Programlama yntemi ile DataView kullanm aada gsterilmektedir. rnekte fiyat 8 YTL den byk kaytlar gsterilmektedir. Bu kaytlar yazar adna gre sralanarak gsterilir.
DataView dvProducts = new DataView(ds.Tables["kitaplar"]); dvProducts.Sort = "kitap_yazar"; dvProducts.RowFilter = "kitap_fiyat > 8"; DataGrid1.DataSource = dvProducts;

DataView snfnn Sort zelliine, sralanacak kolonun ad girilir. RowFilter zelliine ise arama veya filtreleme sorgusu girilir. rnekte Sipari Numaras 10300 den byk kaytlar sorgulanmaktadr
dv.RowFilter = ("SiparisID >10300") ;

rnekte Sipari sorgulanmaktadr.

Tarihi

08/25/1996

tarihinden

byk

olan

kaytlar

dv.RowFilter = ("SiparisTarihi >#08/25/1996#");

rnekte mteri ad V ile balayan kaytlar sorgulanmaktadr.

Konu: 5

137 dv.RowFilter = ("MusteriAdi like 'V*'");

rnekte mteri ad V ile balayan veya Sipari Numaras 10300 den byk kaytlar sorgulanmaktadr.
dv.RowFilter = ("MusteriADi like 'V*' Or SiparisID >10300");

Modl zeti

6. 7. 8. 9. 10.

Balantsz veri ortam hangi .NET nesneleri ile gerekletirilir? DataSet nedir? DataSet hangi nesnelerden oluur? DataTable nedir? Hangi durumlarda kullanlr ? DataColumn nedir? Hangi durumlarda kullanlr ? DataView Nedir ? Hangi durumlarda kullanlr ?

138

Modl 5: Disconnected Veritaban lemleri

Lab 2: oklu Tablolarla almak

Bu uygulamada ayn form zerinde farkl DataTable ile allacaktr. Bu uygulama ile Bolum tablosundaki kaytlarn alan kutuya doldurulmas, seilen blme gre rencilerin DataGrid doldurulmas ve seilen renciye gre ders bilgilerinin DataGrid kontrolune doldurulmas gerekletirilir. Form zerindeki filtreleme ilemleri DataView kontrolu ile salanr. Personel kaytlarnn okunup DataGrid kontrolune doldurulmas, kaytlar arasnda gezinti, yeni personel kaydnn eklenmesi, bir personelin bilgilerinin gncellenmesi veya silinmesi ilemleri yaplr Bu lab tamamlandktan sonra: Access veritabanna balant oluturabilecek, DataSet zerinde birden fazla DataTable ile alabilecek, DataView ile filtreleme ilemleri yapabilecek, DataGrid kontrolne kayt doldurabileceksiniz.

Veritabannn projeye eklenmesi


Bu uygulamada kullanlacak Course veritaban oluturun. 1. Microsoft Access ile Dershane isminde bir veritaban oluturun. 2. Veritabann tablolarn aadaki diyagrama gre oluturun.

Konu: 5

139

Kontrollerin eklenmesi
Dershane isminde yeni bir Windows projesi an. Form zerine, tablodaki kontrolleri ekleyin belirtilen zelliklerini ayarlayn.
Kontrol Kontrol smi DataGrid dgOgrenci DataGrid dgKurs ComboBox cbBolum Button btnListele Label Label1 zellik ReadOnly ReadOnly DropDownStyle Text Text Deer True True DropDownList

Listele Bolm

Balant Cmlesinin oluturulmas


Dershane veritaban zerinde ilem yaplmas iin balant kurulmas gerekir. Bu balant iin gerekli Connection String ifadesini Server Explorer kullanarak oluturun.

140

Modl 5: Disconnected Veritaban lemleri

Dershane uygulamas iin yeni balant oluturmak. 1. Server Explorer penceresi zerinde farenin sa butonunu tklayn. Alan menden Add Connection komutunu tklayn. 2. Alan Data Link Properties penceresinin Provider sekmesini tklayn. 3. Provider sekmesinden Microsoft.Jet.OLEDB.4.0 Provider i seerek Next butonunu tklayn.

4. Alan Connection sekmesinin grntsn resimdeki gibi dzenleyerek OK butonunu tklayn.

Balantnn Oluturulmas
Dershane veritabanna balant salamak iin OleDbConnection oluturun. 3. Ara kutusu zerindeki OleDbConnection kontrolu form zerine srkleyin. 4. OleDbConnection kontrolunun ConnectionString zellii iin oluturduunuz balant cmlesini sein.

DataAdapter nesnesinin Oluturulmas


Bolum tablosunu DataSet ierisine aktarmak iin OleDbDataAdapter oluturun. 1. Ara kutusu zerindeki OleDbDataAdapter kontrolu form zerine srkleyin. 2. Karnza kan Data Adapter Configuration Wizard penceresi zerinde Next butonunu tklayarak, bir sonraki adma gein. 3. Choose Your Data Connection penceresi zerinde, oluturduunuz balant cmlesini sein ve Next butonunu tklayarak, bir sonraki adma gein. 4. Choose a Query Type penceresinden Use Sql statements seeneini sein ve Next butonunu tklayarak, bir sonraki adma gein. 5. Generate the Sql statements penceresindeki metin kutusuna SELECT Bolum, BolumID FROM Bolum yazn ve Next butonunu tklayarak, bir sonraki adma gein.

Konu: 5

141

6. Finish butonunu tklayarak Data Adapter Configuration Wizard sihirbazn sonlandrn. 7. Eklediiniz OleDbDataAdapter kontrolunun ismini daBolum olarak deitirin. Ogrenci tablosunu DataSet ierisine aktarmak iin OleDbDataAdapter oluturun. 1. Ara kutusu zerindeki OleDbDataAdapter kontrolu form zerine srkleyin. 2. Karnza kan Data Adapter Configuration Wizard penceresi zerinde Next butonunu tklayarak, bir sonraki adma gein. 3. Choose Your Data Connection penceresi zerinde, oluturduunuz balant cmlesini sein ve Next butonunu tklayarak, bir sonraki adma gein. 4. Choose a Query Type penceresinden Use Sql statements seeneini sein ve Next butonunu tklayarak, bir sonraki adma gein. 5. Generate the Sql statements penceresindeki metin kutusuna 6.
SELECT OgrenciID, Ad, Soyad, Adres, BolumID, Sehir FROM Ogrenci yazn ve Next butonunu tklayarak, bir sonraki adma gein. Finish butonunu tklayarak Data Adapter Configuration Wizard

sihirbazn sonlandrn. 7. Eklediiniz OleDbDataAdapter kontrolunun ismini daOgrenci olarak deitirin. Kurs ve OgrenciDersKayit tablolarn DataSet ierisine aktarmak iin OleDbDataAdapter oluturun. 1. Ara kutusu zerindeki OleDbDataAdapter kontrolu form zerine srkleyin. 2. Karnza kan Data Adapter Configuration Wizard penceresi zerinde Next butonunu tklayarak, bir sonraki adma gein. 3. Choose Your Data Connection penceresi zerinde, oluturduunuz balant cmlesini sein ve Next butonunu tklayarak, bir sonraki adma gein. 4. Choose a Query Type penceresinden Use Sql statements seeneini sein ve Next butonunu tklayarak, bir sonraki adma gein. 5. Generate the Sql statements penceresindeki metin kutusuna
SELECT OgrenciDersKayit.OgrenciID, Kurs.KursAdi, OgrenciDersKayit.KursBasTarihi, Kurs.Kredi, Kurs.KursNo FROM (Kurs INNER JOIN OgrenciDersKayit ON Kurs.KursNo = OgrenciDersKayit.KursNo)yazn ve Next butonunu tklayarak, bir

sonraki adma gein. 6. Finish butonunu tklayarak Data Adapter Configuration Wizard sihirbazn sonlandrn. 7. Eklediiniz OleDbDataAdapter kontrolunun ismini daKurs olarak deitirin.

DataSet nesnesinin Oluturulmas


Bolum, renci ve Kurs tablolar ile evrimd almak iin DataSet oluturun. 1. daBolum zerinde farenin sa butonunu tklayn. 2. Alan ksayol mensnden Generate DataSet mensn tklayn. 3. Choose a Dataset mensnden New seeneini sein ve metin kutusuna ds yazn. 4. Ok butonunu tklayn 5. daOgrenci zerinde farenin sa butonunu tklayn. 6. Alan ksayol mensnden Generate DataSet mensn tklayn 7. Choose a Dataset mensnden Existing seeneini sein ve alan kutudan Dershane.ds seeneini sein.

142

Modl 5: Disconnected Veritaban lemleri

8. 9. 10. 11.

Ok butonunu tklayn. daKurs zerinde farenin sa butonunu tklayn. Alan ksayol mensnden Generate DataSet mensn tklayn Choose a Dataset mensnden Existing seeneini sein ve alan

kutudan Dershane.ds seeneini sein. 12. Ok butonunu tklayn.

DataView nesnesinin Oluturulmas


DataTable nesneleri zerinde filtreleme ilemleri yapmak iin DataView oluturun. Ogrenci tablosunu filtrelemek iin aadaki admlar takip edin. 1. Ara kutusu zerindeki DataView kontrolu form zerine srkleyin. 2. Eklediiniz DataView kontrolunun ismini dvOgrenci olarak deitirin. 3. DataView kontrolunun Table zellii iin Ogrenci tablosunu sein. Kurs tablosunu filtrelemek iin aadaki admlar takip edin. 1. Ara kutusu zerindeki DataView kontrolu form zerine srkleyin. 2. Eklediiniz DataView kontrolunun ismini dvKurs olarak deitirin. 3. DataView kontrolunun Table zellii iin Kurs tablosunu sein

Dataset ierisindeki verinin ComboBox kontrolne balanmas


Bolum tablosunu cbBolum isimli alan kutuya balayn. 4. CbBolum isimli alan kutunun DataSource zelliine Bolum tablosunu sein. 5. CbBolum isimli alan kutunun DisplayMember zelliine Bolum kolonunu sein. 6. CbBolum isimli alan kutunun ValueMember zelliine BolumID kolonunu sein.

Kodlarn Yazlmas
1. Form kontrolunun Load olayna kaytlar DataSet tablolarna dolduran kodlar yazn.
try { Conn.Open(); daBolum.Fill(Ds1, "Bolum"); daOgrenci.Fill(Ds1, "Ogrenci"); daKurs.Fill(Ds1, "Kurs"); } catch (Exception ex) { MessageBox.Show(ex.Message.ToString()); } finally { Conn.Close(); }

Konu: 5

143

2. btnListele kontrolunun Click olayna dvOgrenci kontrolunu DataGrid kontrolune balayan kodu yazn.
dvOgrenci.RowFilter = "BolumID='" + cbBolum.SelectedValue + "'"; dgOgrenci.DataSource = dvOgrenci;

3. dgOgrenci kontrolunun CurrentCellChanged olayna dvKurs kontrolunu DataGrid kontrolune balayan kodu yazn.
dvKurs.RowFilter = "OgrenciID='" + dgOgrenci.Item(dgOgrenci.CurrentRowIndex, 0) + "' "; dgKurs.DataSource = dvKurs;

Modul 6:

Modl 6: ASP .NET GR

ASP.NET, .Web sunucusu zerinde alan ve .NET altyapsn kullanan gelitirme platformudur. ASP.NET Web Form nesneleri, dinamik Web uygulamalar gelitirmeyi kolaylatrr. Bu modl tamamladktan sonra:

Konu: 1

145

ASP.NET alma modelini renecek, ASP.NET teknolojisinin .NET Framework atsndaki yerini renecek, IIS Web sunucusunun yapsn renecek ve ynetebileceksiniz.

Konu 1: ASP .NET Nedir?

ASP.NET teknolojisinden nce, web zerinde dinamik sayfalarla alabilmek iin ASP teknolojisi kullanlrd. ASP teknolojisi, .NET ats ile yeni zelliklere eklendi. ASP.NET ile web uygulamas gelitirmek, Windows Form tabanl uygulama gelitirmeye olduka benzemektedir. Web Server tarafnda alan, HTML kodlarn ve ASP kontrollerini ieren, temel ASP .NET bileenine Web Form denir. Bir web uygulamasnda birden fazla Web Form bulunabilir. ASP.NET sayfalar ile yazlan kodlar sunucu tarafnda alr, istemci tarafnda eitli ilemleri gerekletirebilmek iinse Script ad verilen kodlar kullanlr. Web uygulamasnn gvenlii ise yine sunucu tarafnda alan .NET bileenleri ile salanr. ASP.NET Web Formlar sunucu tarafl kodlar altrd iin, kullanc tarafndaki taraycya ve iletim sistemine bal deildir. Dolaysyla ASP.NET ile yazlan uygulamalar, internet eriimi olan herhangi bir aygtta alabilir.

146

Modl 6: ASP.NET Giri

Konu 2: Asp Tarihesi

HTML(Hyper Text Markup Language) web sayfas hazrlamak iin kullanlan temel web programlama dilidir. HTML, kullanc ile sunucu arasnda dinamik veri alverii salamaz. HTMLin bu an kapatmak iin ilk olarak CGI arabirimi (Common Gateway Interface) gelitirilmitir. CGI arabirimi C dilinde hazrlanan kodlar ile altrlr. CGI arabiriminin dezavantaj, en ufak bir deiiklikte tm kaynak kodun yeniden derlenmesidir. Bu durum zaman ve kaynak kullanmn olumsuz ynde artrr. CGI arabirimininden sonra, sununu ile haberleen ilk dil olan PERL(Practical Extraction and Reporting Language) gelitirilmitir. Bu dil C ve C++ ile yazlan scriptler ierir. PERL, CGIn yeniden derlenme dezavantajn ortadan kaldrmtr. PERL halen aktif olarak kullanlmaktadr. Microsoft NT teknolojisini ile birlikte Internet Information Server (IIS) sunucusunu gelitirmitir. IIS, Windows NT 3.51 ile gelen web sunucusudur. IIS sunucusunun Windows NT 3.51 ile gelen ilk srm CGI arabirimini desteklemektedir. Microsoft IIS sunucusunu gelitirdikten sonra, Internet Server Application Programming Interface (ISAPI) arabirimini gelitirmitir. Microsoft ilk defa ISAPI ile birlikte ASP teknolojisini duyurmutur. ASP teknolojisi, IIS ve ISAPI alt yapsn birletirir. ASP, statik HTML sayfalar ierisinde, dinamik veri alverii iin Microsoft tarafndan gelitirilmitir

Konu: 1

147

Konu 3: ASP .NET Uygulama Mimarisi

ASP.NET, multi-tier (ok katmanl) veri eriim modelini kullanr. Bu veri eriim modeli stemci, ve Veri katmanlarndan oluur.

stemci Katman (Presentation Tier):


Bu katman, kullanc ile dier katmanlarn iletiimini salar. Bu katmanda, kullanc arayzn oluturan bileenler bulunur. Html ve Sunucu kontroller, Web Formlar ve kullanc tanml kontroller (User Controls) bu katman ierisinde yer alr.

katman (Business Logic Tier) :


Bu katman uygulama ile veritaban arasnda iletiimi salar. Bu katmanda i servisleri ve kurallarn ieren bileenler bulunur. XML Web servisleri, COM ve COM+ nesneleri bu katman ierisinde yer alr

Veri Katman (Data Tier) :


Veri katmandr. Bu katmanda veriyi saklamak iin gerekli aralar bulunur. likisel veritabanlar, e-mail alanlar, mesaj kuyruklar ve dizin servisleri bu katman ierisinde yer alr. Web uygulamalarda, ASP.NET ile veri kaynana eriim iin ADO.NET kullanlr.

148

Modl 6: ASP.NET Giri

Konu 4: Asp.Net alma Modeli

ASP.NET, ASP ve dier web platformlarna gre daha yksek performans ile alr. ASP.NET bu performans artn Visual Studio .NET ile gelen, .NET Framework ve CLR (Common Language Runtime) ile salar. ASP.NET platformunu en verimli ekilde kullanmay salayan CLR bileenleri aadaki gibidir. Type Management Memory Management JIT Compilation Exception Manager

Konu: 1

149

Tr Ynetimi (Type Management)

Gvenli olmayan bilgilere ve balatlmam deikenlere izin vermez Bu ynetim, ASP.NETi ASPden tamamen ayran bir zelliktir.

150

Modl 6: ASP.NET Giri

JIT Derleme (JIT Compilation)

ASP.NET Web sayfalar, kullanlan dilin editrnde derlenerek, MSIL (Microsoft Intermediate Language) diline evrilir. MSIL kodu alma zamannda, JIT ile native code ad verilen dile evrilir.

Konu: 1

151

Hafza Ynetimi (Memory Management)

CLR ile hafza ynetimi otomatik olarak ilenir. New anahtar szc ile oluturulan nesneler iin, CLR hafzada yer ayrr. Nesneler referanslarn kaybettikten sonra Garbage Collection mekanizmas ile bellekten silinir.

152

Modl 6: ASP.NET Giri

Exception Yneticisi (Exception Manager)

CLR, ASP.NET uygulamalar iin yapsal hata yakalama altyaps sunar. ASP.NET uygulamalarnda Try...Catch...Finally bloklar kullanlarak ,hata yakalama altyaps kolayca devreye sokulur. ASP.NET uygulamalarn konfigrasyon ayarlar, XML dosyalar ierisinde saklanr. Bu dosyalar kolayca okunur ve yazlabilir. Her web uygulamann kendisine ait bir konfigrasyon dosyas vardr. ASP.NET uygulamalarn konfigrasyon dosyalar web.config dir. Sunucuya ait konfigrasyon ayarlar ise machine.config ierisinde saklanr. Her web sunucusunda tek machine.config dosyas bulunur. Visual Studio .NET, web uygulamalarnn performansn arttrmak ve gvenliini salamak iin pek ok servis sunar.

Konu: 1

153

Bir ASP.NET uygulamasn oluturan bileenler aadaki gibidir. Web Formlar: Web uygulama iin kullanc arayz salar. Code-behind sayfalar: Web Formlarn sunucu tarafnda alan kodlarn ierir. Konfigrasyon dosyalar: Web uygulama ve sunucu ayarlarnn tutulduu XML dosyalardr. Global.asax dosyalar: Web uygulamann genel olaylarn ierir. rnein Web uygulamann balatlmas veya durdurulmas. Global.asax dosyas ASP deki global.asa dosyasnn gelimi versiyonudur.

154

Modl 6: ASP.NET Giri

XML Web Servis balantlar: Web uygulamann, XML web servisi zerinden veri alveriini salar. Veritaban balantlar, Web uygulama ile veri kayna arasnda veri alveriini salar. Caching (n Bellee Alma): Uygulamann ilk alt anda n bellee atlmasn salar. Bu durum uygulamann bellekten almasn salayarak, performans artrr.

Konu: 1

155

Konu 5: ASP .NETin .NET atsndaki Yeri

Microsoft .NET platformu, geni apl web uygulamalar gelitirebilmek iin, gerekli her trl ara ve teknolojiye sahiptir. Dilden bamsz alabilme, eski teknolojiden yeni teknolojilere kolayca gei imkan salar. Tamamen nesne ynelimli programlamay destekleyen bir platform olan Visual Studio .NET, web uygulamalarnda da nesne ynelimli programlama modelini destekler.

ekil 5.1de belirtildii gibi en st katman, kullanc ve program arayzlerini gsterir. Bu arayzler Windows Form, Web Form, Web Service ve uygulama servislerinden oluabilir. Orta katmanda .NET Framework snflar, alt katmanda ise CLR bulunur.

156

Modl 6: ASP.NET Giri

Konu 6: .Net Frameworkun Asp.Netteki Avantajlar

.Net Framework, ASP.NET ile uygulama gelitirmek iin birok avantaj salar. Bu avantajlar aada listelenmitir. Visual Studio .NET ortamnn en byk avantaj, birden fazla dili destekliyor olmasdr. ASP.NET ile gelitirilen uygulamalarda, farkl .NET dilleri bir arada kullanlabilir. rnein VB.NET ile gelitirilen bir uygulama ierisine C# ile yazlan kod bloklar eklenebilir. Visual Studio .NET, web uygulamalarn gvenliini salayan eitli snflar ierir Bu snflar System.Web.Security isim alan ierisinde bulunur. ASP .NET sayfalar ierisinde, HTML ve Kaynak kod birlikte altrlr. Bu durum tasarm ve programlama kolayl salar. ASP.NET ierisinde kodlar satr satr derlenmez. Bunun yerine Web formlar derlenir. Bu durum performansn artn salar Gl hata yakalama aralar sunar. Web servisleri ile birlikte alabilir. ASP.NET, ADO.NET kullanmn kolaylatran web nesneleri ierir.

Konu: 1

157

Konu 7: ASP .NET ile Uygulama Gelitirmek

ASP.NET ile gelitirilen uygulamalarn; Internet, Extranet veya Intranet zerinde alabilmesi iin Web Sunucularna ihtiya duyulur. IIS (Internet Information Services) Windows iletim sistemleri iin gelitirilmi web sunucusudur.

158

Modl 6: ASP.NET Giri

IIS Nedir?

IIS(Internet Information Services), Windows sistemler iin web tabanl uygulama gelitirme ve yaynlama amacyla kullanlan web sunucusudur.

Konu: 1

159

IIS Kurulumu ve Ynetimi

IIS Kurulumu

Web uygulamalar gelitirmek iin IIS 5.0 veya daha st versiyonu kurulmaldr. IIS, Windows 2000 Server iletim sistemi ile varsaylan bileen olarak gelir.

160

Modl 6: ASP.NET Giri

Windows 2000 Professional, Windows XP Professional ve sonraki sistemlerde ise, bu aracn kullanc tarafndan kurulmas gerekir. IIS kurulumu iin aadaki admlar takip edilir. 1- Denetim Masas (Control Panel) penceresinde Program Ekle/Kaldr (Add or Remove Programs) simgesini sein. 2- Alan pencerenin sol panelinden Windows Bileeni Ekle/Kaldr (Add/Remove Windows Components) bileenini sein. 3- Windows Bileeni Ekle/Kaldr penceresinden Internet Information Services (IIS) seerek ykleme ilemini balatn. DKKAT:
Windows NT 4.0 ve Windows XP Home Edition iletim sistemleri ile ASP.NET

uygulamas gelitirilemez.

.NET Framework kurulmadan nce IIS sunucusunun kurulmu olmasna dikkat edilmelidir. Aksi halde ASP.NET dosyalar, ilgili ktphane dosyalar ile dzgn bir ekilde kullanlamaz. Eer IIS kurulmadan .NET Framework kurulmaya allra, uyar mesaj ile karlalr. Bu uyar mesaj nemsenmeden kuruluma devam edilebilir. Framework kurulumu tamamlandktan sonra IIS kurulmaldr. Ancak IIS yklendikten sonra, sistemin ASP.NET sayfalar ile uyum iinde alabilmesi iin Visual Studio .NET komut satrnda aspnet_regiis.exe -I komutu altrlmaldr.

ekil 6.2: IIS Kurulumu

Konu: 1

161

IIS Ynetimi

IIS ynetimi, Internet gerekletirilir.

Information

Services

(IIS)

Manager ile

IIS Manager amak iin aadaki admlar takip edilir. Bilgisayarm(My Computer) ikonuna sa tklanr. Alan ksayol mensnden Ynet (Manage) komutu seilir. Alan Computer Manager penceresinin Services and Applications mensnden Internet Information Services (IIS) seilir. Denetim Masas (Control Panel) ierisinden Administrative Tools simgesi seilir. Alan pencereden Internet Information Services Manager seilir.

IIS ierisinde aadaki altkklasrler bulunur. Application Pools Web Sites Web Service Extensions

162

Modl 6: ASP.NET Giri

Web Sites alan web uygulamalarn lisleler. Web Sites klasr altndaki Default Web Site sekmesi zerinden web sunucu seenekleri ayarlanabilir. Web sunucu zelliklerini deitirmek iin aadaki admlar takip edilir.

1. Internet Information Services zerinden Web Sites seilir. 2. Web Sites zerinde farenin sa tuu tklanr. Alan menden Properties mens seilir.
Home Directory kategorisinde Local Path alannda c:\inetpub\wwwroot

ifadesi, sistemde IIS sunucusunun altraca uygulamalarn yer bilgisini tutar.

Konu: 1

163

Resim 6.3: IIS Ynetimi ASP.NET web uygulamalar wwwroot klasr altnda tutulur. Bu klasr altnda tutulan klasrlerin dierlerinden fark Virtual Directory (sanal klasr) olmalardr. .NET ile alan her yeni web uygulamas iin, wwwroot altnda yeni bir Virtual Directory oluturulur. Visual Studio .NET kullanmadan yeni bir Virtual Directory oluturmak iin Default Web Site zerinde sa tklanr. kan menden New alt mensne iaret edilir ve Virtual Directory seilir. Virtual Directory Creation Wizard ile yeni bir Virtual Directory oluturulur.

164

Modl 6: ASP.NET Giri

.Net Framework Kurulumu

ASP.NET ile uygulama gelitirmek iin .NET Frameworkn kurulu olmas gerekir. Frameworkn,. SDK olarak isimlendirilen 130MBlk full versiyonu ve yalnzca temel bileenleri kapsayan 20MBlk iki farkl kurulum dosyas bulunmaktadr. Framework versiyon ve yamalar (Service Pack) http:// msdn.microsoft.com/netframework/downloads/updates/default.aspx

adresinden cretsiz olarak indirilebilir. Framework kurmak iin aadaki admlar takip edilir. 1. Framework kurulum dosyas altrlr. 2. Alan penceredeki Would you like to Install Mictosoft .NET Framework Package? sorusuna Yes cevab verilir. 3. Next butonlar tklanarak kurulum tamamlanr. PUCU:
.Net Framework kurabilmek iin iletim sisteminin Windows NT tabanl olmas

gerekir. Windows 2000 iletim sisteminde minimum SP2 yaplandrmas gereklidir.

Konu: 1

165

Modl zeti

11. 12. 13. 14.

ASP nedir? ASP alma modelini aklayn. ASP .Net uygulamasn oluturan bileenler nelerdir? IIS nedir?

166

Modl 6: ASP.NET Giri

Lab 1: Web Tabanl Uygulamalarn Yaynlanmas

Bu uygulamada IIS(Internet Information Services) kurulumu reneceksiniz. Aynu zamanda IIS ile web tabanl uygulamalarn yaynlanmasn reneceksiniz.

IIS(Internet Information Services) Kurulmas


1. Denetim Masas (Control Panel) penceresinde Program Ekle/Kaldr (Add or Remove Programs) simgesini sein. 2. Alan pencerenin sol panelinden Windows Bileeni Ekle/Kaldr (Add/Remove Windows Components) bileenini sein. 3. Windows Bileeni Ekle/Kaldr penceresinden Internet Information Services (IIS) sein. 4. Next butonunu tklayarak kurulumu balatn.

Uygulama Yaynlamak
Default.htm ismindeki HTML sayfay IIS zerinden yaynlayn. 3. C:\Inetpub\wwwroot klasorne gidin. 4. wwwroot penceresi ierisinden Dosya mensn tklayn. 5. Dosya mens ierisinden Yeni alt mensn tklayn.

Konu: 1

167

6. Yeni alt mens ierisinden Metin Belgesi komutunu vererek Yeni Metin Belgesi oluturun. 7. Oluturduunuz metin belgesi ierisine aadaki HTML(Hyper Text Markup Language) kodlar ekleyin ve dosyay kaydedin.
<html> <head> <title>HTMLPage1</title> </head> <body> <p>Ho Geldiniz.</p> </body> </html>

8. Metin belgesinin ismini Default.htm olarak deitirin. 9. Intrernet Explorer an ve aadaki adreslerden herhangi birini adres ubuuna yazn. a. http://localhost b. http://127.0.0.1 c. http://MakinaAd d. http://IpNumaras Localhost: Lokal makina ad. 127.0.0.1 : Lokal IP numaras. Makina Ad: A ierisindeki bilgisayar ad. Ip Numaras: A ierisindeki Ip Numaras. pucu :
Web uygulamann yayn, wwwroot ierisindeki herhangi bir alt klasrden ASP.NET Web Application

yaplabilir. rnein http://localhost/WebUygulama. uygulamalarn yayn bu yntem ile yaplr.

Modul 8:

Konu: 1

169

Modl 7: ASP .NET Web Form ve Kontrolleri ile almak

ASP.NET ile uygulama gelitirirken kullanlan temel bileenler Web Formlar ve Web kontrolleridir. Web Form, IIS tarafndan altrlan HTML kod ve

170

Modl 7:

kontrollerin birleiminden oluur. Bu formlara eklenen kontroller, sunucu veya istemci tarafl alabilirler. Bu modl tamamlandktan sonra: Web Form yapsn ve bileenlerini renecek, Sunucu ve istemci tarafl kontrollerin farklarn renecek, Web kontrollerini tanyacak,
ViewState ve PostBack kavramlarn reneceksiniz.

Konu 1: Web Form Bileenleri

Web Form, ASP.NET uygulamalarnn yap tadr. Visual Studio .NET ortam aracl ile eklenen kontrollerin ve Visual Basic .NET kodlarnn birleimi Web Formu oluturur. Web formlar, .aspx uzantl arayz dosyas ve. aspx.cs uzantl kod dosyalarndan oluur. rnein default.aspx isimli ASP.NET sayfasnn, sunucu tarafl Visual Basic .NET kodlar default.aspx.cs isimli dosyada tutulur. Kullanc arayz sayfas ve kod sayfasnn ayr tutulmasnn yarar, web programcsna ve web tasarmcsna ayr kaynaklar sunarak bamsz alma ortam salamaktr.

Konu: 1

171

Web Formlar Visual Studio ile iki farkl ekilde tasarlanabilir. Design sekmesi, web kontrollerinin grsel olarak dzenlenmesini salar. HTML sekmesi ise, kontrollerin HTML kodlar ile eklenmesini salar. Grsel ksmda Web Form kontrolleri ve bu kontrollere ait HTML kodlar, kod sayfasnda da bu kontrollerin davranlarn belirleyen Visual Basic .NET kodlar bulunur.

Web Formlarn genel zellikleri aadaki gibidir. @Page zellii Body zellii Form zellii

172

Modl 7:

Page zellii

Tm sayfa iinde tanmlanacak fonksiyonlarn deerlerini ierir. <@Page> etiketi ile gsterilir ve her .aspx uzantl dosyada bulunmas gerekir. <@Page> etiketinde, sayfann yaps ile ilgili zellikler bulunur. Language Sayfa iinde kullanlacak dil seeneini bildirilir. ASP.NET uygulamalarnda genellikle VB ve C# dilleri tercih edilir.
<@Page Language=c# <@Page Language=vb > >

CodeBehind Web formlarn, Visual Basic .NET veya C# uzantl kod dosyasn belirtir.
<@Page CodeBehind=WebForm1.aspx.vb > <@Page CodeBehind=WebForm1.aspx.cs >

SmartNavigation SmartNavigation zelliine True deeri ayarlanrsa, sayfa yeniden yklendii zaman, kaydrma ubuklarnn sayfa ierisindeki yeri korunur. Bylece sayfa ilk konumunda kalr. Bu zellik Internet Explorer 5.5 ve st tarayclar tarafndan desteklenir.

Konu: 1

173 <@Page Language=c# CodeBehind=WebForm1.aspx.cs _ SmartNavigation=True >

ViewState ASP.NET teknolojisi ile gelen yeniliklerden biridir. EnableViewState zellii ile objenin ierisine girilen bilgi ne olursa olsun, sunucu bunu bir deikende tutup tekrar kullancya geri dndrr. Bu durum sunucuya gnderilen veriler zerinde hata olumas durumunda, billgilerin kaybolmamasn salar. Bu zelliin tm kontrolleri iermesi iin, Page ynerge satrnda tanmlanmas gerekir. Bu zellik True veya False deeri alabilir.
<@Page EnableViewState=True >

Ayrca kontrol dzeyinde EnableViewState zellii kullanlabilir. Bu durumda, Page ynerge satrnda belirtilen deer geersiz olur.
<asp:Button EnableViewState=false >

Body zellii

Web sayfasnn ana blmdr. <body> etiketi ile web formun gvdesi oluturulur. Kullanlan her kontrol <body> ... </body> etiketleri arasnda bulunmaldr.
body etiketi ierisinde PageLayout(ms_positioning) zellii tanmlanabilir.

174

Modl 7:

PageLayout(ms_positioning) Web form iinde kullanlan nesnelerin, grntlenme biimini ayarlar. Bu zellik iki deer alabilir: FlowLayout: Sayfaya eklenen kontroller eklenme srasna gre sralanr. Kontrollerin yerleri srkleme ile deitirilemez. Nesneler iin style tanmlamaz.

<body ms_positioning=FlowLayout> </body>

GridLayout: Kontroller form zerindeki herhangi bir yere eklenebilir. Kontrollerin yerleri srkleme ile deitirilebilir. Bu grnmde nesneler iin style tanmlanr. Bu grnm Windows Uygulamalardaki Form grnmne benzemektedir.

<body ms_positioning=GridLayout> </body>

Form zellii

Web kontrolleri gruplandrmak iin kullanlr. Her web form iin tek Form etiketi tanmlanr. Tm kontroller <form> </form> etiketleri arasna eklenir. Form etiketi iinde tanmlanabilecek birok zellik vardr.

Konu: 1

175

Method Web kontrol zelliklerinin, sunucuya gnderilme eklini belirler. ki deer alabilir: Post: sim ve deer bilgilerini, HTML bilgisinin st bilgisine yazarak gnderir.

<form method=Post >

Get sim ve deer bilgilerini, sayfa adnn sonuna ekleyerek gnderir.

<form method=Get >

Id Formun isim bilgisini verir. CodeBehind sayfas ierisinde, forma ilem yaptrmak iin kullanlr.
<form id=deneme >

Runat Web formlarda kullanlan kontrollerin sunucu ile haberleerek alabilmesi iin runat=server bildirimi kullanlr. Bu zellik sadece server deerini alabilir.
<form runat=server >

176

Modl 7:

Konu 2: Server(Sunucu) Kontroller

Web sunucu zerinde alan kontrollerdir. ki tr server .kontrolu vardr. Bunlar: HTML Server Kontrolleri Web Server Kontrolleri (ASP.NET Kontrolleri)

ASP.NET server kontrolleri System.Web.UI.Control snfndan tretilir. Her ASP.NET server kontrol <asp:KontrolIsmi> etiketi ile bildirilir. HTML kontrolleri ise System.Web.UI.HtmlControls isim alannda bulunur.
Button, TextBox, DropDownList gibi server kontrollerinin alma modeli, istemci tarafl HTML kontrollerinin alma modelinden olduka farkldr. ASP.NET server kontrolleri, tamamen sunucu zerinde alr ve geri plandaki tm ileyileri ara yzle gizlenerek gerekletirilir.

Bir kontroln sunucu tarafnda alt runat=server zellii ile belirlenir.


<asp:Button id=Buton1 runat=server Text=Tklaynz />

rnekte istemci tarafnda alan HTML Button kontrol gsterilmektedir.


<INPUT type=button value=Bu Bir Html Button >

Konu: 1

177

Bu kontroln sunucu tarafnda almas iin, kontrole runat zellii eklenmelidir. Bylece kontrol HTML server kontrol haline getirilir.
<INPUT type=button id=button1 value=Bu Bir Html Button > runat=server _

Konu 3: Kontrollerin Snflandrlmas

ASP.NET Web kontrolleri drt grupta listelenir. Bunlar; 1- Standart Kontroller (ListBox, Button, CheckBox, Table vs.) 2- Dorulama Kontrolleri (RequiredFieldValidator, RangeValidator, CompareValidator, RegularExpressionValidator, CustomValidator, ValidationSummary)

3- Zengin Kontroller (Calendar, Adrotator) 4- likisel Liste Tabanl Kontroller (DataGrid, DataList, Repeater)

Standart Kontroller
Bu kontroller, HTML kontrollere alternatif olarak tasarlanmtr. Eski tip HTML kontrolleri ile yeni ASP.NET kontrolleri arasndaki en belirgin fark, her Web kontrolnden nce asp: n ekinin kullanlyor olmasdr.
<asp:TextBox runat=server id=giris Text=Ho Geldiniz> </asp:TextBox>

Bu kontrollerin avantajlar aadaki gibidir.

178

Modl 7:

Benzer kontrollere dzenli biimde isimler verilir. Tm kontroller ayn genel zelliklere sahiptir. Tarayc iin zel kodlar kendiliinden retilir.

Bu grupta bulunan kontrollerin tm id, text, backcolor, runat zelliklerine sahiptir. Ancak CheckBox kontrolnn Checked ve ListBox kontrolnn SelectedItem zellikleri vardr. Tablo 8.1de Html ve Standart sunucu kontroller gsterilmektedir.

Web kontrol <asp:Button> <asp:CheckBox> <asp:HyperLink> <asp:image> <asp:imageButton> <asp:LinkButton> <asp:Label> <asp:ListBox> <asp:Panel> <asp:TextBox> <asp:RadioButton> <asp:DropDownList> <asp:Table>

Html Kontrol <input type=submit> <input type=checkbox> <a href=...> </a> <img src=..> <input type=image> Yok <span> </span> <select size=5> </select> <div> </div> <input type=text> <input type=radiobutton> <select> </select> <table> </table>

Tablo 7.1 Standart Kontroller

Dorulama Kontrolleri
Kullancnn girdii deerleri kontrol etmek iin kullanlr. Kontroln yaplaca alana ve veriye gre, farkl dorulama kontrolleri kullanlr. ASP.NET, belirli bir aralkta veri girii salayan, karlatrma yapan ve belirli deerlerin bo geilmemesini salayan eitli dorulama kontrolleri sunar.
RequiredFieldValidator, RangeValidator, CompareValidator, RegularExpressionValidator, CustomValidator, ValidationSummary

kontrolleri, bu grupta yer alr.

Zengin Kontroller
AdRotator ve Calendar zengin kontroller grubunda yer alr. AdRotator, Web

sayfalar zerinde reklam yayn yapmak iin kullanlr. Calendar ise Web saylar zerinde Takvim gstermek iin kullanlr.

Konu: 1

179

likisel Liste Tabanl Kontroller


Bu kontroller, veritabanndan ekilen kaytlarn gsterilmesini salar. DataList, DataGrid ve Repeater kontrolleri, bu grupta yer alrlar.

Konu 4: Standart Kontroller

Label
Label,kullancya bilgi vermek iin kullanlr. <asp:Label runat="server" Text="Label Control" FontItalic="true" />

Bu kontrol, Internet Explorer taraycsnda u ekilde gsterilir.


<span style="font-style:italic;">Label Control</span>

TextBox
TextBox, kullancnn bilgi giriini salar. En sk kullanlan giri .kontroludr. <asp:TextBox id="userName" type="text" runat="server">

Bu kontrol, Internet Explorer taraycsnda u ekilde gsterilir.


<input name="userName" id="userName" type="text" />

180

Modl 7:

Web kontroller, WebControl snfndan tremilerdir. Bu yzden Web kontroller BackColor, BorderColor, Enabled, Font, Height, Width zelliklerine sahiptir.

Button
Button, form zerindeki olaylar sunucuya yollamak iin kullanlr. En sk

kullanlan onay kontroludr. rnekte Dugme1 isimli button tklandnda, Label kontrolune mesaj yazlr.
<asp:Button id="Dugme1" runat="server" Text="Tklaynz" OnClick="Dugme1_Click" runat="server"/> <span id="Message" runat="server" /> private void Dugme1(object sender, System.EventArgs e) { Message.InnerHtml="Beni Tkladn." ; }

CheckBox
seim yapma imkn sunar. Onay kutusu iaretlenmi ise True, iaretlenmemi ise False deerini alr. Onay kutusunun durumu CheckedChanged metodu ile takip edilebilir. rnekte CheckBox kontrolnn onay kutusu tkland anda Seili, seim ilemi geri alnd anda Seili deil mesaj yazlr. Seim yapld anda mesajn yazdrlmasn salayan AutoPostBack zelliinin, True deeridir.
void Check_Clicked(Object Sender, EventArgs e) { If (checkbox1.Checked ) { Message.InnerHtml="Seili" ; } else { Message.InnerHtml="Seili Deil" ; } } <asp:CheckBox id="checkbox1" runat="server" AutoPostBack="True" Text="ye Olmak ster misiniz?" TextAlign="Right" OnCheckedChanged="Check_Clicked"/> <br> <span id="Message" runat="server" /> CheckBox, kullancya seenekler arasndan

Konu: 1

181

RadioButton
RadioButton, CheckBox kontrolne benzerlik gsterir. Ancak RadioButton

kontrolunun GroupName zellii ile, birden fazla RadioButton arasnda grup oluturulur. Ayn grup ierisinden sadece bir RadioButton seilebilir. Birden fazla seenein iaretlenmesine izin verilmez. Onay kutusunun durumu Checked metodu ile takip edilebilir. rnekte, RadioButton kontrolleri arasnda muzik isminde bir grup oluturulmutur. Bu grup ierisindeki Pop, Jazz ve Classic RadioButton kontrollerinden sadece bir tanesi seilebilir. BtnOnay isimli button tklandnda, seilen RadioButton kontrolunun deeri Message isimli Label kontrolune yazlr.
void BtnOnay_Clicked(Object Sender,EventArgs e) { if (Radio1.Checked) { Message.InnerHtml = "Seiminiz" + Radio1.Text; } else if (Radio2.Checked) { Message.InnerHtml = " Seiminiz " + Radio2.Text; } else if (Radio3.Checked) { Message.InnerHtml = " Seiminiz " + Radio3.Text; } } <h4>Beendiiniz mzik trn seiniz:</h4>

182 <asp:RadioButton id=Radio1 Text="Pop" Checked="True' GroupName="muzik" runat="server"/> <br> <asp:RadioButton id=Radio2 Text="Jazz" GroupName="muzik" runat="server"/> <br> <asp:RadioButton id=Radio3 Text="Classic" GroupName="muzik" runat="server"/> <br> <asp:button text="Seiniz" id=BtnOnay OnClick="BtnOnay_Clicked" runat=server/> <br><br> <span id="Message" runat="server" />

Modl 7:

HyperLink
Hyperlink, sayfalar aras dolam salar. Hyperlink kontrolunun grnm

metin veya resim olabilir. ImageUrl zellii ile grntlenecek resim dosyas belirlenir. NavigateUrl zellii ile gidilecek sayfa belirlenir. rnekte Hyperlink kullanm gsterilmektedir.
<asp:HyperLink id="hyperlink1" runat="server" ImageUrl="image1.gif" NavigateUrl="http://www.bilgeadam.com" Text="Bilge Adam BTA" Target="_blank"/> Target zellii, alacak sayfann ayn sayfa zerinde veya yeni bir sayfada

gsterilmesini salar. Tablo 8.2de Target zelliinin deerleri gsterilmektedir.


Target zellii _blank _self _search Aklama
Yeni sayfa Ayn sayfa iinde Arama sayfas grnmnde

Tablo 7.2: Target zelliinin Deerleri

Image
Image, sayfa iinde resim grntlemek iin kullanlr. ImageUrl zellii ile

grntlenecek resim dosyas belirlenir. ImageAlign zellii resmin hizalanmas iin kullanlr. AlternateText resime alternatif metin gstermek iin kullanlr. rnekte Image kullanm gsterilmektedir.
<asp:Image id="Image1" runat="server" AlternateText="Logomuz"

Konu: 1

183 ImageAlign="left" ImageUrl="logo.gif"/>

ImageButton
ImageButton resimli button kontroludur.

rnekte ImageButton kullanm gsterilmektedir.


void ImageButton_Click(object Source,ImageClickEventArgs e) { Message.InnerHtml="Resimli Dme kontroln Tkladnz" + "Koordinatlar: (" & e.X.ToString() + ", " + e.Y.ToString() & ")" ; } <asp:ImageButton id="imagebutton1" runat="server" AlternateText="Resimli Dme Kontrol" ImageAlign="right" ImageUrl="image1.gif" OnClick="ImageButton_Click"/> <br><br> <span id="Message" runat="server"/>

kontrolnn ImageClickEventArgs argman kullanarak, kontroln bulunduu yerin koordinat deerleri alnabilir.
ImageButton

nesnesi

LinkButton
grnml Button kontroldr. LinkButton kontrolnn HyperLink kontrolnden fark ise olaylarnn olmasdr.
LinkButton, HyperLink

rnekte LinkButton kullanm gsterilmektedir.


void LinkButton1_Click(Object sender,EventArgs e) { Label1.Text="Link Buttona tkladnz" ; } <asp:LinkButton Text="Mesaj Grmek in Tklaynz." Font-Name="Verdana" Font-Size="14pt" onclick="LinkButton1_Click" runat="server"/> <br> <asp:Label id=Label1 runat=server />

184

Modl 7:

DropDownList
DropDownList, alan kutuda veri grntlemek iin kullanlr. DropDownList eleri Items koleksiyonunda tutulur. Items koleksiyonunun Count zellii ile toplam e says bulunur. DropDownList kontrolune tasarm veya alma zamannda e eklenebilir.

rnekte DropDownList kontrolune tasarm zamannda e eklenmektedir.


void Button_Click(object sender, EventArgs e) { Label1.Text = "Konutuunuz Dil " + dropdownlist1.SelectedItem.Text + "." ; } <asp:DropDownList id="dropdownlist1" runat="server"> <asp:ListItem>Trke</asp:ListItem> <asp:ListItem>ngilizce</asp:ListItem> <asp:ListItem>Almanca</asp:ListItem> <asp:ListItem>talyanca</asp:ListItem> </asp:DropDownList> <asp:Button id="Button1" Text="Submit" OnClick="Button_Click" runat="server"/> <asp:label id="Label1" runat="server"/> ListItem etiketi iindeki deerler, DropDownList elerini temsil eder.

rnekte DropDownList kontrolune alma zamannda e eklenmektedir.


<asp:DropDownList id="DropDownList1" style="Z-INDEX: 101;

Konu: 1

185 LEFT: 128px; POSITION: absolute; TOP: 160px" runat="server" Width="152px"/> void Page_Load(System.Object sender, System.EventArgs e) { for (int i=0;i<=5;i++) { DropDownList1.Items.Add(i.ToString); } } alma zamannda eleman eklemek iin, Items koleksiyonunun Add metodu

kullanlr.

ListBox
ListBox, DropDownList kontrolne benzer. Elemanlar liste halinde gsterilir

ve SelectionMode zelliine Multiple deeri atanarak, oklu seim yapma imkn salanr. rnekte ListBox kontrolunn oklu seim zellii kullanlmaktadr. ListBox kontrolu ierisinde seilen tm elemanlar Label kontrolune yazdrlr.
public void SubmitBtn_Click(object sender, EventArgs e) { ListItem item; Message.Text = ""; foreach(ListItem item in ListBox1.Items) { if(item.Selected == true) { Message.Text += item.Text + " "; } } } <asp:ListBox id=ListBox1 Rows=4 SelectionMode="Multiple" Width="100px" runat="server"> <asp:ListItem>Trke</asp:ListItem> <asp:ListItem>ngilizce</asp:ListItem> <asp:ListItem>Almanca</asp:ListItem> <asp:ListItem>talyanca</asp:ListItem> </asp:ListBox> <br> <asp:button Text="Submit" OnClick="SubmitBtn_Click" runat="server" /> <br> <asp:Label id="Message" runat="server"/>

Panel
Panel, dier kontrolleri gruplandrmak iin kullanlr. rnekte panel kullanm gsterilmektedir.
public void Button1_Click(object sender, EventArgs e) {

186

Modl 7:

// Label kontrol oluturalm Label label; label = new Label(); label.Text = "Etiket"; label.ID = "Label1"; Panel1.Controls.Add(label); Panel1.Visible = true; } <asp:Panel id="Panel1" runat="server" BackColor="blue" Height="150px" Width="200px" Visible=false> Panel1 <p> </asp:Panel> <asp:Button id="Button1" onClick="Button1_Click" Text="Paneli Gster" runat="server"/>

Panel1 isimli panel kontrol balangta gsterilmemektedir Button1 dmesi tklannca, panel kontrolunun ierisine label kontrolu eklenir ve grnr hale. getirilir. BackImageUrl zellii ile panele arka plan resmi verilir.

Table
Table, satrlarna ve stunlarna programlama yoluyla mdahale edilebilen

tablo kontroldr. Table kontrol iinde TableRow ve TableCell nesneleri kullanlr. TableCell, tabloda bir hcreyi temsil eder. TableRow ise tabloda bir satr temsil eder. rnekte Tabel kullanm gsterilmektedir.
private void Page_Load(object sender, System.EventArgs e) { //Satr ve Stun Oluumu int nrows = 3; int ncells = 2; int i; int j; for(j=0;j<=nrows - 1;j++) { TableRow r; r = new TableRow(); for(i=1;i<=ncells;i++) { TableCell c; c = new TableCell(); c.Controls.Add(new LiteralControl("Satr " + j.ToString() + ", hcre " + i.ToString())); r.Cells.Add(c); } Table1.Rows.Add(r); }

Konu: 1

187 <asp:Table id="Table1" GridLines="Both" HorizontalAlign="Center" Font-Name="Verdana" Font-Size="8pt" CellPadding=15 CellSpacing=0 Runat="server"/>

Konu 5: Dorulama(Validation) Kontroller

Web forma girilecek verinin doruluunu kontrol etmek iin sklkla JavaScript fonksiyonlar veya uzun ASP kodlar kullanlrd. Bu durum uygulama gelitirme srecinin artmasna neden olurdu. ASP.NET ile birlikte verinin doruluunu kontrol etmek iin dorulama kontrolleri gelitirildi. ASP.NET, belirlsi bir aralkta veri girii salayan, karlatrma yapan ve belirli deerlerin bo geilmemesini salayan eitli dorulama kontrolleri sunar. Tablo 7.1 de dorulama kontrolleri listelenmitir.
Validation Kontroller RequiredFieldValidator Grevi
Bir kontrol ierisine deer girilip girilmediini kontrol eder. Veri girilmesi zorunlu alanlarda kullanlr. Kontrol ierisine girilen deeri, sabit deerle veya baka bir kontrole girilen deerle karlatrr. Kontrol ierisine girilen deerin, ki sabit deer arasnda olmasn salar.

CompareValidator

RangeValidator

188 RegularExpressionValidator CustomValidator ValidationSummary


Bir kontrol ierisine girilen deerin, istenilen formatta girilmesini salar. zel dorulama kontrolu yazmay salar. Sayfada kullanlan tm validation kontrollerin, dorulama hatalarn zet olarak grntler.

Modl 7:

Tablo 7.3: Dorulama Kontrolleri

Dorulama kontrollerinin ortak zellikleri aadaki gibidir. ControlToValidate: Hangi kontroln dorulanacan belirtir. ErrorMessage: Geerli giri yaplmamsa grntlenecek hata mesajn verir. Text: ErrorMessage ve Text zellii birlikte kullanlabilir. Bu durumunda Text zelliindeki mesaj grntlenir. Dorulama kontrollerin ErrorMessage zelliine girilen tm mesajlar ValidationSummary ierisinde listelenir. Display: Validation kontroln nasl grntlenecei bilgisini tutar. Static, Dynamic ve None deerleri alr.

RequiredFieldValidator
RequiredFieldValidator, belirtilen kontroln bo geilmemesini salar.

Dorulama yaplacak web kontrolnn ismi ControlToValidate zelliine girilir Geerli giri yaplmadnda ortaya kacak hata mesaj ErrorMessage zellii ile belirtilir. rnekte RequiredFieldValidator kullanm gsterilmektedir..
<asp:RequiredFieldValidator id="RequiredFieldValidator1" style="Z-INDEX: 103; LEFT: 224px; POSITION: absolute; TOP: 48px" runat="server" ErrorMessage="Adnz Girmelisiniz!!!" ControlToValidate="txtad"> </asp:RequiredFieldValidator>

CompareValidator
Kontrol ierisine girilen deeri, sabit deerle veya baka bir kontrol ile karlatrmak iin kullanlr. Dorulama yaplacak web kontrolnn ismi ControlToValidate zelliine girilir. Karlastrma yaplacak sabit deer ValueToCompare zelliine girilir. Type zelliine girilen deerin veri tr, Operator zelliine ise mantksal operatr girilir. rnekte txtYas kontrolune yirmi veya yirmiden byk tamsay girii salayan dorulama ilemi yaplmaktadr.

Konu: 1

189

<asp:CompareValidator id="CompareValidator1" style="Z-INDEX: 109; LEFT: 232px; POSITION: absolute; TOP: 88px" runat="server" ErrorMessage="Yanz 20 ye eit veya byk olmaldr." ValueToCompare="20" ControlToValidate="txtYas" Type="Integer" Operator="GreaterThanEqual" Width="128px"> </asp:CompareValidator>

Dorulama yaplacak web kontrolu, baka bir karlatrlacaksa ControlToCompare zellii kullanlr.

web

kontrol

ile

rnekte txtYas kontrolnn deeri txtKontrol deerinden byk olmaldr.


<asp:CompareValidator id="CompareValidator1" style="Z-INDEX: 109; LEFT: 240px; POSITION: absolute; TOP: 128px" runat="server" ErrorMessage="yanz kontrol alannda yazlan deerden byk olmaldr." ControlToValidate="txtYas" Type="Integer" Operator="GreaterThan" Width="144px" ControlToCompare="txtKontrol"> </asp:CompareValidator>

RangeValidator
Kontrol ierisine girilen deerin, belirli bir deer aralnda olmasn salar. Dorulama kontrollerinin ortak zelliklerine ek olarak MinimumValue, MaximumValue ve Type zellikleri vardr. rnekte txtYas kontrolune girilen deerin, otuzbe ile elli arasnda olamasn salayan dorulama ilemi yaplmaktadr. Bu zel karakterler Tablo 7.4
<asp:RangeValidator id="RangeValidator1" style="Z-INDEX: 109; LEFT: 240px; POSITION: absolute; TOP: 128px" runat="server" ErrorMessage="Yanz 35 ile 50 arasnda olmaldr." ControlToValidate="txtYas" Type="Integer" MaximumValue="50" MinimumValue="35"> </asp:RangeValidator>

190

Modl 7:

RegularExpressionValidator
Kontrol ierisine girilen deerin, istenilen formatta girilmesini salar. ValidationExpression zelliine girilen zel karakterler ile veri giri format salanr. Bu zel karakterler Tablo 7.4 de gsterilmektedir. rnekte RegularExpressionValidator kontrolu ile txtMail metin kutusu iin geerli e-mail girii salanmaktadr.
<asp:regularexpressionvalidator id="RegularExpressionValidator1" style="Z-INDEX: 111; LEFT: 256px; POSITION: absolute; TOP: 168px" runat="server" ErrorMessage="Mail giri hatas" ControlToValidate="txtMail" ValidationExpression= "\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"> </asp:regularexpressionvalidator>

Karakter
a 1 ? * +

Tanm
Bir harf kullanmn zorunlu klar. 1 says kullanlmak zorunda. 0 veya 1 e olmak zorunda 0dan ne kadar bir deer 1den ne kadar bir deer

Konu: 1 [0-n] {n} | \ \w \d \. 0dan ne kadar say deer dizisi N ile belirtilen deer uzunluunda olmal Farkl geerli dizinler. Bir komut karakterini devam ettiren karakter Bir karakter olmak zorunda. Bir rakam olmak zorunda. Bir nokta olmak zorunda.

191

Tablo 7.4: Kontrol Karakterleri rnekte ValidationExpression zelliine girilen zel karakterler ile e-mail format oluturulmaktadr.
ValidationExpression= "\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"> \w+ : En az bir karakter ieren metin anlamna gelir. ([-+.]) : -, +, . karakterlerinden herhangi biri anlamna gelir. * : 0dan ne kadar bir deer girilmesi gerektii anlamna gelir. @ : @ iaretinin kullanlmas gerektiini belirtir.

rnekte ValidationExpression zelliine girilen zel karakterler ile e-mail format oluturulmaktadr.
ValidationExpression =\w+@\w+\.\w+

CustomValidator
Ayn anda birden fazla nesnenin deerini kontrol etmek veya kullanc tanml kontrol yazmak iin CustomValidator kontrol kullanlr.

192 zellik ClientValidationFunction ControlToValidate Display EnableClientScript Enabled ErrorMessage IsValid Text Aklama

Modl 7:

stemci fonksiyon ismini belirtir. Dorulama yaplacak kontrol belirler.


Text zelliine girilen hata mesajnn nasl grntlenecei belirtir.

stemci skriptleri aktif hale getirir. Varsaylan deer True dur. Sunucu ve istemci tarafl skriptleri aktif hale getirir. Varsaylan deer True dur. Kontrol hata mesajn gsterir. Kontrol ilemi baar ile sonulanmsa True, deilse False deerini dndrr. Kontrol hata mesajn gsterir. ErrorMessage ve Text zellii birlikte kullanlabilir. Bu durumunda Text zelliindeki mesaj grntlenir.

Tablo 7.3: CustomValidator Kontrolnn zellikleri


ServerValidate olay ve OnServerValidate metodu ile sunucu tarafl

kontroller tetiklenir. rnekte sunucu tarafl metod oluturulmaktadr.


public void CustomValidator_SunucuKontrol(object s, ServerValidateEventArgs e) { } ServerValidateEventArgs parametresinin iki zellii vardr:

IsValid: Bu zellik True ise kontrol ierisine girilen deerin doruluu salanmtr. Value: Dorulama kontrolnn deerini verir.
CustomValidator, kredi kart numaralarnn doruluu kontrol etmek iin

kullanlabilir. rnekte metin kutusuna girilen deerin ift olmas kontrol edilmektedir. CustomValidator kontrolunun HTML kodlar aadaki gibidir.
<form id="Form1" method="post" runat="server"> <asp:Button id="Button1" style="Z-INDEX: 101; LEFT: 200px; POSITION: absolute; TOP: 96px" runat="server" Text="gonder" onClick=gonder_OnClick> </asp:Button> <asp:CustomValidator id="CustomValidator1"

Konu: 1

193 style="Z-INDEX: 102; LEFT: 312px; POSITION: absolute; TOP: 64px" runat="server" ErrorMessage="ift rakam giriniz." ControlToValidate="txtcustom" Display="Static" OnServerValidate="ServerKontrol"> </asp:CustomValidator> <asp:TextBox id="txtmessage" style="Z-INDEX: 103; LEFT: 200px; POSITION: absolute; TOP: 152px" runat="server"> </asp:TextBox> <asp:TextBox id="txtcustom" style="Z-INDEX: 104; LEFT: 144px; POSITION: absolute; TOP: 64px" runat="server"> </asp:TextBox> </form> CustomValidator kontrolunun C# kodlar aadaki gibidir. public void ServerKontrol(object source, ServerValidateEventArgs args) { try { int num = int.Parse(args.Value); args.IsValid = ((num%2) == 0); } catch(Exception ex) { args.IsValid = false; } } public void gonder_OnClick(object sender, EventArgs e) { if(Page.IsValid) { txtmessage.Text = "Sayfada Hata Yok."; } else { txtmessage.Text = "Sayfa Hatal!"; } }

ValidationSummary
ValidationSummary, dorulama kontrollerin ErrorMessage zelliine girilen tm mesajlar listeler.

rnekte ValidationSummary kullanm gsterilmektedir.


<asp:ValidationSummary id="ValidationSummary1" style="Z-INDEX: 114; LEFT: 72px; POSITION: absolute; TOP: 336px" runat="server" HeaderText="Hatalar"> </asp:ValidationSummary>

194

Modl 7:

DisplayMode zellii ile ValidationSummary kontrolunun grnts deitirilebilir. DisplayMode, BulletList, List ve SingleParagraph deerlerini alr. ShowMessageBox, hata listesinin mesaj kutusu iinde grntlenmesini salar.

Konu 8: Zengin Kontroller

AdRotator
AdRotator, Web sayfalar zerinde reklam yayn yapmak iin kullanlr.

Reklam iin kullanlan banner nesneleri XML dosya ierisine kaydedilir. rnekte AdRotator gsterilmektedir. kullanm iin gerekli XML dosya (Ads.Xml)

<Advertisements> <Ad> <ImageUrl>image1.gif</ImageUrl> <NavigateUrl>http://www.bilgeadam.com</NavigateUrl> <AlternateText>BilgeAdam BTA</AlternateText> <Impressions>80</Impressions> <Keyword>Yazlm</Keyword> </Ad> <Ad> <ImageUrl>image2.gif</ImageUrl> <NavigateUrl>http://www.microsoft.com</NavigateUrl> <AlternateText>Microsoft Site</AlternateText> <Impressions>80</Impressions>

Konu: 1

195 <Keyword>microsoft</Keyword> </Ad> </Advertisements> Ad: Her bir banner nesnesini temsil eder. ImageUrl:

Banner ierisinde grntlenecek resim dosyasn belirtir.

NavigateUrl: Gidilecek sayfann adres bilgisini belirtir. AlternateText: Resime alternatif metin gstermek iin kullanlr. Impression: -Banner resimlerinin uygulama sresini belirtir. Keyword:.Banner nesneleri arasnda filtreleme oluturacak kategori adn

belirler.
AdRotator kontrolnn AdvertisementFile zellii, reklm bilgilerinin

bulunduu XML dosyay ierir. KeywordFilter zellii ise reklmlarn filtrelenerek grntlenmesini salar.

Calendar
Calendar, web saylar zerinde Takvim gstermek iin kullanlr..

rnekte Calender kullanm gsterilmektedir.


<asp:Calendar id=takvim runat=server/>

Calendar kontrolne ait zellikler tablo 7.4de listelenmitir. zellik CellPadding CellSpacing DayNameFormat Aklama
Hcreler ve kenarlklar arasndaki boluk deerini tutar. Hcreler arasndaki boluk deerini tutar. Gn isimlerinin grntlenme biimini tutar. FirstLetter, FirstTwoLetters, Full ve Short deerleri vardr. Varsaylan Short deeridir. Haftann ilk gnn belirtir.

FirstDayOfWeek NextPrevFormat

Next ve Previous linklerinin biimini ayarlar. CustomText, FullMonth, ShortMonth deerleri alr. Varsaylan CustomText
deeridir. Seilen gn bilgisini tutar. Varsaylan deer gnn tarihidir. Calendar nesnesinin seim modunu belirler. Day, DayWeek, DayWeekMonth ve None deerleri

SelectedDate SelectionMode

196
alr. Varsaylan seenek Day deeridir.

Modl 7:

ShowDayHeader ShowGridLines ShowNextPrevMonth ShowTitle TitleFormat

Gn isimlerini kolonlarn zerinde grntler. Gnleri hcreler iinde grntler. nceki ve sonraki ay linklerinin grntlenmesini salar. Takvim baln grntler. Balk yazsnn biimini belirtir.

Tablo 7.4: Calendar Kontrolnn zellikleri rnekte Calender kullanm gsterilmektedir.


<asp:Calendar id="Calendar1" style="Z-INDEX: 105; LEFT: 160px; POSITION: absolute; TOP: 248px" runat="server" CellSpacing="2" Width="240px" Height="152px" BorderStyle="Groove" DayNameFormat="Full" NextPrevFormat="FullMonth"> <DayStyle Font-Bold="True" HorizontalAlign="Center" BorderStyle="None" BorderColor="Transparent" VerticalAlign="Top" BackColor="LightCyan"> </DayStyle> <DayHeaderStyle Font-Underline="True" Font-Italic="True" HorizontalAlign="Right" BorderWidth="3px" ForeColor="DarkBlue" BorderStyle="Groove" BorderColor="#C0FFFF" VerticalAlign="Top" BackColor="#FFC0FF"> </DayHeaderStyle> <WeekendDayStyle BackColor="Salmon"></WeekendDayStyle> </asp:Calendar>

Konu: 1

197

Konu 9: AutoPostBack zellii

AutoPostBack zellii, herhangi bir sunucu kontrolnn web sunucuya otomatik olarak bilgi gndermesini salar. Web formu doldurduktan sonra sunucuya gndermek iin genellikle button kontrolu kullanlr.
AutoPostBack zellii, DropDownList, ListBox, CheckBox, CheckBoxList, RadioButton, RadioButtonList, TextBox ve Button kontrolnde bulunur.

Bu zelliin True olmas, seim yapldnda veya TextBox kontrolne yeni bir deer girildiinde sayfann yeniden yklenmesi anlamna gelir. rnekte AutoPostBack kullanm gsterilmektedir.
<%@ Page Language="C#" Debug="true" %> <html> <head></head> <body> <form runat="server"> Bilgiiniz Yabanc Dili Seiniz:<br/><br/> <asp:listbox id="lstDiller" runat="server" rows="3" AutoPostBack="true" onSelectedIndexChanged="secimGoster"/> <br><br> <asp:Label id=lblMesaj runat="server" /> <br/><br/> </form> </body> </html> <script language=c# runat="server">

198 private void Page_Load(object sender, System.EventArgs e) { if(!Page.IsPostBack) { lstFlowers.Items.Add(new ListItem("ngilizce")); lstFlowers.Items.Add(new ListItem("Almanca")); lstFlowers.Items.Add(new ListItem("Franszca")); lstFlowers.SelectedIndex = 0; } } public void showSelection(object source, EventArgs e) { lblMesaj.Text = "Setiiniz Dil " + lstDiller.SelectedItem.Text; } </script> AutoPostBack zelliininin gereksiz yere kullanlmas performans olumsuz

Modl 7:

ynde etkiler.

Konu 10: ViewState

ViewState, kullanc ve sunucu arasnda tanan verilerinn gizli bir alanda ifrelenerek saklanmasn salar. Forma ait tm kontrollerin deerleri ifrelenir ve VIEWSTATE deikende saklanr. Form sunucuya gnderildikten sonra bir hata olumas halinde kullancdan tekrar ayn verilerin girilmesi istenmez. nk kullancnn girmi olduu deerler bu gizli deikende saklanr ve sayfa alnca tekrar kullancya sunulur.

Konu: 1

199

rnekte ViewState kullanm gsterilmektedir.


<input type="hidden" name="__VIEWSTATE" value="dDwtMTY5NzI1NjkxNzs7Po5lYTu9gAdJkhGyy1Rw1gGcc+ia" />

Modl zeti

15. 16. 17. 18. 19. 20. Web form bileenlerini aklayn? Stardart kontroller nelerdir ? Aklayn. Dorulama kontrolleri nelerdir ? Aklayn. Zengin kontroller nelerdir ? Aklayn. AutoPostBack nedir ? ViewState zelliini aklayn?

200

Modl 7:

Lab 1: E-Ticaret Uygulamas Gelitirmek

Bu uygulamada, e-ticaret uygulamasnn web formlar tasarlanacaktr. E-ticaret uygulamas ierisinde msterilerinin kendi kaytlarn yapabilmesi iin UyeKayit formu tasarlanacaktr. Kayt olan mterilerin rn satn alabilmesi iin sisteme giri yapmalar gerekmektedir. Kaytl mterilerin sisteme girii UyeGiris formu ile salancaktr. Her iki form ierisinde standart ve dorulama kontrolleri kullanlacaktr. Ayrca kullancy ynlendirmek iin Giris, Kayt ve Sat isminde 3 ayr web form tasarlanacaktr. Bu lab tamamlandktan sonra: Access veritabanna balant oluturabilecek, Web Formlar tanyacak, Standart Kontrolleri kullanabilecek, Dorulama kontrollerini kullanabileceksiniz.

Veritabannn projeye eklenmesi


Bu uygulamada kullanlacak Course veritaban oluturun. 10. Microsoft Access ile KitapDb isminde bir veritaban oluturun. 11. Veritabann tablolarn aadaki diyagrama gre oluturun.

Konu: 1

201

12. Veritaban ierisinde EnCokSatanlar isminde sorgu oluturun. 13. Sorgunun ierisine aadaki Select cmlesini ekleyin.
SELECT Kitap.KitapAdi, Kitap.Ucret, Kitap.KitapID FROM Kitap INNER JOIN Siparis ON Kitap.KitapID=Siparis.KitapID GROUP BY Kitap.KitapAdi, Kitap.Ucret, Kitap.KitapID ORDER BY Count(Siparis.Adet) DESC;

Web Formlarn eklenmesi


AspEticaret isminde yeni bir ASP.NET Web Application projesi an.

UyeKayit formunun eklenmesi


ASPEticaret projesine UyeKayt isminde yeni bir web form ekleyin. Form zerine, tablodaki kontrolleri ekleyin belirtilen zelliklerini ayarlayn.
Kontrol Kontrol smi TextBox txtAd TextBox txtSoyad TextBox txtEmail TextBox txtSifre TextBox txtSifreDogrula RequiredFieldValidator TextMode TextMode Password Password zellik Deer

ControlToValidate ErrorMessage Text

txtAd Ad bo geemezsiniz * txtSoyad Soyad bo geemezsiniz *

rfvAd

RequiredFieldValidator

ControlToValidate ErrorMessage Text

rfvSoyad

202 RequiredFieldValidator

Modl 7:

ControlToValidate ErrorMessage Text

txtEmail E-maili bo geemezsiniz * txtSifre ifreyi giriniz. * txtSifreDogrula Dorulama ifresini giriniz * txtEmail Hatal Email *
\w+([+.]\w+)*@\w+([.]\w+)*\.\w+([.]\w+)*

rfvEmail

RequiredFieldValidator

ControlToValidate ErrorMessage Text

rfvSifre

RequiredFieldValidator

ControlToValidate ErrorMessage Text

rfvSifre2

RegularExpressionValidator

ControlToValidate ErrorMessage Text Validation Expression

revEmail

CompareValidator

ControlToCompare ControlToValidate ErrorMessage Text

txtSifre txtSifre2 ifreler uyumsuz * Kaydet

cvSifreDogrula

ValidationSummary vsHata Button - btnKaydet Text

UyeKayit Web formun Html kodlar aadaki gibi olacaktr.

Konu: 1

203

<%@ Register TagPrefix="uc1" TagName="yan" Src="yan.ascx" %> <%@ Page Language="C#" AutoEventWireup="false" Codebehind="UyeKayit.aspx.cs" Inherits="AspEticaret.UyeKayit" %> <%@ Register TagPrefix="uc1" TagName="kategori" Src="kategori.ascx" %> <%@ Register TagPrefix="uc1" TagName="Ust" Src="Ust.ascx" %> <%@ Register TagPrefix="uc1" TagName="Alt" Src="Alt.ascx" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <title>UyeKayit</title> <meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR"> <meta content="C#" name="CODE_LANGUAGE"> <meta content="JavaScript" name="vs_defaultClientScript"> <meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema"> </HEAD> <body bgColor="#f0fff0"> <form id="Form1" method="post" runat="server"> <TABLE id="Table1" cellSpacing="0" cellPadding="0" width="700" align="center" border="0"> <TR> <TD bgColor="#99ccff" colSpan="3"><uc1:ust id="Ust1" runat="server"></uc1:ust></TD> </TR> <TR> <TD vAlign="top" width="150"><uc1:kategori id="Kategori1" runat="server"></uc1:kategori></TD> <TD width="400" height="100%"> <P> <TABLE id="Table2" cellSpacing="0" cellPadding="0" width="300" align="center" border="0"> <TR> <TD style="HEIGHT: 48px" colSpan="2"> <P align="center"><FONT face="Tahoma" size="2"><STRONG>yelik Bilgileri</STRONG></FONT></P> </TD> </TR> <TR> <TD style="WIDTH: 100px"><FONT face="Tahoma" size="2">Ad*</FONT></TD> <TD><asp:textbox id="txtAd" runat="server" Width="176px"></asp:textbox><asp:requiredfieldvalidator id="rfvAd" runat="server" ControlToValidate="txtAd" ErrorMessage="Ad bo geemezsiniz">*</asp:requiredfieldvalidator><FONT face="Tahoma" size="2"></FONT></TD> </TR> <TR> <TD style="WIDTH: 100px"><FONT face="Tahoma" size="2">Soyad*</FONT></TD> <TD><asp:textbox id="txtSoyad" runat="server"

204 Width="176px"></asp:textbox><asp:requiredfieldvalidator id="rfvSoyad" runat="server" ControlToValidate="txtSoyad" ErrorMessage="Soyad bo geemezsiniz.">*</asp:requiredfieldvalidator><FONT face="Tahoma" size="2"></FONT></TD> </TR> <TR> <TD style="WIDTH: 100px"><FONT face="Tahoma" size="2">E-Mail*</FONT></TD> <TD><asp:textbox id="txtEmail" runat="server" Width="176px"></asp:textbox><asp:requiredfieldvalidator id="rfvEmail" runat="server" ControlToValidate="txtEmail" ErrorMessage="E-maili bo geemezsiniz. " Display="Dynamic">*</asp:requiredfieldvalidator><asp:regu larexpressionvalidator id="revEmail" runat="server" ControlToValidate="txtEmail" ErrorMessage="Hatal Email" Display="Dynamic" ValidationExpression="\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([.]\w+)*">*</asp:regularexpressionvalidator><FONT face="Tahoma" size="2"></FONT></TD> </TR> <TR> <TD style="WIDTH: 100px"><FONT face="Tahoma" size="2">ifre*</FONT></TD> <TD><asp:textbox id="txtSifre" runat="server" Width="176px" TextMode="Password"></asp:textbox><asp:requiredfieldvalidato r id="rfvSifre" runat="server" ControlToValidate="txtSifre" ErrorMessage="ifreyi giriniz.">*</asp:requiredfieldvalidator><FONT face="Tahoma" size="2"></FONT></TD> </TR> <TR> <TD style="WIDTH: 100px"><FONT face="Tahoma" size="2">ifre Dorula*</FONT></TD> <TD><asp:textbox id="txtSifreDogrula" runat="server" Width="176px" TextMode="Password"></asp:textbox><asp:requiredfieldvalidato r id="rfvSifre2" runat="server" ControlToValidate="txtSifreDogrula" ErrorMessage="Dorulama ifresini giriniz." Display="Dynamic">*</asp:requiredfieldvalidator><asp:comp arevalidator id="cvSifreDogrula" runat="server" ControlToValidate="txtSifreDogrula" ErrorMessage="ifreler uyumsuz." Display="Dynamic" ControlToCompare="txtSifre">*</asp:comparevalidator></TD> </TR> <TR> <TD style="HEIGHT: 47px" colSpan="2"> <P align="center"><asp:button id="btnKaydet" runat="server" Text="Kaydet"></asp:button></P> </TD> </TR> <TR> <TD style="WIDTH: 100px" colSpan="2"><asp:validationsummary id="vsHata" runat="server" Width="286px"></asp:validationsummary></TD> </TR> <TR>

Modl 7:

Konu: 1

205 <TD style="WIDTH: 100px; HEIGHT: 15px" colSpan="2"></TD> </TR> <TR> <TD style="WIDTH: 100px"></TD> <TD></TD> </TR> </TABLE> </P> </TD> <TD vAlign="top" width="150" bgColor="#0099ff"><uc1:yan id="Yan1" runat="server"></uc1:yan></TD> </TR> <TR> <TD bgColor="#99ccff" colSpan="3"> <uc1:Alt id="Alt1" runat="server"></uc1:Alt></TD> </TR> </TABLE> </form> </body> </HTML>

UyeGiris formunun eklenmesi


ASPEticaret projesine UyeGiris isminde yeni bir web form ekleyin. Form zerine, tablodaki kontrolleri ekleyin belirtilen zelliklerini ayarlayn.
Kontrol Kontrol smi TextBox txtEmail TextBox txtSifre Button btnGiris Label lblMesaj TextMode Text Text Text Password zellik Deer

* Giri

206

Modl 7:

UyeGiri Web formun Html kodlar aadaki gibi olacaktr.


<%@ Register TagPrefix="uc1" TagName="kategori" Src="kategori.ascx" %> <%@ Register TagPrefix="uc1" TagName="Ust" Src="Ust.ascx" %> <%@ Register TagPrefix="uc1" TagName="Alt" Src="Alt.ascx" %> <%@ Register TagPrefix="uc1" TagName="yan" Src="yan.ascx" %> <%@ Page Language="C#" AutoEventWireup="false" Codebehind="UyeGiris.aspx.cs" Inherits="AspEticaret.UyeGiris" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <title>UyeGiris</title> <meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1"> <meta name="CODE_LANGUAGE" content="C#"> <meta name="vs_defaultClientScript" content="JavaScript"> <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5"> </HEAD> <body bgColor="#f0fff0"> <form id="Form1" method="post" runat="server"> <TABLE id="Table1" cellSpacing="0" cellPadding="0" width="700" align="center" border="0"> <TR> <TD bgColor="#99ccff" colSpan="3"> <uc1:Ust id="Ust1" runat="server"></uc1:Ust></TD> </TR> <TR> <TD width="150" vAlign="top"> <uc1:kategori id="Kategori1" runat="server"></uc1:kategori></TD> <TD width="400" vAlign="top"> <P> <TABLE id="Table2" cellSpacing="0" cellPadding="0" width="200" align="center" border="0"> <TR> <TD style="HEIGHT: 63px" colSpan="2"> <P align="center"><STRONG><FONT face="Verdana" size="2"><BR> ye Giri</FONT></STRONG></P> </TD> </TR> <TR> <TD style="WIDTH: 66px">EMail&nbsp;</TD> <TD> <asp:TextBox id="txtEmail" runat="server" Width="128px"></asp:TextBox></TD> </TR> <TR> <TD style="WIDTH: 66px; HEIGHT: 11px">Sifre</TD> <TD style="HEIGHT: 11px"> <asp:TextBox id="txtSifre" runat="server" Width="127px" TextMode="Password"></asp:TextBox></TD>

Konu: 1

207 </TR> <TR> <TD style="HEIGHT: 54px"

colSpan="2">

<P align="center"> <asp:Button id="btnGiris" runat="server" Text="Giri"></asp:Button></P> </TD> </TR> <TR> <TD colSpan="2"> <asp:Label id="lblMesaj" runat="server"></asp:Label></TD> </TR> </TABLE> </P> </TD> <TD width="150" bgColor="#0099ff" vAlign="top"> <uc1:yan id="Yan1" runat="server"></uc1:yan></TD> </TR> <TR> <TD bgColor="#99ccff" colSpan="3"> <uc1:Alt id="Alt1" runat="server"></uc1:Alt></TD> </TR> </TABLE> </form> </body> </HTML>

Giris formunun eklenmesi


ASPEticaret projesine Giris isminde yeni bir web form ekleyin. Form zerine, tablodaki kontrolleri ekleyin belirtilen zelliklerini ayarlayn.
Kontrol Kontrol smi HyperLink lnk1 HyperLink lnk2 zellik NavigateUrl Text NavigateUrl Text Deer

UyeGiris.aspx Tklaynz UyeKayit.aspx Tklaynz

208

Modl 7:

Giris Web formun Html kodlar aadaki gibi olacaktr.


<%@ Register TagPrefix="uc1" TagName="Alt" Src="Alt.ascx" %> <%@ Register TagPrefix="uc1" TagName="Ust" Src="Ust.ascx" %> <%@ Register TagPrefix="uc1" TagName="kategori" Src="kategori.ascx" %> <%@ Register TagPrefix="uc1" TagName="yan" Src="yan.ascx" %> <%@ Page Language="C#" AutoEventWireup="false" Codebehind="Giris.aspx.cs" Inherits="AspEticaret.Giris" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <title>Kayit</title> <meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1"> <meta name="CODE_LANGUAGE" content="C#"> <meta name="vs_defaultClientScript" content="JavaScript"> <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5"> </HEAD> <body bgColor="#f0fff0"> <form id="Form1" method="post" runat="server"> <TABLE id="Table1" cellSpacing="0" cellPadding="0" width="700" align="center" border="0"> <TR> <TD bgColor="#99ccff" colSpan="3"> <uc1:Ust id="Ust1" runat="server"></uc1:Ust></TD> </TR> <TR> <TD width="150" vAlign="top"> <uc1:kategori id="Kategori1" runat="server"></uc1:kategori></TD> <TD width="400" vAlign="top"> <P><BR> Sayfaya erimek iin ye girii yapmalsnz.<BR> Giri yapmak iin <asp:HyperLink id="lnk1" runat="server" NavigateUrl="UyeGiris.aspx">tklaynz</asp:HyperLink></P> <P>ye olmak iin

Konu: 1

209 <asp:HyperLink id="lnk2" runat="server" NavigateUrl="UyeKayit.aspx">tklaynz</asp:HyperLink></P> </TD> <TD width="150" bgColor="#0099ff" vAlign="top"> <uc1:yan id="Yan1" runat="server"></uc1:yan></TD> </TR> <TR> <TD bgColor="#99ccff" colSpan="3"> <uc1:Alt id="Alt1" runat="server"></uc1:Alt></TD> </TR> </TABLE> </form> </body> </HTML>

Kayit formunun eklenmesi


ASPEticaret projesine Kayit isminde yeni bir web form ekleyin. Form zerine, tablodaki kontrolleri ekleyin belirtilen zelliklerini ayarlayn.
Kontrol Kontrol smi HyperLink lnk1 zellik NavigateUrl Text Deer

UyeGiris.aspx tklaynz

Kayit web formun Html kodlar aadaki gibi olacaktr.


<%@ Register TagPrefix="uc1" TagName="yan" Src="yan.ascx" %> <%@ Page Language="c# " AutoEventWireup="false" Codebehind="Kayit.aspx.cs" Inherits="AspEticaret.Kayit" %> <%@ Register TagPrefix="uc1" TagName="kategori" Src="kategori.ascx" %> <%@ Register TagPrefix="uc1" TagName="Ust" Src="Ust.ascx" %> <%@ Register TagPrefix="uc1" TagName="Alt" Src="Alt.ascx" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML>

210 <HEAD> <title>Kayit</title> <meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1"> <meta name="CODE_LANGUAGE" content="C#"> <meta name="vs_defaultClientScript" content="JavaScript"> <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5"> </HEAD> <body bgColor="#f0fff0"> <form id="Form1" method="post" runat="server"> <TABLE id="Table1" cellSpacing="0" cellPadding="0" width="700" align="center" border="0"> <TR> <TD bgColor="#99ccff" colSpan="3"> <uc1:Ust id="Ust1" runat="server"></uc1:Ust></TD> </TR> <TR> <TD width="150" vAlign="top"> <uc1:kategori id="Kategori1" runat="server"></uc1:kategori></TD> <TD width="400" vAlign="top"> <P><BR> Kayt ilemi baaryla tamaland.<BR> Giri yapmak iin <asp:HyperLink id="lnk1" runat="server" NavigateUrl="UyeGiris.aspx">tiklayiniz</asp:HyperLink></P> </TD> <TD width="150" bgColor="#0099ff" vAlign="top"> <uc1:yan id="Yan1" runat="server"></uc1:yan></TD> </TR> <TR> <TD bgColor="#99ccff" colSpan="3"> <uc1:Alt id="Alt1" runat="server"></uc1:Alt></TD> </TR> </TABLE> </form> </body> </HTML>

Modl 7:

Satis formunun eklenmesi


ASPEticaret projesine Satis isminde yeni bir web form ekleyin. Form zerine, tablodaki kontrolleri ekleyin belirtilen zelliklerini ayarlayn.
Kontrol Kontrol smi HyperLink lnk1 zellik NavigateUrl Text Deer

Default.aspx tklaynz

Konu: 1

211

Satis web formun Html kodlar aadaki gibi olacaktr.


<%@ Register TagPrefix="uc1" TagName="Alt" Src="Alt.ascx" %> <%@ Register TagPrefix="uc1" TagName="Ust" Src="Ust.ascx" %> <%@ Register TagPrefix="uc1" TagName="kategori" Src="kategori.ascx" %> <%@ Register TagPrefix="uc1" TagName="yan" Src="yan.ascx" %> <%@ Page Language="c#" AutoEventWireup="false" Codebehind="Satis.aspx.cs" Inherits="AspEticaret.Satis" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <title>Kayit</title> <meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1"> <meta name="CODE_LANGUAGE" content="C#"> <meta name="vs_defaultClientScript" content="JavaScript"> <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5"> </HEAD> <body bgColor="#f0fff0"> <form id="Form1" method="post" runat="server"> <TABLE id="Table1" cellSpacing="0" cellPadding="0" width="700" align="center" border="0"> <TR> <TD bgColor="#99ccff" colSpan="3"> <uc1:Ust id="Ust1" runat="server"></uc1:Ust></TD> </TR> <TR> <TD width="150" vAlign="top"> <uc1:kategori id="Kategori1" runat="server"></uc1:kategori></TD> <TD width="400" vAlign="top"> <P><BR> Sati&nbsp;ilemi baaryla tamaland.<BR> Devam etmek&nbsp;iin <asp:HyperLink id="link1" runat="server" NavigateUrl="Default.aspx">tklaynz</asp:HyperLink></P> </TD> <TD width="150" bgColor="#0099ff" vAlign="top">

212 <uc1:yan id="Yan1" runat="server"></uc1:yan></TD> </TR> <TR> <TD bgColor="#99ccff" colSpan="3"> <uc1:Alt id="Alt1" runat="server"></uc1:Alt></TD> </TR> </TABLE> </form> </body> </HTML>

Modl 7:

Modul 9:

Modl 8: ASP .NET ile Kod Gelitirmek

Bu modlde Visual Studio .NET ortam ierisinde ASP.NET uygulamalarnn kullanm yollarn reneceksiniz. Bu modl tamamlandktan sonra: Inline ve Code Behind kod yazmay renecek,

214

Modl 8: Asp.Net ile Kod Gelitirmek

Client Side Server Side olay prosedrlerini renecek, Page Event yaam dngsn tanyacaksnz.

Konu 1: Kod Yazmak

Web Form ierisinde kullanlan kontrollere ait HTML kodlar ve bu kontrollere ait Visual Basic .NET kodlar bulunur. Web Formlarn en nemli zellii ise, tasarm ve kod ara yzlerinin ayr tutulmasdr. Web Forma kod eklemek iin yol izlenir: Mixed Code: Bu metotta web ierii ile kod ayn sayfa ierisinde yazlr. Bu metot pek tercih edilmez nk okunmas ve dzenlenmesi zordur. Inline Code: Web ierii ile kod ayn sayfa ierisinde yer alr. ASP.NET kodu Script etiketi ierisine yazlr. Code-behind: HTML ierii ve Visual Basic .NET kodu tamamen ayr dosyalarda tutulur. Kod dosyasna code-behind sayfas denir. Bu metot Visual Studio .NET ortamnn varsaylan alma eklidir.

Konu: 1

215

Inline Kod Yazmak

Ayn .aspx dosyas iinde HTML kodu ve Visual Basic .NET kodu ayr blmlere yazlr. Blmlerin ayr tutulmas okunabilirlii arttrr. Server tarafl kodlar Script etiketi iersine yazlmaldr ve runat=server zellii belirtilmelidir.
Kod 8.1: Inline Kod Yazmak <%@ Page Language="C#" %> <html> <head> <title>My First Web Form</title> <script runat="server"> private void Page_Load (Sender As Object , e As EventArgs ) { Message.Text = "Inline Kod Yazdk"; } </script> </head> <body> <form runat="server"> <asp:Label id="Message" runat="server" /> </form> </body> </html>

216

Modl 8: Asp.Net ile Kod Gelitirmek

Code-Behind Kod Yazmak

Visual Studio .NET ortamnn kulland varsaylan model code-behind tasarm modelidir. Programlama ve tasarm sayfalar ayr tutularak alma mantna gre ayrm yaplm olur. Code-behind sayfalar, .aspx uzantl sayfann sonuna .cs eklenerek isimlendirilir. Webform1.aspx sayfasnn code-behind sayfas, WebForm1.aspx.cs eklindedir. Form zerinde bir kontrole ift tklandnda code-behind sayfas alr ve o kontrole ait olay iin metot tanmlanr. Code-behind sayfasnn .aspx sayfasyla birlikte alabilmesi iin, .aspx sayfasnn Page bildiriminde, CodeBehind ve Src zelliklerine ilgili deerlerin girilmesi gerekir.
Kod 8.2: WebForm.aspx - Code-behind kod yazmak <%@ Page Language="c#" AutoEventWireup="false" Codebehind="WebForm1.aspx.cs" Inherits="ilkAspNet.WebForm1"%> <HTML> <HEAD> <title>BilgeAdam</title> </HEAD> <body MS_POSITIONING="GridLayout"> <form id="Form1" method="post" runat="server"> <asp:TextBox id="txtAd" runat="server"/> <asp:Button id="btnGonder" runat="server" Text="Gnder"></asp:Button> <asp:Label id="lblMesaj" runat="server"></asp:Label>

Konu: 1

217 </form> </body> </HTML>

Kod 8.3: WebForm.aspx.cs Code-Behind Sayfas using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; public class WebForm1 : System.Web.UI.Page { protected System.Web.UI.WebControls.TextBox txtAd; protected System.Web.UI.WebControls.Label lblMesaj; protected System.Web.UI.WebControls.Button btnGonder; private void Page_Load(object sender, System.EventArgs e) { Response.Write("Selam"); } private void Button1_Click(object sender, System.EventArgs e) { lblMesaj.Text = "Hogeldin " + txtAd.Text.ToString(); }

Codebehind Code-behind sayfasnn ismini temsil eder. Visual Studio .NET platformunun dosyay birletirebilmesi iin gereklidir. Src Code-behind sayfasnn n derleme ileminden gemedii durumlarda bu zellik kullanlr. Code-behind sayfasnn ismini temsil eder.

218

Modl 8: Asp.Net ile Kod Gelitirmek

Konu 2: Client Side(stemci Tarafl) Olay Prosedrleri

Client-side olay prosedrleri, web forma istekte bulunan kullanc bilgisayar zerinde ilenen olaylardr. Kullanc tarafnda oluan bu olaylar, sunucuya hibir bilgi gndermezler. nk istemci tarafndaki Internet taraycs kodu alr ve iler. Client-side olay prosedrleri yalnzca HTML kontrolleri tarafndan kullanlr. Client-side olay prosedrleri hibir zaman sunucu kayna kullanmaz. rnein SQL Server veritabanna erimek iin client-side kod kullanlamaz. Client-side olay prosedrlerini, istemci tarafnda ksa zamanda olumas istenilen olaylar iin kullanlr. rnein, metin kutusuna girilen deerin doruluunu kontrol etmek iin client-side kod kullanlabilir. Client-side kodlar <Script> bloklar ierisinde tanmlanr. rnekte JavaScript ile istemci tarafl kod tanmlanmaktadr.
<SCRIPT language=JavaScript> </SCRIPT>

Konu: 1

219

Konu 3: Server Side(Sunucu Tarafl) Olay Prosedrleri

Server-side olay prosedrleri, sunucu zerinde alan olaylardr. Server-side olay prosedrleri client-side olay prosedrlerinden olduka gldr. Server-side olay prosedrleri, web sunucusu zerinde bulunan derlenmi kodlardan oluur. Web ve HTML server kontrolleri tarafndan oluturulan olaylarn, ilenmesinde kullanlr. Client-side olay prosedrleri sunucu kaynaklarn kullanamazken, server-side olay prosedrleri sunucu kaynaklarn kullanr. Server-side olay prosedrleri iin aadaki tanmlama yaplr.
<SCRIPT language=c# runat=server>

Client-side olay prosedrleri ile fare ve klavye olaylarna kod yazlabilir. Serverside olay prosedrleri Click ve Change gibi olaylar iin kullanlr. Fare ve klavye olaylar gibi ok sk gerekleebilecek olaylar desteklenmez.

220

Modl 8: Asp.Net ile Kod Gelitirmek

Olay Prosedrleri Oluturmak

Visual Studio .NET ierisinde server-side olay prosedrleri iki adm ile oluturulur. Birinci adm olay retecek kontrolu web form zerine eklemektir. kinci adm ise code-behind sayfasna olay prosedurn eklemektir. Olay prosedrleri kontrolun ID zelliine girilen deerden faydalanarak oluturulur. Handles anahtar szc kontroln hangi olay ile ilikilendirileceini belirler. Handles anahtar szc ile tek bir olay iin birden fazla olay prosedr oluturulabilir. rnekte Web form ierisine btn1 isminde bir button yerletirilmitir. Eklenen btn1 kontrolunun, retilen HTML kodu ve code-behind sayfasna eklenen olay prosedr kod 8.4 belirtilmitir.
Kod 8.4: Button Kontrolne Click Olay ile likilendirmek <asp:Button id=btn1 runat=server/> ... protected System.Web.UI.WebControls.Button btn1 private void btn1_Click(object sender, System.EventArgs e) { // } Server olay prosedrlerinin almasn salamak iin kontrollerin WithEvents

anahtar szc ile tanmlanmas gerekir.

Konu: 1

221

Olay prosedrlerine iki parametre girilmelidir.


Sender: Olay tetikleyen kontrol nesnesidir. EventArgs: Olaya zg parametreleri ieren nesnedir.

Olay Prosedrlerinde Kontrollerle Etkileim


Web uygulamalarnda, genellikle kontrollerden veri alma ve kontrollere veri gnderme ilemlerine ihtiya duyulur. Server-side olay prosedrleri bu tr zor ilemlerin kolayca yaplmasn salar. rnekte txtAd isimli metin kutusuna girilen deer lblMesaj isimli etikete yazdrlmaktadr.
Kod 8.5: Olay prosedrleriyle almak <asp:TextBox id=txtAd runat=server /> <asp:Button id=btn1 runat=server/> <asp:Label id=lblMesaj runat=server /> private void Page_Load(System.Object sender, System.EventArgs e) { Button1.Click +=new EventHandler(btn1_Click); } private void btn1_Click (ByVal sender As System.Object, _ ByVal e As System.EventArgs) { string mesaj = Merhaba + txtAd.Text.ToString(); lblMesaj.Text = Mesaj; }

222

Modl 8: Asp.Net ile Kod Gelitirmek

Konu 4: Sayfa Yaam Dngs

Bir ASP.NET sayfas belirli olaylar sras ile alr. Bu sraya Sayfa Yaam Dngs denir Bu dng olaylar aadaki srada gerekleir. 1- Page_Init (Page Initialize Sayfann olumaya balamas): Bu aamada sayfa balatlr ve sayfadaki kontroller oluturulur. 2- Page_Load (Sayfann yklenmesi): Bu olay, sayfa yklendii zaman tetiklenir. 3- Control Events (Kullanc kontrol olaylar): Click ve Change olaylardr. Bu olaylar kontrollerin tklanmas veya kontrol deerlerinin deiimi ile tetiklenir. TxtAd_Changed ve Btn1_Click gibi. 4- Page_Unload (Sayfann Kapanmas): Bu olay, sayfa kapand zaman tetiklenir. Page Event yaam dngs sonlandnda sayfaya ait bilgiler hafzadan silinir. Kontrol olaylarnn ou, sayfa sunucuya geri gnderilene kadar gereklemez. rnein Click olay ile form sunucuya gnderilmeden Change olaylar gereklemez.

Konu: 1

223

Response.Redirect

Kullancy bir sayfadan baka bir sayfaya ynlendirmek iin kullanlr. HyperLink kontrol gibi sayfalar arasnda dolamay salar. Parametre olarak gidilecek sayfann adresini belirtilir. rnekte Response.Redirect gerekletirilmektedir.
Kod 8.6: Response.Redirect private void ListBox1_SelectedIndexChanged(object sender, System.EventArgs e) { } Response.Redirect(ListBox1.SelectedValue);

metodu

ile

ynlendirme

ilemi

<asp:ListBox id="ListBox1" runat="server" AutoPostBack="True"> <asp:ListItem Value="http://www.yahoo.com">yahoo </asp:ListItem> <asp:ListItem Value="http://www.google.com">google </asp:ListItem> </asp:ListBox>

224

Modl 8: Asp.Net ile Kod Gelitirmek

Postback lemleri

Sunucuya veri gnderme ilemine postback denir. rnein Button kontrol tklannca otomatik olarak sunucuya veri yollanr. Varsaylan olarak veri yollayan tek kontrol Button kontroldr. Dier kontroller iin AutoPostBack zelliinin True yaplmas gerekir. rnekte DropDownList kontrolunun AutoPostBack zelliine True deeri girilmitir. Bu durum liste kutusundan seilen deerin sunucuya gnderilmesini salar.
Kod 8.7 DropDownList Kontrolunun Sunucuya Gnderilmesi <asp:DropDownList id="DropDownList1" runat="server" AutoPostBack=True> <asp:ListItem>Trke </asp:ListItem> <asp:ListItem>ngilizce</asp:ListItem> </asp:DropDownList> <asp:TextBox id=mesaj runat=server/>

private void DropDownList1_SelectedIndexChanged(object sender, System.EventArgs e) { mesaj.Text = DropDownList1.SelectedItem.Value; }

Konu: 1

225

Page.IsPostback
Page Load olay, sayfa yklendii zaman gerekleir. Sayfaya yaplan her

istekte Page Load olay iindeki kodlar alr. Ayn sayfann her seferinde yeniden altrlmas, istenilen bir durum deildir.
Page.IsPostback zellii ile, sayfann Load olay iindeki kodlar sadece bir kez altrlr. Bylece sayfa yeniden arldnda bu ilemler gereklemez.

rnekte Page.IsPostBack zelliinin kullanm gsterilmektedir.


Kod 8.8: Page.IsPostBack private void Page_Load(System.Object sender, System.EventArgs e) { //Put user code to initialize the page here if(!Page.IsPostBack) { //sadece sayfann ilk yklendiinde alan istenilen alan } //sayfa her yklendiinde allan alan }

Modl zeti

226

Modl 8: Asp.Net ile Kod Gelitirmek

21. 22. 23. 24. 25.

Web form ierisinde kod yazmak iin hangi yntemler kullanlr? Code-Behind kod yazma tekniini aklayn? Sayfa yaam dngsn aklayn? Response.Redirect niin kullanlr? Page.IsPostBack niin kullanlr?

Lab 1: ASP .Net ile Kod Gelitirmek

Bu uygulamada, Code Behind ve Inline kod yntemlerinin kullanmn reneceksiniz. Ayrca istemci tarafl skriptlerin yazlmn reneceksiniz. Bu lab tamamlandktan sonra: Code Behind kod yazma yntemini renecek, Inline kod yazma yntemini renecek, stemci tarafl skriptlerin kullanmn reneceksiniz.

Web uygulamas oluturmak


Bu uygulamada kullanlacak ASP.Net Web Application projesini oluturun. 14. File mens altndan New alt mensn iaret edin ve Project komutunu tklayn. 15. New Project ileti kutusundan ASP.Net Web Application ablonunu sein. 16. Location metin kutusuna http://localhost/AspCode yazn.

Konu: 1

227

17. Enter butonu tklayn.

Web Form eklenmesi


AspCode projesine Test isminde yeni bir web form ekleyin. Form zerine, tablodaki kontrolleri ekleyin belirtilen zelliklerini ayarlayn.
Kontrol Kontrol smi Button btnCodeBehind Button btnInline <INPUT type="button"> zellik Text Text Value Deer

Code Behind Inline Java script

Kodlarn yazlmas
1- btnCodeBehind kontrolunun Click olayna Code Behind yazan kodu yazin. Bu kod code behind yntemi ile btnCodeBehind kontrolunun click olayn altrr.
Response.Write("Code Behind")

2- Test web formunun HTML blmne aadaki kodlar yazn. Bu kod, inline kod yntemi ile btnInline butonunun Click olayn altrr. Bu kodu <Body>..</Body> etiketleri arasna ekleyin.
<script language="c#" runat="server"> private void btn_Click(object sender, System.EventArgs e) { Response.Write("Inline");

228 } </script>

Modl 8: Asp.Net ile Kod Gelitirmek

3- Test web formunun HTML blmne aadaki kodlar yazn. Bu kod, Java Script ile istemci tarafl kod tanmlamaktadr. . Bu kodu <Head>..</Head> etiketleri arasna ekleyin.
<script language="javascript"> function mesaj() { alert('Hello World') } </script>

Fonksiyonu armak iin <Body>..</Body> etiketleri arasna aadaki kodu ekleyin.


<INPUT style="Z-INDEX: 103; LEFT: 24px; WIDTH: 112px; POSITION: absolute; TOP: 88px; HEIGHT: 24px" type="button" value="Java Script" onclick="mesaj()">

Modul 9:

Modl 9: Web Programlamaya Giri

Web uygulamalarn zenginletiren birok programlama dili bulunur. Web sayfalarn gelitirmek iin HTML dilinin kullanlmas gerekir. Sadece HTML kullanm statik (sabit) sayfalar gelitirmek iin yeterlidir. Ancak ierii kolayca ekillendirmeyi salayan CSS dili, istemci tarafl alan kodlarn yazlmas iin Javascript VBScript dilleri de Web uygulamalarn zenginletirir.

230

Modl 9: Web Programlamaya Giri

Bu modl tamamlandktan sonra: HTML nesnelerini renecek, Javascript ve VBScript dilleri ile istemci tarafl kod yazabilecek, CSS ile sayfalara zel stiller kazandracaksnz.

Konu 1 : Web Programlamaya Giri


stemci ve sunucu tarafnda alan eitli teknolojiler mevcuttur. Bir Web sayfas tasarlamak iin kullanlan ortak dil HTML dilidir. Ancak HTML sayfalar iinde, sunucu tarafnda ve kullanc tarafnda alabilen ayr web programlama dilleri kullanlabilir. rnein JavaScript, kullanc tarafnda kodlama imkan sunarken, CGI, ASP, Php, Perl, ASP.NET gibi web programlama dilleri, sunucu tarafnda kod yazma imkan sunar.

Konu 2: HTML

HTML (Hyper Text Markup Language), bir iaretleme dilidir. stemci tarafnda alan Internet taraycs tarafndan okunur, yorumlanr ve alnan iaretler neticesinde ekrana ilgili grnt yanstlr. HTML, HTTP (HyperText Transfer Protocol) ile bir arada alr. Bu iaretleme dili ile oluturulmu dkmanlar yalnzca istemci tarafnda alr.

Konu: 1

231

HTML dkmanlarnn tm ASCII karakterlerinden oluur ve herhangi bir metin editrnde yazarak oluturulabilir.

HTML Yaps
HTML dilini oluturan bileenler
Tag (etiket) Attribute (nitelik) Value (deer) olarak tanmlanr.

HTML kodlarnn temeli etiketlerdir. Bir etiket, HTMLe yaplmas istenen bir olayn bildirimini temsil eder. Etiketlerin ierisine attribute ad verilen deerler girilir. Etiketlere ait deiik zellikler, attribute nesnelerinde saklanr. Attribute deerleri, olaylara ait ayrntlar tutar. Value ise, bir attribute deerinin davranaca tarz belirler.

Tag

Etiketler (Tag), <> iaretleri arasnda yazlr. Semboller ve etiket arasnda

boluk yoktur.
<Html>

Bir etikete ait ama ve kapatma ifadeleri vardr. Ama ifadesi <Html>,kapatma ifadesi ise </Html> eklinde bildirilir. Yani alan bir etiket, ayn isim bana / iareti getirilerek kapatlr. rnein <P> etiketi,bir paragraf amaya yarar. </P>

232

Modl 9: Web Programlamaya Giri

Kapatma ifadesi kullanldnda ise bu kapatma ifadesinin kullanld yere kadar olan blm paragrafn , iine dahil edilir. Ancak baz istisnalarda vardr. <Img> ve <Br> etiketi gibi baz etiketler iin bir kapatma ifadesi yoktur. HTML etiketlerinde byk harf, kk harf duyarll yoktur.

Attribute

znitelikler (Attribute), bir etikete ait zellikleri belirler. <html> etiketi ve </html> kapatma etiketi, HTML belgesinin balad ve bittii yeri belirtir ve Attribute deerine ihtiyac yoktur. Attribute olmadan alan etiketlerin

yan sra, attribute ile birlikte alan etiketler de vardr. <body> etiketi, grntlenecek alann balangcn ve bitiini bildirir. Bu etiket, hibir attribute tanmlanmadan alabilir. Grntlenecek alana bir arka plan rengi tanmlamak istediinizde bgcolor veya grntlenecek yaz tipini tanmlamak istediinizde text zniteliklerine deerler atanmaldr.
</body> kapatma ifadesi ile

Aadaki rnekte siyah zemin zerine beyaz yaz yazlmaktadr.


<Body bgcolor=#000000 text=#ffffff>

Konu: 1

233

Value

Bir olayn ne ekilde gerekleecei value ile bildirilir. rnein bir paragraflk metinin hizalanmas, <DIV> etiketi kullanlarak yaplr. DIV etiketinin align attribute deeri, left, right, center ve justify deerlerinden birini alr.

234

Modl 9: Web Programlamaya Giri

HTML Belgesi Nasl Oluturulur?

HTML belgeleri tag, attribute ve value bileenleri kullanlarak oluturulur. Bir HTML belgesi en basit ekilde kod 9.1de gsterilmitir.
Kod 9.1:Temel HTML Belgesi <html> <head> <title> Temel HTML Belgesi </title> </head> <body> Sayfada kullanlacak herey burada bildirilir. </body> </html> <html></html>, Taraycya HTML belgenin balad ve bittii alan bildirir. <head></head>, Taraycya HTML belge hakknda bilgi verir. <title> ve <meta> etiketleri <head></head etiketleri arasnda yer alr. <title></title>, belgenin balk yazsn tutar. <body><body>, belgenin gvde blmdr. Sayfada grntlenmesi istenen

tm deerler burada bildirilir.

Konu: 1

235

En Sk Kullanlan Etiketler

Balklar
Bir sayfadaki yaznn balklarn standart ekilde tutmak iin HTML balklar kullanlr. Balklar 1 ve 6 aras deerler alr.
Kod 9.2: HTML Balk Etiketleri <html> <head> <title>Balk Etiketleri</title> </head> <body> <h1>html balklar</h1> <h1>Bu balk H1 tag'i ile <h2>Bu balk H2 tag'i ile <h3>Bu balk H3 tag'i ile <h4>Bu balk H4 tag'i ile <h5>Bu balk H5 tag'i ile <h6>Bu balk H6 tag'i ile </body> </html>

olutu</h1> olutu</h2> olutu</h3> olutu</h4> olutu</h5> olutu</h6>

Paragraf ve Satr Sonu


<p>... </p> etiketleri arasnda paragraflar tanmlanr. Paragrafta, satr sonunu

bildirmek iin <br> etiketi kullanlr.

236

Modl 9: Web Programlamaya Giri

Sayfalara Balant Vermek


Birden fazla sayfay birbirine balamak iin sayfa balantlar kullanlr. Bir sayfada baka bir sayfaya balant verebilmek iin
<a> etiketi yazlr, <a ifadesinden sonra href attribute deerine balant verilecek

sayfann adresi girilir,


Target attribute deerine balant sayfasnn nasl bir sayfada grntlenecei bilgisi girilir. (Varsaylan olarak _self deeri alnr. Yani kendi sayfasnda alr.) > karakteri ile <a> etiketi sonlanr. Balantnn almas iin tklanmas gereken metin girilir.

Ve metin bitimine </a> etiketi yerletirilir.

Kod 9.3: Sayfa iinde Balant Vermek <a href="http://www.bilgeadam.com" target="_blank">BilgeAdam BTA</a>

Listeler
Belge iinde metine liste grnm vermek iin listeleme etiketleri kullanlr. Srasz ve sral listeler oluturulabilir. Srasz listeler, <ul>...</ul> etiketleri arasnda oluturulur. Her bir liste nesnesi iin <li> etiketi kullanlr. Sral listeler, <ol>...</ol> etiketleri arasnda oluturulur. Her bir liste nesnesi iin <li> etiketi kullanlr.
Kod 9.4: Liste Oluturmak <h4> Sral liste</h4> <ol> <li>nesne 1 <li>nesne 2 </ol> <h4>Srasz Liste</h4> <ul> <li>nesne 1 <li>nesne 2 </ul>

Sral ve srasz listelerin dnda programc tarafndan tanml listeler oluturulabilir. <dl>...</dl> etiketleri arasnda listelenecek metinler girilir. Bu etiketler arasna, bal tutan <dt> etiketi ve balk altnda grntlenecek metini tutan <dd> etiketi yerletirilir.

Konu: 1

237 Kod 9.5: Tanml Liste Oluturmak <dl> <dt> Balk 1: <dd> Balk 1'e ait aklama bu paragrafta girilir.Balk 1'e ait aklama bu paragrafta girilir. <dt> Balk 2: <dd> Balk 2'ye ait aklama bu paragrafta girilir. Balk 2'ye ait aklama bu paragrafta girilir. </dl>

NOT: Listeleme ifadeleri i ie kullanlabilir.

Resim Grntleme
HTML sayfalarnda resim grntlemek iin <img> etiketi kullanlr. src attribute deeri, grntlenecek resmin adresini tutar. Kod 9.6da <img> kullanm gsterilmektedir.
Kod 9.6: Resim Grntlemek <a href="http://www.bilgeadam.com"> <img src="c:\resimler\resim1.jpg"> </a> img etiketinin sonlandrma ifadesi yoktur.

Tablolar
Satr ve stnlardan oluan yaplara tablo denir. Bir Web sayfas ierisinde, grnm belirli snrlarda tutmak iin tablolardan yararlanlr.
<table>...</table> etiketleri ile tablonun balang ve biti alan bildirilir. Bu

etiketler arasndaki, <tr> satrlar, <td> ise stunlar temsil eder. Tablonun
align , border, width, height bgcolor attribute deerleri ile tabloya

eitli nitelikler verilebilir. Align attribute nesnesi center, left veya right hizalama deerini alr. Border tablo kenarlklarnn kalnlk deerini tutar.
Kod 9.7: 4x3 Boyutlarnda Tablo oluturmak <table width="140" border="2" bgcolor="#6633CC" align="left"> <tr> <td>1. satr 1. stun</td> <td>1. satr 2. stun </td> <td>1. satr 3. stun </td> </tr> <tr> <td>2. satr 1. stun </td> <td>2. satr 2. stun </td> <td>2. satr 3. stun </td> </tr> <tr>

238 <td>3. <td>3. <td>3. </tr> <tr> <td>4. <td>4. <td>4. </tr> </table> satr 1. stun </td> satr 2. stun </td> satr 3. stun </td> satr 1. stun </td> satr 2. stun </td> satr 3. stun </td>

Modl 9: Web Programlamaya Giri

Konu 3: Script Nedir?

HTML dosyas iine gmlm kodlara script denir. Yorumlanmas iin internet taraycsna ihtiya vardr. HTML dilinin karlayamad baz ihtiyalara zm retmek iin scriptler kullanlr.

Konu: 1

239

JavaScript

JavaScript dili, Netscape firmas tarafndan oluturulmutur. Yazm biimi olarak C dili esas alnarak tasarlanmtr. Ama olarak HTMLin yetmedii yerlere scriptler ile destek vermesi dnlmtir. Web programclna dinamik bir yap kazandran JavaScript, istemci tarafnda alr. Kullanm giderek yaygnlaan JavaScript, daha sonra Microsoft firmasnn Internet Explorer web taraycsnda da kullanlabillir hale geldi. Gnmzde tm tarayclarn destekledii bir script dilidir. JavaScript kodlar yazmak iin Notepad gibi bir metin editr yeterlidir. Kodlar <script>...</script> etiketleri arasnda yazlmaldr. Bu kod alan iinde yorum satrlar iin // ve /* ... */ ifadeleri kullanlabilir. Sadece bir satr yorum satr yaplacaksa // ifadesi kullanlr.
// bu satr yorum satrdr.

Birden fazla satr yorum satr yaplacaksa, satrlarn balad yere /*, bittii yere */ ifadeleri yerletirilir.
/* yoruma alnan 1. satr 2. satr ...

*/

JavaScript kodlar HTML sayfalar iine <head> etiketlerine gml olarak veya .js uzantl dosyalara referans gnderilerek HTML iinden arlabilir.

240

Modl 9: Web Programlamaya Giri

JavaScript dilinde nesneler, nesnelere uygulanan olaylar ve olaylara ilikin grevler vardr. Bir nesneyi tklamak, zerine gelmek, zerinde dolamak gibi ilemler, sayfa ile kullancnn etkileimli olarak almasn salar. JavaScript, ayn bir programlama dilinde olduu gibi deikenlere, klavyeden bilgi alma, ekrana kt verme ilemlerine, koul ve dng yaplarna, fonksiyon, nesne ve olay kavramlarna sahiptir.
Kod 9.8: rnek JavaScript <html> <head><title>onClick</title> <script language="javascript"> function merhaba() { alert ("beni tikladiniz"); } </script> </head> <body> <input type="button" name="tikla" value="tikla" onClick=merhaba()> </body> </html> script etiketinin language attribute deeri ile kullanlacak script dili belirtilir. Javascript kullanlmas iin burada language=javascript bildirimi yaplr. Kod 9.9: rnek JavaScript <html> <head> <title>JavaScript rnei</title> </head> <body> <br> Bu yaz html ile yazld. <br> <script language="JavaScript"> document.write("te bu ise JavaScript ile yazld!") </script> <br> Bu yaz yine HTML ile yazld. </body> </html>

Buradaki script ifadesi head etiketleri arasnda bir fonksiyon olarak deil, body etiketleri arasnda satr halinde kullanlmtr.

Deikenler
var anahtar szc ile yeni bir deiken oluturulur. Tr bilgisi saklanmaz.

Saysal deerler verildiinde ilem yapma yeteneine sahip olurlar. ift trnak ierisinde deer verildiinde ise metin ifadesi olarak anlalr.

Konu: 1

241

Dikkat edilmesi gereken nokta deikenlerin kk byk harf duyarl olmasdr. Baz tarayclar iin deiken isimlerinde bu duyarllk gz nnde bulundurulmazken, ou taraycda kk byk harf duyarllna dikkat edilir. Bu nedenle her deiken ad bu durum gz nnde bulundurularak verilmelidir.
var var var var var deger1; deger2=20; deger3=30; ay=Mays; yil=2005;

var degerToplam=deger2+deger3; var tarih=ay+yil;

Satrn sonunda sonlandrma karakteri olarak ; kullanlr. degerToplam isimli deikende 20 ve 30 deerleri toplanarak elde edilen 50 deeri tutulurken, tarih isimli deikende, ay ve yil deikenlerinden gelen metin ifadeleri birletirilir ve Mays2005 deeri oluturulur. Koul Operatr
[koul ifadesi] ? koul_doru_ise : koul_yanl_ise

Deiken tanmlarken aritmetik, karlatrma ve mantksal operatrler kullanlabilir. Bunlara ek olarak C dilinden gelen koul operatrleri kullanlabilir. Bir if deyiminin tek satrda yazlm haline benzeyen bu operatrn kullanm kod 3.1.1de gsterilmitir. Genel kullanm biimi ise
[koul ifadesi] ? koul_doru_ise : koul_yanl_ise

eklindedir.
Kod 9.10: Koul Operatrnn Kullanm var var var var var a=5; b=7; c=14; d=23; e;

e = (a + b < c) ? d : a+b ;

Bu kodda, (a + b < c ) ifadesi ile elde edilen sonuca gre, e deerine d veya a + b deerleri atanr. a + b ileminin sonucu olan 12 deeri, c deerinden kk olduu iin ifade doru olarak sonulanr. Bu durumda d deeri, e deikenine atanr ve e deikeni 23 deerini tar. Bu koulu if deyimi ile yazlabilir.
if (a + b < c) e = d; else

242 e = a+ b;

Modl 9: Web Programlamaya Giri

Operatrler
JavaScript operatrleri, Visual Basic .NET dilinde kullanlan operatrlerden biraz farkldr. rnein mod almak iin Mod anahtar szc yerine % mod alma operatr kullanlr. Atama Operatr ( = ) Deikenlere deer atamak iin = karekteri kullanlr. Aritmetik Operatrler Deikenler zerinde aritmetik ilemler yapmak iin tanmlanm operatrlerdir.
Operatr + * / % ++ -Aklama
Saysal deikenleri toplar. String deikenlerini birbirine ekler. Saysal deikenlerde karma ilemi yapar. Saysal deikenlerde arpma ilemi yapar. Saysal deikenlerde blme ilemi yapar. Saysal deikenlerde mod alma ilemini yapar. Saysal deikenlerde artma ilemini yapar. Saysal deikenlerde azalma ilemini yapar.

Tablo 9.1: Aritmetik Operatrler

Visual Basic .NET aritmetik operatrlerinden farkl olan ++ ve -- operatrleri, C dili operatrlerindendir. Deikeni bir arttrma veya bir azaltma yeteneine sahiptir. Prefix (deiken isminin nnde) ve subfix (deiken isminin arkasnda) olmak zere iki kullanm ekli vardr. Deikenin prefix kullanm kod 9.11 de gsterilmektedir.
Kod 9.11: Prefix ++ operatr var x = 5; // x deikeni bir arttrlr ve ekrana 6 deeri yazlr document.write(++x);

Konu: 1

243

Deikenin subfix kullanmnda ise nce deer alnr, ak bir sonraki satra getikten sonra deikenin deeri bir arttrlr.
Kod 9.12: Subfix ++ operatr var x = 5; /* x deikeni nce yazlr, sonra bir arttrlr. Yani ekrana 5 yazlr. */ document.write( x++); // Ekrana 6 deeri yazlr. document.write(x);

Karlatrma Operatrleri JavaScript kodlar ierisinde de karlatrma ilemleri yaplabilir. Ancak bu operatrler Visual Basic .NET karlatrma operatrlerinden biraz farkldr.
Operatr == != Aklama
Eit midir? operatr. ki deer de birbirine eit ise true sonucu verir. Eit deil midir? operatr. ki deer birbirine eit deilse true sonucunu verir. Kk operatr. Sol taraf deeri, sa taraf deerinden kkse true sonucunu verir. Byktr operatr. Sol taraf deeri, sa taraf deerinden byk ise true sonucunu verir. Kk eittir operatr. Byk eittir operatr.

<

>

<= >=

Tablo 9.2: Karlatrma Operatrleri

ki deerin eitliinin karlatrlmas iin == operatr kullanlr.


if (a == b) { document.write(a ile b deikeni eit) } ki deerin eitsizliinin karlatrlmas iin != operatr kullanlr. if (a != b) { document.write(a ile b deikeni eit deildir) }

Mantksal Operatrler Mantksal operatrler ise Visual Basic .NET mantksal operatrlerinden tamamen farkldr.

244 Operatr && Aklama

Modl 9: Web Programlamaya Giri

And (ve) operatr. ki tarafta


belirtilen ifadeler true ise, sonu olarak true deerini dndrr.

||

Or (veya) operatr. ki tarafta


verilen ifadelerden en az birinin doru olmas durumunda true deerini dndrr.

Not operatr: Koulun yanl olmas durumunda true deerini verir.

Tablo 9.3: Mantksal Operatrler

Visual Basic .NET programlamada And operatrnn karl && operatrdr. Or operatrnn karl ise || operatrdr. Bir deerin deili anlamna gelen Not operatrn karl ise ! operatrdr.

Klavyeden Bilgi Alma ve Ekrana kt Verme


JavaScript dilinde kullancdan bilgi almak iin formlarn dnda promt komutu kullanlr. promt komutu ile kullancdan bilgi alrken ayr bir pencere alr.
prompt(soru, cevap iin rehber ifade); Kod 9.13: Prompt ile kullancdan deer almak var sehir; sehir=prompt(Yaadnz ehrin trafik kodunu giriniz, stanbul iin 34, Ankara iin 6 gibi);

JavaScript dilinde HTML sayfasna yaz yazdrmak iin write komutu kullanlr.
document.write(Yazlmak istenen deikene ilikin aklama, degisken);

Grld gibi write komutu document fonksiyonuyla birlikte kullanlr.

Koul ve Dng Yaplar


Programlamann akn ynlendiren koul yaplar ve dnglerdir. Dngler birden fazla gerekletirilecek ilemlerin blok halinde yazlmasn salar.
if koul ifadesinin genel yaps if ( koul ) // koul doru ise alacak ifade // koul yanl ise akn devam edecei alan

Konu: 1

245

Koulun doru olmas halinde yaplacak ilemler bir satrdan fazla yer tutuyorsa, bu satrlar {} parantezleri ile gruplanr. Visual Basic .NET dilindeki gibi End if ifadesi kullanlmaz.
if (koul) { //koul doru ise } else { //koul yanl ise }

Tekrarlanan belirli bir ilemi yaptrmak iin kullanlan dnglerin JavaScript dilindeki kullanm tamamen C dilinin yapsna gre tasarlanmtr. for dngsnn genel kullanm biimi;
for(balang_deeri; dng_ifadesi; deiecek_deiken_ad) { //yaplacak ilemler }

eklindedir.
Kod 9.14: For Dngsnn Kullanm var a; var b = 10; for (a = 1; a <= b; a++) { document.write( a , . say, <br>); }

while dngsnn yaps


while ( dng_koul_ifadesi ) { //art doruysa yaplacak ilemler } //art doru deilse yaplacak ilemler

Visual Basic .NET dilindeki Select Case dngsne karlk olarak JavaScript dilinde switch-case ifadesi vardr. Genel kullanm:
switch (parametre) { case ifade1: // ifade1 koulu doru ise yaplmas istenenler break; //break ile dier koullarn da almas //engellenir ve dngden klr. case ifade2: //ifade2 koulu doru ise yaplmas istenenler break; }

Fonksiyonlar
JavaScript dilinde, kodlarn yeniden kullanlabilmesi iin kullanlr. Genel kullanm:

246

Modl 9: Web Programlamaya Giri

function fonksiyon_ismi(parametre1, parametre2) { //yaplacak ilemler }

Fonksiyon iinde hesaplanan deer, return ifadesi ile geri dndrlr.


Kod 9.15: JavaScript ile Toplama function topla(deger1, deger2) { var sonuc= deger1+deger2; return sonuc; }

Topla fonksiyonuna gnderilen deger1 ve deger2 deikenleri toplanarak, fonksiyon iinde oluturulan sonuc deikenine atanr. return sonuc; ifadesi ile topla fonksiyonunda elde edilen sonu geri dndrlr.

JavaScript Nesneleri
JavaScript iinde baz ilemler, baz nesnelerin fonksiyonlar arlarak yaplr. rnein document.write komutu, aslnda document nesnesinin write metodunu arr. Window Nesnesi Genel pencere zelliklerini tutan nesnedir. Pencere ama ve kapama ilemleri iin bu nesne kullanlr. Genel kullanm:
window.open( url ,pencere_ismi,pencere_ozellikleri); window.close(); Open komutu ile yeni bir pencere alrken, close komutu ile pencere kapatlr. Yeni bir pencere amak iin open komutuna ilk parametrenin girilmesi zorunludur. Pencere_ismi, birden fazla pencere ile ilem yapld durumlarda kullanlabilir. Pencereye ait zellikler tablo 9.4te belirtilmitir. zellik Menubar Toolbar Location Status Aklama
Menu ubuunun grntlenmesini salar. Ara ubuun grntlenmesini salar. Adres ubuunun grntlenmesini salar. Durum ubuunun grntlenmesini salar.

Konu: 1

247 Scrollbars Resizable Width Height Left


Kaydrma ubuklarnn grntlenmesini salar. Penceresinin boyutlandrlmasn salar. Alan pencerenin pixel geniliini belirtir. Alan pencerenin pixel yksekliini belirtir. Ekrann sol noktasna ile pencere arasndaki uzakl verir. Ekrann st noktasna ile pencere arasndaki uzakl verir.

Top

Tablo 9.4: Pencere zellikleri

Kod 9.16: Yeni bir pencere ama window.open("http://www.bilgeadam.com", "bilgeadam" , "menubar=no, toolbar=no, scrollbars=yes, location=yes, width=300, heigt=300";)

Internet taraycs ile daha nce ziyaret edilmi sayfalara tekrar ulaabilmek iin window.history.go(-1) komutu kullanlabilir. -1 ifadesi ile bir nceki sayfaya gidilir. Say arttrlarak daha nceki sayfalara da gidilebilir. Internet taraycsnn en alt ksmnda bulunan status penceresine erimek iin
window.status komutu kullanlr. window.status =JavaScript reniyoruz!;

Navigator (tarayc) Nesnesi JavaScript, tarayclar da bir nesne olarak deerlendirir. Kullancnn taraycsna ilikin bilgileri almak iin tablo 3.1.5te belirtilen deikenler kullanlabilir.
Deiken smi appname appversion appCodeName userAgent Aklama
Tarayc ad Tarayc versiyonu Taraycnn kod ad Taraycnn sunucuya kendini tantrken verdii isim.

Tablo 9.5: Navigator (Tarayc) Nesnesinin Deikenleri

Kod 9.17: Tarayc nesnesi ile bilgi almak <html>

248

Modl 9: Web Programlamaya Giri

<head> <title>Browser'mz tanyalm</title> <METAcontent=text/html;CHARSET=iso-8859-9 httpequiv=Content-Type> <script language="Javascript"> function Tarayici() { var browseradi=" "; browseradi +="Browser:"+navigator.appName +"\r ; browseradi +="Surumu:"+navigator.appVersion +"\r ; browseradi +="Kodadi:"+navigator.appCodeName+"\r ; browseradi +="Useragent:"+navigator.userAgent+"\r ; alert(browseradi); } </script> </head> <body onLoad="Tarayici()"></body> </html>

Olaylar
Bir Web sayfas zerinde kullancnn her trl hareketi kontrol edilebilir. Bir kontroln zerine gelmesi, dolamas ve zerinden ayrlmas gibi hareklere olay denir. Bu olaylar ise onClick, onMuoseOver, onMouseOut,
onSubmit,onReset, onChange, onLoad, onUnLoad, onError, onAbort, onFocus, onBlur olarak belirtilebilir.

onClick Internet sitelerinin ounda en sk kullanlan JavaScript olaydr. Sayfa zerinde bir nesnenin fare ile tklanp braklmas sonucunda gerekleen olaydr. Link, button ve resim nesneleri tklanarak onClick olay tetiklenebilir. Nesnelerin etiketlerinde ise onClick olaylarn tetikleyen fonksiyonlarn ismi bildirilmelidir.
Kod 9.18: onClick Olay function tikla() { alert(Tklama ilemi gerekleti); } <input type="button" name="tikla" value="tikla" onClick=tikla()>

Butona tklanp brakldnda, onClick olay tetiklenir ve bu olayla ilikilendirilen tikla fonksiyonu devreye girer. alert komutu ile ekrana bir mesaj kutusu kar. Ayrca onDblClick, ift tklanma olayn tetikler. onMouseOver, onMouseOut Fare nesnenin zerindeyken onMouseOver, fare nesne zerinden ayrlnca onMouseOut olaylar devreye girer.

Konu: 1

249 Kod 9.19: onMouseOver ve onMouseOut Olay function nesneUzerinde() { window.status="u anda nesne zerindesiniz."; } function nesneDisinda() { window.status="nesnenin dna ktnz." ; } <a href="http://www.google.com" onMouseOver = nesneUzerinde() onMouseOut = nesneDisinda()> Google </a>

onSubmit Web safyalarnda ziyaretinin forma bilgi girip sunucuya gndermesi durumlarnda onSubmit devreye girer. Gnderilecek forma girilen verilerin uygunluunun kontrol bu olayn tetikledii fonksiyonlara yaptrlabilir.
Kod 9.20: onSubmit Olay function dogrula() { confirm (Formu doldurduysanz OK'i tklaynz'); } <form action="mail.pl" method="post" onSubmit="dogrula()"> confirm komutu, kullancya Ok ve Cancel butonlarndan oluan bir diyalog penceresi aar.

onReset Form iinde kullanlan tm metin alanlarnn temizlenmesini salar. Doldurulan formda yanllk olduunda bu olay tetiklenir. Kullancya onay penceresi kartmak iin de kullanlabilir.
Kod 9.21: onReset Olay function sil() { return confirm('Silmek istediginize emin misiniz?'); } <form onReset="return sil()"> <input type="text" name="mail"> <input type="reset" value="sil"> </form>

onChange Bilgi girii yaplan alanlarda, deiikliin gerekletii bilgisi onChange olay ile tetiklenir.

250 Kod 9.22: onChange Olay function degisti() { alert(Seimi deitirdiniz); }

Modl 9: Web Programlamaya Giri

<form method="post"> <p> <select name="degistir" size="1" onChange="degisti()"> <option>Istanbul <option>Ankara <option>Antalya </select> </form>

Sunulan seeneklerden herhangi biri seidiinde uyar penceresi kacaktr. onLoad, onUnLoad
onLoad olay sayfaya giri yapldnda gerekleir. onUnLoad olay sayfadan

kldnda gerekleir.
Kod 9.23: onLoad ve onUnLoad Olay function giris() { alert(Sayfaya Giri Yaptnz!"); } function cikis() { alert("Sayfadan ktnz.."); } <body onLoad="giris()" onUnload="cikis()"> </body>

onError, onAbort Ziyaret edilen sayfadaki nesneler, eitli nedenlerden dolay tam olarak yklenememi olabilir. Genellikle resim nesnelerinin yklenmesinde problem kabilir. Bu tr durumlar ziyaretiye bildirmek iin onError veya onAbort olaylar kullanlr.
Kod 9.24: onError ve onAbort Olay <img src="resim.gif" onError="alert(Resim dosyas yklenemedi')">

onFocus, onBlur onFocus olay kullanc kontrollerine giri yaplrken gerekleir. OnBlur olay ise ve kullanc kontrollerinden k yaplrken gerekleir.
Kod 9.25: onFocus ve onBlur Olay function dogru() {

Konu: 1

251 document.form1.mesaj.value="Ltfen hata yapmayn!"; } function sor() { document.form1.mesaj.value="isminiz alnd"; } <form name="form1" method="post"> <p><h3>Ltfen isminizi yaznz!</h3></p> <input type="text" size="20" name="isim" onfocus="dogru()" onblur="sor()"> <p> <input type="text" name="mesaj"></p> </form>

VbScript
VbScript , Microsoft tarafndan gelitirilmitir. Ancak, VbScript tm tarayclar tarafndan desteklenmez. Bu nedenle tm tarayclarda alacak script yazlmak isteniyorsa, JavaScript kullanlmaldr. Vbscript dilinin kullanlabilmesi iin script etiketi ierisindeki language zniteliine vbscript deeri atanr.
<script language="vbscript">...</script> Kod 9.26: lk VbScript rnei <html> <body> <script language="vbscript"> document.write("lk VBScript!") </script> </body> </html>

Deiken tanmlamalar dim anahtar szc ile yaplr.


Kod 9.27: Deiken tanmalamas <html> <body> <script language=vbscript"> dim isim isim="Bilge Adam" document.write(isim) </script> </body> </html>

Metot tanmlamas Visual Basic.NET diline benzer. Geriye sonu dndrmeyen metotlar Sub, geriye sonu dndren metotlar ise function anahtar szc ile tanmlanr. Bu tanmlanm metotlar call MetotAd() anahtar szc ile arlabilirler.

252 Kod 9.28: Sub Tanmlamas <html> <head> <script language="vbscript"> sub mySub() msgbox("sub procedure") end sub </script> </head>

Modl 9: Web Programlamaya Giri

<body> <script language=vbscript"> call mySub() </script> <p> sub procedure geri dn deeri tamaz.</p> </body> </html>

Kod 9.29: Function Tanmlamas <html> <head> <script language=vbscript"> function sehir() sehir = "Trabzon" end function </script> </head> <body> <script language=vbscript"> document.write("En sevdiim sehir: " & sehir()) </script> <p> function procedure geri dn deerine sahiptir.</p> </body> </html>

Koul ve dng yaplarnn kullanm Visual Basic .NET dilindeki gibidir.

Konu: 1

253

Konu 4: CSS

CSS (Cascading Style Sheets), HTML sayfalar ierisinde zel stiller tanmlamak iin kullanlr. Sayfann yaz tr, arka plan rengi, link renkleri, nesnelerin sayfa zerindeki yerleimi birer stil eleridir. Bir sitedeki tm sayfalara ayn stili vemek iin CSS dosyalar hazrlanr. Bu CSS dosyalar HTML sayfalarna dahil edilir. Stiller HTML sayfalarna yntem ile dahil edilebilir:
Inline (i) Embedded (gml) Linked (balantl)

(Inline)

Herhangi bir HTML etiketi iinde stil kullanlabilir. rnein paragraf etiketine style=x attribute deeri eklenebilir. Ve o paragrafa zel tasarm zellikleri bildirilebilir.
<p style=font: 12pt arial> Bu paragraftaki tm yazlar arial 12 stilidedir.</p> Gml (Embedded)

Gml stiller, HTML sayfasnn Head etiketi ierinde tanmlanr. Bu stilleri tanmlamak iin <Style>..</Style> etiketleri kullanlmaldr.

254 Kod 9.30: Gml stillerin Tanmlanmas <html> <head> <style> body { background:#ff0000; color:#ffffff; } </style> </head> <body> Krmz zemin zerine beyaz renkle yaz </body> </html> Balantl (linked)

Modl 9: Web Programlamaya Giri

Stil verileri .css uzantl dosyalarda tanmlanr. En gl tasarm zellii balantl stil dosyalarndadr. Tasarm zellikleri bu dosyada tanmlanr ve her sayfa iinden bu stil dosyasna balant verilerek etiketlere gerekli stiller uygulanr. HTML sayfalarda stil dosyas ile balant kurmak iin aadaki tanmlama yaplr. Bu tanmlama head etiketleri ierisinde yaplr.
<link rel=stylesheet href=stil.css type=text/css>

Style Sheetlerin Sz Dizimi


Slide12 Stil nesnelerinin sz dizimi, HTML sz dizimine benzer yapdadr. Stil nesnelerinin belirli ksmlar vardr: Seici (Selector): Atanlan zellikler ve deerleri alr. H1 ve P gibi HTML etiketlerine benzerler. zellik (Property): Bir seiciyi tanmlar. P paragraf etiketine verilen zellikler o seiciyi tanmlar. Kenar boluklar, font ve arka plan deerleri birer zellik esidir. Deer (Value): zellikleri tanmlayan elerdir.

zellikler ve deerler birleerek bir tanm oluturur. Seici ve tanm ise bir kural oluturur. Sayfa dzeni ,kenar boluklar, girinti ve hizalama deerleri kontrol edilerek hazrlanm bir site profosyonel bir grnme sahip olabilir. En ok kullanlan yaz zellik ve deerleri tablo 4.1de listelenmitir.

Konu: 1

255 zellik ve Deer Margin-left Aklama


Sol kenar boluunu belirlemek iin kullanlr. Punto, in, cm ve piksel cinsinden deer verilir. {margin-left: 10px;}

Margin-right Margin-top text-indent text-align text-decoration text-transform

Sa kenar boluunu belirlemek iin kullanlr. st kenar boluklarn belirlemek iin kullanlr. Bir yaz iin girinti bilgisini belirler. Yaznn hizalanmasn salayan deeri tutar. left,

center, right underline, overline, line-through, none deerleriyle yazya ekil verir.
Yaznn byk veya kk harflerle grntlenmesini salar. Uppercase, lowercase

Tablo 9.6: En ok kullanlan yaz zellik ve deerleri

Body { margin-left: 10px; margin-right: 10px; margin-top: 20px; margin-bottom:15px; }

Font zellik ve deerleri tablo 9.7de belirtilmitir.


zellik ve Deer font-size color font-family font-style font-weight Aklama
Yaz bykln belirler. Yaznn rengini tutar. Yaznn tipini belirler. Yaznn italikliini belirler. italic, normal. Yaz kalnln belirler. Bold, normal

Tablo 9.7: Font zellik ve deerleri

p { font-size: 20; color: blue; font-weight: bold; font-style: italic; font-family: Times New Roman; }

Liste zellikleri ve deerleri tablo 4.3te belirtilmitir.


zellik ve Deer list-style-type lower(upper)roman lower(upper)Aklama
Liste elemanlarnn bana gelecek karakteri belirler.

disc, circle, square, decimal


Liste elemanlarnn bana kk veya byk Roma rakamlar koyar. Liste elemanlarnn bana kk(byk) harfler

256 alpha none list-styleimage list-styleposition


koyar.

Modl 9: Web Programlamaya Giri

Liste elemanlar iin bir sembol almaz. Liste imleri yerine resim kullanr.

indise: Listenin ikinci satrn en soldan balatr. outside: kinci satr bir ncekinin dikey
hizasndan balatr.

Tablo 9.8: Liste zellikleri ve deerleri

Background zellikleri ve deerleri tablo 9.9de belirtilmitir.


zellik ve Deer backgroundcolor backgroundimage backgroundrepeat Aklama
Arka plan renk deerini tutar. Arka plan resminin yol bilgisini tutar. Resmin x ve y koordinatlar boyunca tekrarlanmas bilgisini tutar.

repeat: tm ynlerde repeat-x: x ekseni boyunca repeat-y: y ekseni boyunca no-repeat: tekrar edilmez backgroundposition left: Resmi pencerenin sol kenarna yaklatrr. right: Sa kenara yakaltrr. center: Resmi ortalar.
Tablo 9.9: Background zellik ve deerleri

p { background-color:blue; background-image: url(back.gif); background-position:left; backround-repeat:repeat-x; }

Seiciler
Seiciler, oluturulan <H1>, <P> gibi etiketlerin mevcut zelliklerini ayn tutarak onlara yeni zellikler ekleme olana verir. Ayrca istenilen bir kelimeye stil zellii atayp istenilen zamanda arlmasn salar.
h1 { background:green; color:white; font-weight:bold; font-family:arial; } h1.kirmizi{color:red}

Konu: 1

257

Linkler ve CSS
Sayfalarda ziyaret edilen linklerin mavi alt izgilerini ortadan kaldrmak veya baka stiller vermek iin CSS dilinden yararlanlabilir. <A> etiketinin stilini belirlemekte kullanlan drt ifade vardr:
active: Tklanan linkin stilini belirler. link: Link yaz stilini belirler. visited: Ziyaret edilmi linkin sitilini belirler. hover: Fare linkin zerindeyken nasl bir stil alacan belirler.

a:link{text-decoration:none; color:teal} a:active{text-decoration:none; color:red} a:visited{text-decoration:none; font-family:Times New Roman; color:green} a:hover{background-color:teal; color:white; fontfamily:arial}

Snf ve Gruplama
Snf (class), stil kurallarnn kk paralara ayrlmasn salar. Sayfadaki herhangi bir yaznn dier yazlardan farkl grnmesi istendii durumda, istenilen sayda zel HTML etiketi oluurulabilir. rnein sayfada iki farkl trde H1 etiketi kullanlmak istensin.
H1.serif { font: 14pt Century Schoolbook; } H1.sans{ font: 20pt Arial; }

Bu stilleri kullanmak iin kod iine serif veya sans snf ismi vermek yeterlidir. Gruplama, stil zellikleri ve deerleri younlatrldnda oluur. rnein;
P.1 { font: verdana; font-size: 12pt; line-height: 18pt; }

1 snfndaki tm paragraflar 12 punto Verdana fontuyla ve 18 punto satr yksekliiyle grntlenir. Snf yerine gruplama yaplabilir.
P.1{font:12pt/18pt verdana}

Her iki gsterimde de ayn grnt elde edilir. Ancak gruplamada deerler girerken font-size, font-height ve font sralamasna uyulmas gerektiine dikkat edilmelidir.

258

Modl 9: Web Programlamaya Giri

Modl zeti

26. 27. 28. 29. 30. HTML nedir? En sk kullanlan HTML etiketlerini aklayn. Script Nedir? Java Script nedir? Java Script niin kullanlr? CSS nedir? CSS, Html sayfalara nasl dahil edilebilir?

Konu: 1

259

Lab 1: Web Programlamaya Giri

Bu uygulamada, Java Script .ile sanal klavye yapmasn reneceksiniz. Ayrca Java Script ile popup pencere oluturmay reneceksiniz. Bu lab tamamlandktan sonra: Java Script ile Sanal Klavye oluturabilecek, Java Script ile popup pencere oluturabileceksiniz.

Web uygulamas oluturmak


Bu uygulamada kullanlacak ASP.Net Web Application projesini oluturun. 18. File mens altndan New alt mensn iaret edin ve Project komutunu tklayn. 19. New Project ileti kutusundan ASP.Net Web Application ablonunu sein. 20. Location metin kutusuna http://localhost/ WebOrnek yazn. 21. Enter butonu tklayn.

Sanal Klavye oluturmak


WebOrnek projesine SanalKlavye isminde yeni bir Html sayfa ekleyin.

260

Modl 9: Web Programlamaya Giri

Aadaki kodlar <Body>..</Body> etiketlerinin arasna yazarak Html sayfay tasarlayn.


<div id="klavyem"> <table width="200" border="1" cellpadding="0" cellspacing="0" bordercolor="#00ff00" bgcolor="#0099cc" ID="Table1"> <tr> <td><input type="button" id="ba" onClick="HarfA()" value="A" NAME="ba"></td> <td><input type="button" id="bb" onClick="HarfB()" value="B" NAME="bb"></td> <td><input type="button" id="bc" onClick="HarfC()" value="C" NAME="bc"></td> <td><input type="button" id="bd" onClick="HarfD()" value="D" NAME="bd"></td> <td><input type="button" id="be" onClick="HarfE()" value="E" NAME="be"></td> <td><input type="button" id="bf" onClick="HarfF()" value="F" NAME="bf"></td> <td><input type="button" id="bg" onClick="HarfG()" value="G" NAME="bg"></td> <td><input name="button2" type="button" id="bh" onClick="HarfH()" value="H"></td> </tr> <tr> <td><input type="button" id="bi" onClick="HarfI()" value="I" NAME="bi"></td> <td><input type="button" id="bj" onClick="HarfJ()" value="J" NAME="bj"></td> <td><input type="button" id="bk" onClick="HarfK()" value="K" NAME="bk"></td> <td><input type="button" id="bl" onClick="HarfL()" value="L" NAME="bl"></td> <td><input type="button" id="bm" onClick="HarfM()" value="M" NAME="bm"></td> <td><input type="button" id="bn" onClick="HarfN()" value="N" NAME="bn"></td> <td><input type="button" id="bo" onClick="HarfO()" value="O" NAME="bo"></td> <td><input type="button" id="bp" onClick="HarfP()" value="P" NAME="bp"></td>

Konu: 1

261 </tr> <tr> <td><input type="button" id="br" onClick="HarfR()" value="R" NAME="br"></td> <td><input type="button" id="bs" onClick="HarfS()" value="S" NAME="bs"></td> <td><input type="button" id="bt" onClick="HarfT()" value="T" NAME="bt"></td> <td><input type="button" id="bu" onClick="HarfU()" value="U" NAME="bu"></td> <td><input type="button" id="bv" onClick="HarfV()" value="V" NAME="bv"></td> <td><input type="button" id="by" onClick="HarfY()" value="Y" NAME="by"></td> <td><input type="button" id="bz" onClick="HarfZ()" value="Z" NAME="bz"></td> </tr> </table> </div> <br> <form name="form1" method="post" ID="Form1"> <table width="268" border="1" cellpadding="1" cellspacing="2" bordercolor="#99ff66" bgcolor="#0099cc" ID="Table2"> <tr> <td width="85">Kullanici Adi</td> <td width="167"><input name="text" type="text" id="user"></td> </tr> <tr> <td>Parola</td> <td><input type="password" id="password" readonly NAME="password"></td> </tr> <tr> <td>&nbsp;</td> <td><input name="button2" type="button" id="giris" value="Giris Yap" onClick="hosgeldin()"> &nbsp; <input name="button2" type="reset" id="temizle" value="Sil"></td> </tr> </table> </form>

Kodlarn yazlmas
SanalKlavye Html sayfasnn HTML blmne aadaki kodlar yazn. Bu kod, Java Script ile istemci tarafl fonksiyonlar eklemektedir. Bu kodu <Head>..</Head> etiketleri arasna ekleyin.
<script language="javascript"> function HarfA() { form1.password.value += "A"; } function HarfB() { form1.password.value += "B"; }

262 function HarfC() { form1.password.value += "C"; } function HarfD() { form1.password.value += "D"; } function HarfE() { form1.password.value += "E"; } function HarfF() { form1.password.value += "F"; } function HarfG() { form1.password.value += "G"; } function HarfH() { form1.password.value += "H"; } function HarfI() { form1.password.value += "I"; } function HarfJ() { form1.password.value += "J"; } function HarfK() { form1.password.value += "K"; } function HarfL() { form1.password.value += "L"; } function HarfM() { form1.password.value += "M"; } function HarfN() { form1.password.value += "N"; } function HarfO() { form1.password.value += "O"; } function HarfP() {

Modl 9: Web Programlamaya Giri

Konu: 1

263 form1.password.value } function HarfR() { form1.password.value } function HarfS() { form1.password.value } function HarfT() { form1.password.value } += "P";

+= "R";

+= "S";

+= "T";

function HarfU() { form1.password.value += "U"; } function HarfV() { form1.password.value += "V"; } function HarfY() { form1.password.value += "Y"; } function HarfZ() { form1.password.value += "Z"; } function hosgeldin() { alert("hosgeldiniz sayin: " + form1.user.value) } </script>

Popup pencere oluturmak


WebOrnek projesine Popup isminde yeni bir Html sayfa ekleyin.

264

Modl 9: Web Programlamaya Giri

Aadaki kodlar <Body>..</Body> etiketlerinin arasna yazarak Html sayfay tasarlayn.


<INPUT id="Button1" type="button" onclick="pencereac()" value="Pencere A" name="Button1">

WebOrnek projesine acilan_pencere isminde yeni bir Html sayfa ekleyin.

Aadaki kodlar <Body>..</Body> etiketlerinin arasna yazarak Html sayfay tasarlayn.


Burada aclan pencere mevcut <br> <INPUT id="Button2" onclick="window.close()" type="button" value="Pencere Kapat" name="Button2">

Konu: 1

265

Kodlarn yazlmas
Popup, Html sayfasnn HTML blmne aadaki kodlar yazn. Bu kod, Java Script ile istemci tarafl fonksiyon eklemektedir. Bu kodu <Head>..</Head> etiketleri arasna ekleyin.
<script language="javascript"> function pencereac() { window.open('acilan_pencere.htm','acilan','width=500,heig ht=300') } </script>

Modl 10:

Modl 10: Kullanc Kontrolleri Oluturmak

Web uygulamalar gelitirirken, her sayfada grntlenecek sabit paneller gerekebilir. Bu panelleri her sayfa iin tekrar oluturmak zaman ve performans

Modul 10:

267

kaybna yol aar. Bu paneller, User Controls (kullanc kontrolleri) biminde oluturulup, proje iinde birok yerde kullanlabilir. Bu modl tamamlandktan sonra : Kullanc kontrollerin yapsn renecek, Kullanc kontrol oluturabilecek, Kullanc kontrollerini proje iinde kullanabileceksiniz.

Konu 1: Kullanc Kontrolleri

Sk kullanlan kontroller bir araya getirilerek yeni bir kontrol oluturulur. Bu kontroller uygulama ierisinde her sayfada kullanlabilir. rnein sayfalar aras dolam salayan men paneli, kullanc kontrol haline getirilebilir. Web kontrollerinde olduu gibi kullanc kontrolleri de sunucu tarafnda alr. Kullanc kontrolleri System.Web.UI.UserControl snfndan tretilmitir.

Kullanc Kontrolnn Avantajlar


Kullanc kontrolleri, ayr bir namespace iinde tanmlanr. Bu durum kullanldklar Web formlar ile oluabilecek isim akmasn ortadan kaldrr. Kullanc kontrolleri, ayn sayfa iinde birden fazla kullanlabilir. Hibir zellik veya metot iin isim akmas sz konusu deildir.

268

Modl 10: Kullanc Kontrolleri Oluturmak

Kullanc kontrolleri ayr dillerde yazlabilir.

Kullanc kontrolleri, uygulama iindeki tm sayfalara eklenebilir. Ancak dier uygulamalardaki kullanc kontrolleri sayfalara direk eklenemez. Dier uygulamalardaki kullanc kontrolleri, kullanmadan nce uygulamaya eklenmelidir.

Kullanc Kontroln Projeye Eklemek

Projeye yeni bir kullanc kontrol eklemek iin aadaki admlar takip edin. 1. Solution Explorer penceresi an. 2. Proje ad zerinde farenin sa butonunu tklayn. 3. Alan penceredeki Add mensnden Add Web User Control komutunu sein. 4. Name metin kutusuna kullanc kontrolune verilecek ismi girin.

Modul 10:

269

Kullanc kontrol formlar, normal Web formlar gibi tasarlanr. Kullanc kontrol dosyalar .ascx ve bu kontrollere ait code-behind sayfas ise ascx.cs uzantldr. Kullanc kontrollerinde HTML ve Visual Basic .NET kodu birlikte kullanlabilir. Ancak kullanc kontrolleri web formlar tarafndan kullanld iin <head>, <body>, <form> gibi HTML elementleri bulundurmaz. Web form direktifi olan @Page yerine kullanc kontrollerinde @Control ifadesi kullanlr. Bu direktif @Page direktifinin AspCompat ve Trace dndaki tm attribute deerlerine sahiptir.

270

Modl 10: Kullanc Kontrolleri Oluturmak

Kullanc kontrollerini Web form ierisine eklemek iin @Register ifadesi kullanlr. Bu ifade kullanc kontrollerinin web forma balanmasn salar.
<%@ Register TagPrefix=deneme TagName=Login src=login.ascx %> TagPrefix attribute deeri kullanc kontrol iin bir namespace oluturur.

Bylece her kontrol ayr bir namespace iinde tanmlanr. TagName, kullanc kontrolnn ismidir. Src ise kullanc kontrolnn bulunduu yolu belirtir. @Register ifadesi ile forma balanan kullanc kontrolu, aada kod ile web form ierisinde grntlenir. Kullanc kontrolleri sunucu zerinde alt iin, runat="server" parametresi ile tanmlanmaldr.
<deneme:Login id="Login1" runat="server"/>

Modul 10:

271

rnekte tm sayfalarda kullanlacak sayfa bal, kullanc kontrol olarak tasarlanmtr.


<%@ Control Language="cs" AutoEventWireup="false" Codebehind="Header.ascx.cs" Inherits="KullaniciKontrolleri.UserControls.Header" %> <table width="100%" height="100%" bgcolor="#ffeeaa"> <tr valign="middle"> <td align="center"> <asp:Label id="lblHeader" runat="server" Font-Bold="True" ForeColor="White" Font-Size="X-Large">Hogeldiniz </asp:Label> </td> </tr> </table>

272

Modl 10: Kullanc Kontrolleri Oluturmak

Modl zeti

31. Kullanc kontrolleri niin oluturulur? 32. Kullanc kontrollerinin avantajlar nelerdir?. 33. Web form ierisinde kullanc kontrolleri nasl kullanlr?

Modul 10:

273

Lab 1: E-Ticaret Uygulamas Gelitirmek

Bu uygulamada, e-ticaret uygulamasnn kullanc kontrolleri tasarlanacaktr. Bu uygulamada, btn sayfalarda kullanlacak st ve alt men oluturulacaktr. Ayrca kategori isimli kullanc kontrolu ile tm kategoriler listelenecektir. Kategori deerleri veritaban ierisinden alnr. Bu lab tamamlandktan sonra: Kullanc kontrolu oluturabileceksiniz.

Kullanc kontrollerin eklenmesi


AspEticaret isimli projeyi an.

Ust kontrolunun eklenmesi


ASPEticaret projesine Ust isminde yeni bir kullanc kontrol ekleyin. Kullanc kontrolu ierisine tablodaki kontrolleri ekleyin.
Kontrol Kontrol smi HyperLink btnAnaSayfa HyperLink btnUyeGiris zellik NavigateUrl Text NavigateUrl Text Deer

Default.aspx AnaSayfa UyeGiris.aspx tklaynz

274 HyperLink btnUyeKayit LinkButton btnCikis Label lblAd NavigateUrl Text Text Visible

Modl 10: Kullanc Kontrolleri Oluturmak

UyeKayit.aspx ye Kayit k False

Ust isimli kullanc kontrolunn Html kodlar aadaki gibi olacaktr.


<%@ Control Language="cs" AutoEventWireup="false" Codebehind="Ust.ascx.cs" Inherits="AspEticaret.Ust" TargetSchema="http://schemas.microsoft.com/intellisense/ie5" %> <TABLE id="Table1" cellSpacing="0" cellPadding="0" width="700" border="0"> <TR> <TD style="HEIGHT: 17px"> <P align="center"><FONT face="Lucida Handwriting" size="6">Yazilim Uzmani&nbsp;Kitapevi</FONT></P> </TD> </TR> <TR> <TD>&nbsp; <asp:Label id="lblAd" runat="server"></asp:Label>&nbsp;</TD> </TR> <TR> <TD> <P align="center"> <asp:HyperLink id="btnAnaSayfa" runat="server" NavigateUrl="Default.aspx">AnaSayfa</asp:HyperLink>&nbsp;| <asp:HyperLink id="btnUyeGiris" runat="server" NavigateUrl="UyeGiris.aspx">ye Giri</asp:HyperLink>&nbsp;| <asp:HyperLink id="btnUyeKayit" runat="server" NavigateUrl="UyeKayit.aspx">ye Kayit</asp:HyperLink>&nbsp;&nbsp;&nbsp; &nbsp; <asp:LinkButton id="btnCikis" runat="server" Visible="False">ks</asp:LinkButton></P> </TD> </TR> </TABLE>

Ust isimli kullanc kontrolunn code behind kodlar aadaki gibi olacaktr.
Using System.Data.OleDb private void Page_Load(System.Object sender, System.EventArgs e) { If (Session("user") != "") {

Modul 10:

275

lblAd.Text = "Bay / Bayan : " + Session("ad") + " " + Session("soyad"); btnCikis.Visible = true; else { btnCikis.Visible = false; } } private void btnCikis_Click(System.Object sender, System.EventArgs e) { Session.Abandon(); btnCikis.Visible = false; Response.Redirect("Default.aspx"); }

Alt kontrolunun eklenmesi


ASPEticaret projesine Alt isminde yeni bir kullanc kontrol ekleyin. Kullanc kontrolu ierisine tablodaki kontrolleri ekleyin.
Kontrol Kontrol smi HyperLink Link1 HyperLink Link2 HyperLink Link3 zellik Deer

NavigateUrl Text NavigateUrl Text NavigateUrl Text

AnaSayfamYap SikKullanilanlaraEkle mailto:tamer.sahiner@bilgeadam.com Iletisim

Alt isimli kullanc kontrolunn Html kodlar aadaki gibi olacaktr.


<%@ Control Language="cs" AutoEventWireup="false" Codebehind="Alt.ascx.cs" Inherits="AspEticaret.Alt" TargetSchema="http://schemas.microsoft.com/intellisense/ie5" %> <TABLE id="Table1" cellSpacing="0" cellPadding="0" width="700" border="0"> <TR> <TD> <P align="center"><asp:hyperlink id="Link1" runat="server">AnaSayfamYap</asp:hyperlink>&nbsp;| <asp:hyperlink id="Link2" runat="server">SikKullanilanlaraEkle</asp:hyperlink>&nbsp;| <asp:hyperlink id="Link3" runat="server" NavigateUrl="mailto:tamer.sahiner@bilgeadam.com">Iletisim</a sp:hyperlink></P>

276 </TD> </TR> </TABLE>

Modl 10: Kullanc Kontrolleri Oluturmak

Yan kontrolunun eklenmesi


ASPEticaret projesine Yan isminde yeni bir kullanc kontrol ekleyin.

Yan isimli kullanc kontrolunn Html kodlar aadaki gibi olacaktr.


<%@ Control Language="cs" AutoEventWireup="false" Codebehind="yan.ascx.cs" Inherits="AspEticaret.yan" TargetSchema="http://schemas.microsoft.com/intellisense/ie5" %> <TABLE id="Table1" cellSpacing="0" cellPadding="0" width="150" border="0"> <TR> <TD> <P align="center"><A href="http://www.yazilimuzmani.com"><IMG src="resimler/YazilimUzmani.gif" border="0"></A></P> </TD> </TR> <TR> <TD style="HEIGHT: 35px"> <P align="left"><IMG src="resimler/bilgeadam%20logo.jpg" border="0"><A href="http://www.yazilimuzmani.com"></A></P> </TD> </TR> <TR> <TD> <P align="left"><A href="http://sdnet.bilgeadam.com"><IMG src="resimler/sdNetLogo.gif" border="0"></A></P> </TD> </TR> </TABLE>

DataSet nesnesinin Oluturulmas


dsBook isminde yeni bir DataSet oluturun.

Modul 10:

277 Solution Explorer penceresi an.

12345-

Proje ad zerinde farenin sa butonunu tklayn. Alan penceredeki Add mensnden Add New Item komutunu sein. Templates seenei ierisinden DataSet esini sein Name metin kutusuna dsBook ismini girin.

Balant oluturulmas
KitapDB veritaban zerinde ilem yaplmas iin balant kurulmas gerekir. Bu balanty Server Explorer kullanarak oluturun. Bu baglant ile veritaban ierisindeki Kategori tablosu, dsBook isimli dataset ierisine eklenecektir. KitapDb uygulamas iin yeni balant oluturmak. 5. Server Explorer penceresi zerinde farenin sa butonunu tklayn. Alan menden Add Connection komutunu tklayn. 6. Alan Data Link Properties penceresinin Provider sekmesini tklayn. 7. Provider sekmesinden Microsoft.Jet.OLEDB.4.0 Provider i seerek Next butonunu tklayn.

8. Alan Connection sekmesinin grntsn resimdeki gibi dzenleyerek OK butonunu tklayn. 9. Server Explorer penceresinden DataConnections seeneini sein 10. Eklediiniz balant ierisinden Tables seeneini sein. 11. Tables ierisindeki Kategori tablosunu dsBook nesnesinin ierisine srkleyin.

278

Modl 10: Kullanc Kontrolleri Oluturmak

Kategori kontrolunun eklenmesi


ASPEticaret projesine Kategori isminde yeni bir kullanc kontrol ekleyin. Kullanc kontrolu ierisine tablodaki kontrolleri ekleyin.
Kontrol Kontrol smi Repeater rptKategori zellik NavigateUrl Deer

Default.aspx

Kategori isimli kullanc kontrolunn Html kodlar aadaki gibi olacaktr.


<%@ Control Language="cs" AutoEventWireup="false" Codebehind="kategori.ascx.cs" Inherits="AspEticaret.kategori" TargetSchema="http://schemas.microsoft.com/intellisense/ie5" %> <asp:Repeater id="rptKategori" runat="server"> <ItemTemplate> <table width="150" cellpadding="2" cellspacing="2"> <tr bgcolor="#0099ff"> <td> <a style="COLOR: white" href='Kitap.aspx?KategoriID=<%# databinder.eval(Container.dataitem,"KategoriID") %>'> <%# Databinder.eval(container.dataitem ,"KategoriAdi") %> </a> </td> </tr> </table> </ItemTemplate> </asp:Repeater>

Kategori isimli kullanc kontrolunn code behind olacaktr.


using System.Data.OleDb;

kodlar aadaki gibi

private void Page_Load(System.Object sender, System.EventArgs e) { String connStr = "Provider=Microsoft.Jet.OleDB.4.0; " + "Data Source=" + Server.MapPath("KitapDb.mdb"); OleDbConnection conn = new OleDbConneciton();

Modul 10:

279

conn.ConnectionString = connStr; OleDbCommand comm = new OleDbCommand(); comm.CommandType = CommandType.Text; comm.CommandText = "Select * from Kategori"; comm.Connection = conn; OleDbDataAdapter da =new OleDbDataAdapter(); da.SelectCommand = comm; DataSet ds = new DataSet(); try { conn.Open(); da.Fill(ds, "Kategori"); rptKategori.DataSource = ds.Kategori; rptKategori.DataBind(); catch (Exception ex) { Response.Write(ex.Message); } finally { if (conn.State = ConnectionState.Open) { conn.Close(); } } }

Modul 11:

Modul 11:

281

Modul 11: ADO.NET ile Veriye Eriim

Web uygulamalar ile veriye eriim, Windows uygulamalarna olduka benzemektedir. Ancak verileri listelemek iin kullanlan kontrollerin alma yaps farkllk gsterir. Veriye ulam ADO.NET nesneleri ile gerekleir.

282

Modl 11:

Bu modl tamamlandktan sonra:


Repeater, DataList

ve DataGrid gibi listeleme kontrollerini

renecek, Web uygulamlarnda Connected ve Disconnected alma yapsn renecek,

Konu 1: Veri Balantl Kontroller

ASP.Net ile veritaban iindeki veriyi grntlemek ve dzenlemek iin veri balant kontrolleri kullanlr. ListBox, DropDownList kontrolleri dnda CheckBoxList, RadioButtonList kontrolleri veri balantl olarak alabilir. Repeater, DataList ve DataGrid kontrolleri veri listelemek iin kullanlr.

Modul 11:

283

CheckBoxList, RadioButtonList Kullanm

CheckBox ve RadioButton kontrollerinden farkl olarak, birden fazla seenek

arasnda seim yaplmasn salayan CheckBoxList ve RadioButtonList kontrolleri kullanlabilir. rnein bir sayfada drt tane istee bal seenek varsa drt ayr CheckBox kullanmak yerine, bir CheckBoxList kontrol kullanlr. Ayn ekilde be seenekten sadece bir tanesi seilmesi gerekiyorsa, be ayr RadioButton oluturmak yerine, bir RadioButtonList kontrol kullanlr.
CheckBoxList kontrolnn DataSource, DataMember, DataTextField ve DataValueField zellikleri ile veritaban ilemleri gerekletirilir. DataSource,

balantsz alan DataSet nesnesine balanr. DataMember, bu DataSet ierisindeki tablo ismini temsil eder. DataValueField, value zelliinde tutulmas istenen kolonu, DataTextField ise text zelliinde grntlenmek istenen kolonu temsil eder. rnekte CheckBoxList kontrol ile seilen tm eler, lblMsg isimli etiketin ierisine yazdrlmaktadr.
int i ; for (int i=0;i< checkboxlist1.Items.Count ;i++) { If (checkboxlist1.Items(i).Selected) { lblMsg.Text &= checkboxlist1.Items(i).Text & "<br>"

284 } } CheckBoxList

Modl 11:

kontrol

ile

birden

fazla

seim

yaplabilir.

Fakat

RadioButtonList kontrol ile sadece bir e seilebilir.

rnekte CheckBoxList veya RadioButtonList kontrol ile veritaban balants .gsterilmektedir.


private void Page_Load(System.Object sender, System.EventArgs e) { da.Fill(DataSet1, "Kitaplar"); CheckBoxList1.DataSource = DataSet1; CheckBoxList1.DataMember = "Kitaplar"; CheckBoxList1.DataTextField = "Kitap_baslik"; CheckBoxList1.DataValueField = "kitap_ISBN"; CheckBoxList1.DataBind(); }

Repeater, DataList ve DataGrid Kullanm

Repeater, DataList ve DataGrid, veri listelenmesi iin tasarlanm zel

kontrollerdir. Bu kontrol ablonlardan oluur. Ortak ablonlar ise HeaderTemplate, ItemTemplate ve FooterTemplate ablonlardr. ablonlar ierisinde verinin grntlenmesine ynelik tanmlamalar yaplr.

Modul 11:

285

DataList ve DataGrid, veriler zerinde gncelleme yapma imkan sunarken, Repeater sadece veri grntlemeyi salar. Ancak DataGrid, DataList

kontrolnden farkl olarak veri sayfalama ve sralama zellikleri sunar.

Repeater

Repeater; veriyi veritabandan alarak istenilen biimde grntlenmesini salayan olduka gl bir kontroldr. Her kaydn grntlenme ekli, HTML etiketleri ile oluturulan bir ablon ile belirlenir. Haber yayn yapan sitelerinin ounda bu kontrol kullanlr.

Kod 11.1 de Repeater kullanm gsterilmektedir.


Kod 11.1:Repeater Kullanm <asp:Repeater id="Repeater1" runat="server"> <HeaderTemplate> <asp:Label id="lblh" Runat="server" text="Company _ Name" Font-Bold="True" Width="260"></asp:Label> <asp:Label id="lblh2" Runat="server" text="Contact _ Name" Font-Bold="True"></asp:Label> </HeaderTemplate> <ItemTemplate> <table> <tr> <td width="260"> <asp:Label ID=lbl1 Runat=server text='<%#Databinder.eval(container.dataitem, "companyname")%> ' > </asp:Label> </td>

286

Modl 11:

<td> <asp:Label ID=Lbl2 Runat=server text='<%# Databinder.eval(container.dataitem, "contactname")%> ' > </asp:Label> </td> </tr> </table> </ItemTemplate> <FooterTemplate> <b>BilgeAdam BTA</b> </FooterTemplate> </asp:Repeater> Repeater kontrolnn ItemTemplate ablonda, her kayt iin yaplacak

gsterim ekli belirlenir. HTML etiketleri kullanarak ktya ekil verilebilir.


HeaderTemplate ablonu repeater kontrolnn balnn, FooterTemplate

alt baln biimini belirler.


HeaderTemplate iinde alan bir <table> etiketi, FooterTemplate iinde </table> ifadesiyle kapatlabilir. SeperatorTemplate ablonu, kaytlar arasnda ayra stili belirler.

Tablo 11.1de Repeater kontrolnn ablonlar aklanmtr.


ablon Ad ItemTemplate AlternatingItemTemplate HeaderTemplate FooterTemplate Aklama
Veritabanndan gelecek satrlarn grntlenecei stilin belirlendii alan. Ardl olarak gelen satrlarn birbirinden farkl olmasn salar.

Repeater kontrolnn baldr.


stenilen stil verilebilir.

Repeater kontrolnn en altndaki alandr. Alt balk olarak istenilen stil verilebilir.
Veritabanndan gelen her bir satr dierinden ayran ablondur.

SeperatorTemplate

Tablo 11.1: Repeater kontrolnn ablonlar


<table> </table> etiketleri ile kaytlarn bir tablonun satrlar biiminde grntlenmesini salanr. <tr> </tr> etiketi arasnda iki <td> </td> etiketi kullanr. Bu ekilde, bir satr bilgiyi iki kolona ayrlm biimde grntlenmesini istenir. lk td etiketinde bir <asp:Label> etiketi kullanarak bu birinci stunda verinin bir Label kontrol iinde grntlenmesi isteini bildirilir. Ve Label etiketinin Text zellii iine,

Modul 11:

287 text='<%#Databinder.eval(container.dataitem, "companyname")%> '

ifadesi

yazlarak

veri

balama

ilemi

gerekletirilir.

Burada

Databinder.eval, repeater kontrolne balanan veri kmesi iinden CompanyName ad verilen kolonu bulur ve o kolondaki verileri srasyla repeater

iine alr ve grntler. kinci td etiketinde, Label kontrolnn Text zelliine ContactName kolonunu balar.
text='<%#Databinder.eval(container.dataitem, "contactname")%> '

Code-behind sayfasnda ise, Repeater kontrolnn DataSource zelliine, veri kaynan temsil eden DataSet nesnesinin ismi bildirilir. Ve DataBind metodu ile balantnn ilenmesi salanr.

Repeater1.DataSource = DataSet2; Repeater1.DataBind();

Sonu olarak Repeater kontrol, HTML kullanmn youn olarak gerektirir ve karlnda, verilerin istenilen ablona uygun biimde grntlenmesini salar.

DataList

288

Modl 11:

DataList kontrol, Repeater kontrolnn daha gelimi halidir. Veri

grntlemek dnda, verilerin seilip ve zerinde gncelleme ilemleri yapmaya olanak salar. Datalist eklemek iin aadaki admlar takip edin. rnekte DataList kullanm gsterilmektedir. 1. Ara kutusundan DataList kontrol seerek formumuzun zerine srkleyip brakn. 2. Kontrol zerine sa tklayn ve alan menden Edit Template alann sein. 3. Alan yeni pencerede Header and Footer Templates, Item Template ve Seperator Templates alanlar kacaktr. Header and Footer Templates alann seerek, balk ve alt balk alanlarna istenilen form girilebilir. Header alanna iki label ekleyin ve Text zelliine Kitap Ad ve Yazar deerini verin. Footer alanna yine bir Label ekleyin ve Text zelliine Bilge Adam BTA yazn. 4. Kontrol zerinde tekrar sa tklayn ve Item Templates alann sein. ItemTemplate ve AlternatingItemTemplate ablonuna ek olarak, SelectedItemTemplate ve EditItemTemplate ablonlar bulunur. ItemTemplate alannda, grntlemek istenilen alanlar temsil edecek kontrolleri oluturulur. Bu kontrolde repeater kontrolnden farkl olarak, tasarm ekrannda ara kutusundan istenen kontrol ItemTemplate ablonuna eklenebilir. 5. ki tane Label kontroln ItemTemplate alanna ekleyin ve HTML koduna geerek veri balama ilemlerini gerekletirin.
Kod 11.2: DataList kullanmnda code-behind sayfas string connStr = "Provider=Microsoft.Jet.OLEDB.4.0; + Data Source=" & Server.Mappath("./Stok.mdb"); OleDbConnection conn = new OleDbConnection (connStr); OleDbDataAdapter da = new OleDbDataAdapter("select * from kitaplar", conn); DataSet ds = New DataSet(); private void Page_Load(Object sender, EventArgs e) { da.Fill(ds, "kitaplar"); DataList1.DataSource = ds; DataList1.DataBind(); } Kod 11.3: DataList aspx sayfas ve veri balama <form id="Form1" method="post" runat="server"> <asp:DataList id="DataList1" style="Z-INDEX: 101; LEFT: 88px; POSITION: absolute; TOP: 168px" runat="server"> <HeaderTemplate> <asp:Label id="Label1" runat="server" Width="300px" Font-Bold="True">Kitap Ad</asp:Label>

Modul 11:

289

<asp:Label id="Label2" runat="server" Width="65px" Font-Bold="True">Yazar</asp:Label> </HeaderTemplate> <FooterTemplate> <asp:Label id="Label3" runat="server" FontBold="True">Bilge adam Bta</asp:Label> </FooterTemplate> <ItemTemplate> <asp:Label id=Label5 runat="server" Width="300px" text='<%# databinder.eval(container.dataitem, "kitap_baslik")%>'> </asp:Label> <asp:Label id=Label4 runat="server" text='<%# databinder.eval(container.dataitem, "kitap_yazar")%>'> </asp:Label> </ItemTemplate> </asp:DataList> </form> DataList kontrolnn bir dier fark, kt grnmnn tablo iinde veya dz

bir biimde verilmesidir. RepeatLayout zelliinin Table ve Flow deerlerini kullanarak tablo grnm ve dz grnm verilir. Varsaylan grlm Table biimindedir.
RepeatColums zellii ise verilerin ka stun halinde grntleneceini belirler. RepeatDirection zellii ise tekrarlanan kaytlarn alt alta veya yan yana

sralanarak grntlenmesini salar.


GridLines zellii ise dikey ve yatay izgilerle kayt grntlerini birbirinden

ayrr.
DataList ierisinde grnt formunu dzenlemek iin penceresindeki grnme ilikin pek ok zellik sunulmutur.

properties

SelectedItemTemplate ablonu, listeden seilen nesneye ait ayrntlarn

grntlenmesini salar.
EditItemTemplate ablonu, kullancnn setii kayt zerinde dzenleme yapmasn salayan alana ait kodlarn girildii blmdr.. DataList kontrolnn ablonlar ierisine kullanlan kontrollere, formun

zerinden direk eriilemez. rnein DataList iindeki bir Button kontrolnn Click olayna kod yazlamaz. DataList iinde kullanlan Button kontrolne kod yazmak iin, DataList kontrolnn CommandName zellii kullanlr. Bu zellik, Button kontroln Command nesnesi ile alr ve forma yollar. Ve DataList kontrolnn ItemCommand olaynda, gelecek komutun adna gre kod yazlr.

290

Modl 11:

DataGrid

DataGrid kontrol, DataList kontrolnden daha gelimi zelliklere sahiptir.

Verileri sayfalama ve sralama yetenei sayesinde grntleme ilemleri zellemitir. DataGrid, veritabanndan alnan bir tabloyu, tablo biimi ile ekrana yanstlmasn salar. Seilen kayt zerinde deiiklik yapma ve kayt silme olanaklarn salar. Sayfalama, sralama, seme, dzeneleme ve silme ilemlerini destekler. DataGrid kontrolne veri balamak iin ablon kullanmaya gerek yoktur.
Kod 11.4: DataGrid kontrolnn en basit kullanm string connStr = "Provider= Microsoft.Jet.OLEDB.4.0;+ Data Source=" + Server.Mappath("./Stok.mdb"); OleDbConnection conn = new OleDbConnection(connStr); OleDbDataAdapter da = new OleDbDataAdapter("select * from kitaplar", conn); DataSet ds = new DataSet; private void Page_Load(Object sender, EventArgs e) { da.Fill(ds, "kitaplar"); DataGrid1.DataSource = ds; DataGrid1.DataMember = "kitaplar"; DataGrid1.DataBind(); } HTML <asp:DataGrid id="DataGrid1" style="Z-INDEX: 101; LEFT: 28px; POSITION: absolute; TOP: 96px" runat="server" Width="432px" Height="203px">

Modul 11:

291

</asp:DataGrid>

Sadece tasarm ekran kullanlarak DataGrid oluturulabilir.


Server Explorer panelinden yeni bir Access veritaban balants

oluturun. Bu veritabanndan, kullanmak istediiniz tabloyu srkleyerek form zerine brakn. Formun alt penceresinde iki yeni nesne oluacaktr. (OleDbConnection1 ve OleDbDataAdapter1)
OleDbDataAdapter1 nesnesi sein ve Properties panelinden

Generate DataSet komutunu verin. Alan pencerede Next dmeleri ile ilerleyin. Ara kutusundan DataGrid kontroln srkleyip forma brakn.
Properties penceresinde DataSource alanna oluturulan DataSet

kontrolnn ismi, DataMember alanna, DataSet iine alnan tablolardan birini girin.
DataSet kontroln veri ile dolduran ve balama ilemlerini

gerekletiren kodlar yazn.


OleDbDataAdapter1.Fill(DataSet1, Tablo_ismi); DataGrid1.DataBind(); DataGrid iin hazrlanm eitli ablonlar vardr. Hazr ablonlar semek

iin DataGrid kontrol zerinde sa tklanr ve AutoFormat seilir. Varsaylan olarak DataGrid verileri Grid grnmnde sunar. GridLines zelliine Both, Hortizonal, Vertical ve None deerlerinden biri atanabilir. BackImageUrl zellii sayesinde DataGrid kontrolnde bir arka plan resmi grntlenebilir.

DataGrid Kontrolnde Kolon Oluturma


Slide9 DataGrid kontrol ierisinde eitli kolon trleri bulunur.
BoundColumn HyperLinkColumn TemplateColumn ButtonColumn EditCommandColumn

AutoGenerateColumns zellii, varsaylan olarak True deerini alr ve

tablodan gelen kolonlar deitirmeden grntler. BoundColumn


BoundColumn, DataGrid kontrolnn varsaylan kolonudur. Kaytlar grntler. Veri kaynandan alnan tablodan sadece belirli kolonlarn

292

Modl 11:

grntlenmesi istenirse, BoundColumn kontrolleri kullanlabilir. Kod 11.5de veri kaynandan alnan tablonun istenilen kolonlar grntlenir.

Kod 11.5: DataGrid ierisinde BoundColumn kullanm

BoundColumn

ile sadece grntlenmesi istenen kolonlar DataGrid kontrolne eklenir.

private void Page_Load(Object sender, EventArgs e) { string connStr = Provider=Microsoft.Jet.OLEDB.4.0; + Data Source=" & Server.Mappath("./Stok.mdb") OleDbConnection conn =new OleDbConnection(connStr); OleDbCommand cmdSelect = new OleDbCommand("Select * From kitaplar", conn); conn.Open(); DataGrid1.DataSource = cmdSelect.ExecuteReader(); DataGrid1.DataBind(); conn.Close(); } Html <asp:DataGrid ID="DataGrid1" AutoGenerateColumns="False" EnableViewState="False" Runat="Server"> <Columns> <asp:BoundColumn DataField="Kitap_baslik" HeaderText=Kitap Ad /> <asp:BoundColumn DataField="Kitap_yazar" HeaderText=Yazar Ad/> </Columns> </asp:DataGrid> AutoGenerateColumns zellii varsaylan olarak True deerindedir ve tm kolonlarn otomatik olarak grntlenmesini salar. rnekte bu zellie False deeri atanmtr. BoundColumn kolonunun birok zellii vardr. DataField DataFormatString FooterText HeaderImageUrl HeaderText

BoundColumn kolonu, DataGrid kontrolnn Columns etiketi ierisinde tanmlanmtr. DataField zelliinde ise kolon ad belirtilmitir.

Modul 11: PUCU: DataGrid iinde grntlenecek kolonlar seen sql komut tanmlanrken select * from ... ifadesinden kanlmaldr. Bu komut yerine sadece ihtiya duyulan kolonlar tek tek belirtilmelidir. Aksi halde, Web zerinde yayn annda performans kayb ortaya kar. BoundColumnun DataFormatString zellii ise, kolondan alnan ifadenin belirli bir formatta grntlenmesini salar. rnein bir para miktar sz konusuysa bu zellik kullanlabilir.

293

<asp:BoundColumn DataField="Kitap_fiyat" DataFormatString="{0:c}"/>

BoundColumnun HeadetText, FooterText ve HeaderImageUrl zellikleri, header, footer alanlarna grntlenmesi istenilen yazlar, ve balkta grntlenecek resimi belirler. HeaderText alanna yazlan yaznn grntlenebilmesi iin DataGrid kontrolnn ShowFooter zellii True yaplmaldr. Bu zellik varsaylan olarak False deerindedir. Ayn anda HeaderImageUrl ve HeaderText zelliklerine deer girildiinde, resim ve yaz beraber grntlenemez. rnekte Header alannda hem resim hem de yaz gsterilir
HeaderText="<img src=myImage.Gif>Balk"

HyperLinkColumn
HyperLinkColumn, kaytlar linkler eklinde grntleyen kolondur. Yani DataGrid kontrolnde grntlenen kaytlar zerinden baka sayfalara ilgili linkler verilmek isteniyorsa, HyperLinkColumn kullanlmaldr. DataGrid kaytlarna ilikin ayrntl bilgi verilmek isteniyorsa master/detail formlar eklinde grnt vermek iin yine bu kolon kullanlabilir.

rnekte HyperLinkColumn kullanm gsterilmektedir. DataGrid nesnesi zerindeki Detaylar kolunu tklanarak, detay bilgileri getirilebilir. Bu bilgiler Detaylar.aspx sayfas zerinde gsterilir.

Kod 11.7: DataGrid ierisinde HyperLinkColumn kullanm

private void Page_Load(Object sender,EventArgs e) { string connStr = "Provider=Microsoft.Jet.OLEDB.4.0; + Data Source=" & Server.Mappath("./Stok.mdb"); OleDbConnection conn =new OleDbConnection(connStr); OleDbCommand cmdSelect = OleDbCommand("Select * From + musteri", conn); conn.Open(); DataGrid1.DataSource = cmdSelect.ExecuteReader(); DataGrid1.DataBind(); conn.Close(); }

294

Modl 11:

Html <asp:DataGrid ID="DataGrid1" AutoGenerateColumns="False" EnableViewState="False" CellPadding="10" Runat="Server"> <Columns> <asp:BoundColumn HeaderText="Mteri Ad" DataField="musteri_ad" /> <asp:BoundColumn HeaderText="Mteri Soyad" DataField="musteri_soyad" /> <asp:HyperLinkColumn HeaderText="Detaylar" DataNavigateUrlField="musteri_id" DataNavigateUrlFormatString="Detaylar.aspx?id={0}" Text="Detay Grntle" /> </Columns> </asp:DataGrid>

Sayfaya Parametre Yollama Tablodan genel bilgi verilecek alan belirlenir ve tkland zaman o kolona ait veri hakknda daha ayrntl bilgi grntlemek iin detay sayfasna link verilir.
HyperLinkColumn kolonunda grntlenen linkler, DataNavigateUrlField, DataNavigateUrlFormatString ve Text zelliklerine girilen bilgiler ile

yaplandrlr. DataNavigateUrlField linkin adresini, DataTextField link zerinde grntlenecek yazy tutar.
HyperLinkColumn kolonunun zellikleri: DataNavigateUrlField DataNavigateUrlFormatString DataTextField DataTextFormatString FooterText HeaderImageUrl HeaderText NavigateUrl Target Text

DataTextField ve DataTextFormatString zellikleri, her bir hyperlink iin

farkl etiketler grntlenmesi iin kullanlabilir. rnekte HyperLinkColumn kullanm gsterilmektedir. Site linkleri(link_url) ve balklar(link_title) veritabanndaki linkler tablosundan ekilerek, DataGrid

Modul 11:

295

zerinde gsterilir. Link_title kolonu site balklarnn grntlenmesini salar. Link_title kolunu tklanarak link_url kolonundaki adres bilgisine ynlendirilir.

Kod 11.8: DataGrid ierisinde HyperLinkColumn kullanm

private void Page_Load(Object sender, EventArgs e) { string connStr = "Provider=Microsoft.Jet.OLEDB.4.0; + Data Source=" + Server.Mappath("./Stok.mdb"); OleDbConnection conn = new OleDbConnection(connStr); OleDbCommand cmdSelect = OleDbCommand ("Select * From linkler", conn); conn.Open(); DataGrid1.DataSource = cmdSelect.ExecuteReader(); DataGrid1.DataBind(); conn.Close(); }

Html <asp:DataGrid ID="DataGridLink" AutoGenerateColumns="False" EnableViewState="False" ShowHeader="False" CellPadding="10" Runat="Server"> <Columns> <asp:HyperLinkColumn DataNavigateUrlField="link_url" DataTextField="link_title" /> </Columns> </asp:DataGrid>

TemplateColumn
TemplateColumn,

kaytlar bir ablona uyarak grntleyen kolondur.

DataGrid hcreleri iinde grntlenecek verileri eitli kontroller kullanarak

ekrana yanstmak iin bu kolon kullanlr. Ancak TemplateColumn, kendi iinde HeaderTemplate, FooterTemplate, ItemTemplate ve EditItemTemplate olmak zere alanlara ayrlr. Kod 11.9 da TemplateColumn kullanm gsterilmektedir. TemplateColumn alannda, kitaba ait yazar ve aklama bilgileri grntlenir. Ancak bu iki kolon bilgileri HTML kodlaryla alnr.
Kod 11.9: DataGrid ierisinde TemplateColumn kullanm private void Page_Load(Object sender, EventArgs e) { string connStr= Provider=Microsoft.Jet.OLEDB.4.0; + Data Source=" + Server.Mappath("./Stok.mdb");

296

Modl 11:

OleDbConnection conn = new OleDbConnection(connStr); OleDbCommand cmdSelect = OleDbCommand("Select * From kitaplar",conn); conn.Open(); DataGrid1.DataSource = cmdSelect.ExecuteReader(); DataGrid1.DataBind(); conn.Close(); } HTML <asp:DataGrid ID="DataGrid1" AutoGenerateColumns="False" EnableViewState="False" ShowHeader="False" CellPadding="10" Runat="Server"> <Columns> <asp:BoundColumn DataField="kitap_baslik" /> <asp:TemplateColumn> <itemTemplate> <table> <tr> <td>Yazar:</td> <td><%# DataBinder.Eval( Container.DataItem, "kitap_yazar" )%></td> </tr> <tr> <td>Aklama:</td> <td><%# DataBinder.Eval(Container.DataItem, "kitap_aciklama" )%></td> </tr> </table> </itemTemplate> </asp:TemplateColumn> </Columns> </asp:DataGrid>

Modul 11:

297

ButtonColumn
ButtonColumn, Button kontrollerinin grntlenmesini salar. Uygulanacak metot kolon zerinde, button eklinde grntlenir. rnein Sepete Ekle gibi bir i iin Button kullanlr ve ButtonColumn ierisinde tanmlanr. ButtonColumn alan kullanarak Select ismindeki butona tkland zaman

kontroln arka plan rengi ve yaz kalnl deitirilir. UnSelect seildiinde kontrol eski haline getirilir.

Kod 11.9: DataGrid ierisinde ButtonColumn kullanm private void Page_Load(Object sender, EventArgs e) { string connStr = "Provider=Microsoft.Jet.OLEDB.4.0; + Data Source=" + Server.Mappath("./Stok.mdb"); OleDbConnection conn = new OleDbConnection(connStr); OleDbCommand cmdSelect = OleDbCommand("Select * From kitaplar", conn); conn.Open(); DataGrid1.DataSource = cmdSelect.ExecuteReader(); DataGrid1.DataBind(); conn.Close(); } void DataGrid1_ItemCommand(s, DataGridCommandEventArgs e) { if (e.CommandName =="select") { e.Item.BackColor = System.Drawing.Color.LightGreen;

298 e.Item.Font.Bold = true; } else { e.Item.BackColor = System.Drawing.Color.Blue e.Item.Font.Bold = False } } HTML

Modl 11:

<asp:DataGrid ID="DataGrid1" OnItemCommand="DataGrid1_ItemCommand" AutoGenerateColumns="False" CellPadding="10" Runat="Server"> <Columns> <asp:BoundColumn HeaderText="Kitap Ad" DataField="kitap_baslik" /> <asp:ButtonColumn CommandName="select" Text="Select!" /> <asp:ButtonColumn CommandName="unselect" Text="UnSelect!" /> </Columns> </asp:DataGrid> Select butonuna basldnda, DataGrid kontrolnn OnItemCommand

zelliinde belirtilen DataGrid1_ItemCommand isimli metot devreye girer. ItemCommand olayn tetikleyen DataGrid1_ItemCommand isimli metot, ilgili ilemleri gerekletirir.
Unselect dmesine tklandnda ise, yine OnItemCommand zelliinde tutulan DataGrid1_ItemCommand metodu devreye girer. Ancak tklanan butonun isimlerine gre yaplacak ilem belirlenir. if (e.CommandName="select") { e.Item.BackColor = System.Drawing.Color.LightGreen; e.Item.Font.Bold = true; } else { e.Item.BackColor = System.Drawing.Color.White; e.Item.Font.Bold = False; } e.CommandName, hangi buttonun tklandn belirtir. Tklanan butona gre hangi metodun uygulanacan belirler.

ButtonColumn zellikleri:
ButtonType: LinkButton veya PushButton

Modul 11:

299 CommandName DataTextField DataTextFormatString FooterText HeaderImageUrl HeaderText Text

EditCommandColumn
EditCommandColumn, Edit, Update, Cancel gibi dzenleme komutlarnn

grntlenmesini salar. EditCommandColumn ile sadece bir dzenlenebilir. Dzenlemenin veritaban gemesi ayr ilemler gerektirir.

satr

EditCommandColumn kolonunun grntledii kayt, dzenleme iin kayt

seen DataGrid nesnesinin EditItemIndex zelliine gre deiecektir. Dzenleme ileminin seili olmad durumda bu kolonda Edit butonu gzkr. Edit seildii anda ise Update ve Cancel butonlar gzkr.
EditCommandColumn zellikleri: ButtonType CancelText EditText FooterText HeaderImageUrl HeaderText UpdateText

300

Modl 11:

DataGrid Kontrolnde Sralama Ve Sayfalama

DataGrid kontrolnn kolonlarnda sralama yapmak iin hazrlanm zellikler

vardr. stee gre tm kolonlarda veya sadece belirli kolonlarda sralama yaplabilir.
DataGrid iindeki tm kolonlara sralama yapma izni vermek iin, varsaylan

olarak False olan AllowSorting zellii True yaplr. Ve SortCommand olayn tetikleyecek bir metot yazlr.

Kod 11.10: DataGrid ierisinde Sralama private void Page_Load(Object sender,EventArgs e) { If (! IsPostBack) { BindDataGrid( "kitap_baslik" ); } } void BindDataGrid(string strSortField) { String connStr = "Provider=Microsoft.Jet.OLEDB.4.0; + Data Source=" + Server.Mappath("./Stok.mdb"); OleDbConnection conn = new OleDbConnection(connStr); OleDbCommand cmdSelect = OleDbCommand("Select * From Kitaplar Order By " & strSortField, conn ); conPubs.Open("Select * From kitaplar", conn) conn.Open();

Modul 11:

301

DataGrid1.DataSource = cmdSelect.ExecuteReader(); DataGrid1.DataBind(); conn.Close(); } void DataGrid1_SortCommand (Object s, DataGridSortCommandEventArgs e) { BindDataGrid( e.SortExpression ); } Html <asp:DataGrid ID="DataGrid1" AllowSorting="True" OnSortCommand="DataGrid1_SortCommand" CellPadding="10" Runat="Server" /> BoundColumn kolonunun SortExpression zelliine ilgili kolon isimleri girilerek sralama yaplacak kolonlar belirtilebilir.

Sayfalama Sayfalarca uzunluktaki kaytlar bir seferde gstermek yerine sayfalara ayrmak daha kullanl olur. DataGrid kontrolnde sayfalama yapabilmek iin kontroln AllowPaging zellii True yaplr. Varsaylan deer False deeridir. PageIndexChanged olayn tetikleyecek bir metodun yazlmas gerekir.

Kod 11.11: DataGrid ierisinde Sayfalama private void Page_Load(Object sender, EventArgs e) { if (!Page.IsPostBack) { BindDataGrid(); } } void BindDataGrid() { string connStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source='"+Server.MapPath("./Stok.mdb")+"'"; OleDbConnection conn = new OleDbConnection(connStr); OleDbDataAdapter da = new OleDbDataAdapter("Select * From Kitaplar Order By Kitap_baslik", conn); DataSet ds = new DataSet(); da.Fill(ds); } private void DataGrid1_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e) { DataGrid1.CurrentPageIndex =e.NewPageIndex; } html <asp:DataGrid ID="DataGrid1"

302 AllowPaging="True" PageSize="5" OnPageIndexChanged="DataGrid1_PageIndexChanged" CellPadding="3" Runat="Server" />

Modl 11:

DataGrid kontrolnde sayfalama yapldnda kaytlar sayfalara ayrlr ve dier

sayfalara linkler verilir. PageSize zellii, bir sayfada ka kayt grntlenecei bilgisini tutar. Sayfalamaya ait stiller, tasarm penceresinde DataGrid kontrolne sa tklanp Property Builder ile seilebilir. DataGrid Kontrol zerinde Kayt Dzenleme lemleri
DataGrid kontrolnn EditCommand, UpdateCommand ve CancelCommand

olaylar kullanlarak DataGrid iinde grntlenen veriler zerinde istenilen deiiklikler yaplabilir. Ayn ekilde kayt silme ilemi de gerekletirilir. Dzenleme yaplacak kayt seildiinde EditCommand olay devreye girer.
EditItemIndex zellii ile dzenleme yaplacak kaydn indeksi alnr ve o

satrdaki tm veriler TextBox kontroll biiminde grnr. zerinde dzenleme yaplmasn istenmeyen kolona, BoundColumn alannn ReadOnly zelliine True deeri verilmelidir.
Update dmesine tklanlnda ise UpdateCommand olay devreye girer. lgili

kaydn Primary Key deeri alnr ve Primary Key ile gncelleme kodu altrlr.

PlaceHolder Kullanm
Programn alma zaman srasnda, kullancdan gelecek istee gre yeni kontroller eklenmek isteniyorsa PlaceHolder kontrol kullanlr. PlaceHolder kontrolnn amac, dinamik olarak eklenen bu kontrollerin bir arada tutulmasdr. Dinamik olarak oluturulan kontroller istenildii gibi dizayn edilebilir.
<asp:PlaceHolder id="PlaceHolder1" runat="server"> </asp:PlaceHolder>

alma zamannda forma yeni bir kontrol eklemek iin Controls.Add() metodu kullanlr.

Kod 11.12: PlaceHolder Eklemek private void Page_Load(Object sender, EventArgs e) { int i; Button btnNewButton;

Modul 11:

303

for (i = 1;i<=10;i++) { PlaceHolder1.Controls.Add( New LiteralControl("<p>Alan " & i & ": ")); PlaceHolder1.Controls.Add(New TextBox); } btnNewButton = New Button(); btnNewButton.Text = "Tklayn!"; PlaceHolder1.Controls.Add(btnNewButton); }

Konu 2: Connected ve Disconnected Uygulamalar Gelitirme

ADO.NET ile veriye erimek iin Connected ve Disconnected veri eriim yntemi kullanlr. Bu yntemler ile ASP.NET sayfalarnda veri alverii yaplr.

304

Modl 11:

ASP.NET uygulamalar web sunucular zerinde ilem yapaca iin performans ok nemlidir. Dolaysyla, alma modelinin yerinde seilmesi gereklidir. rnein veriler sadece grntlenmek amacyla alnacaksa Connected balant modeli kurulmal ve kaynaklar mmkn olan en az seviyede tketilmelidir. Ancak veri zerinde gncelleme ilemleri sz konusuysa disconnected balant modeli uygulanmaldr.

Modul 11:

305

Namespace

ADO.NET snflarn, ASP.NET uygulamas iinde kullanabilmek iin System.Data isimalan using yaplmaldr. Ayrca Access veri tabanna balant iin System.Data.OleDb isimalan import edilmelidir. Code behind sayfasnda using ilemi, Windows uygulamalarnda kullanlan biimdedir.
using System.Data; using System.Data.OleDb;

Inline kod yazmnda <%@ %> ifadeleri arasnda isim alanlar using yaplr.
<%@ using Namespace=System.Data %> <%@ using Namespace=System.Data.OleDb %>

306

Modl 11:

Modl zeti

34. 35. 36. 37. 38.

Veri balant kontrolleri nelerdir? Aklayn Repeater niin kullanlr? Aklayn DataList niin kullanlr? Aklayn DataGrid niin kullanlr? Aklayn DataGrid ile sayfalama nasl yaplr?

Modul 11:

307

Bu uygulamada, e-ticaret uygulamas ile Connected ve Disconnected veritaban ilemleri gerekletirilecektir. Bu uygulamada Uye kayt ve Uye giri ilemlerini gerekletirebileceksiniz. Ayrca kategoriye gre tm kitaplar listeleyecek ve kitap satn alma ilemini gerekletirebileceksiniz. Bu lab tamamlandktan sonra: Connect ve Disconnect veritaban ilemlerini reneceksiniz. DataSet ierisindeki veriyi Repeater, kontrollerinei balayabileceksiniz. DataGrid ve DataList

Connect Veritaban ilemleri


AspEticaret isimli projeyi an.

UyeKayit formu ile veritaban ilemlerinin yaplmas


UyeKayt web formunu an. UyeKayit web formunun Code Behind kodlar aadaki gibi olacaktr.
using System.Data.OleDb ;

private void btnKaydet_Click(System.Object sender, System.EventArgs e) { string connStr= "Provider=Microsoft.Jet.OleDB.4.0;+ Data Source=" & Server.MapPath("KitapDb.mdb");

308

Modl 11:

OleDbConnection conn = new OleDbConnection(); conn.ConnectionString = connStr OleDbCommand comm = new OleDbCommand(); comm.Connection = conn; comm.CommandType = CommandType.Text; comm.CommandText = "INSERT INTO Musteri(Ad,Soyad,Email,Sifre) values(@ad,@soyad,@email,@sifre)" ; comm.Parameters.Add("@ad", txtAd.Text); comm.Parameters.Add("@soyad", txtSoyad.Text); comm.Parameters.Add("@email", txtEmail.Text); comm.Parameters.Add("@sifre", txtSifre.Text); int sonuc; try { conn.Open(); sonuc = comm.ExecuteNonQuery(); } catch (Exception ex) { Response.Write(ex.Message); } finally { conn.Close(); } if (sonuc == 1) { Response.Redirect("Kayit.aspx"); } }

UyeGiris formu ile veritaban ilemlerinin yaplmas


UyeGiris web formunu an. UyeGiris web formunun Code Behind kodlar aadaki gibi olacaktr
using System.Data.OleDb; private void btnGiris_Click(System.Object sender, System.EventArgs e) { ' Session["user"] = "tamer"; string connStr ="Provider=Microsoft.Jet.OleDB.4.0;+ Data Source=" + Server.MapPath("KitapDb.mdb"); OleDbConnection conn = new OleDbConnection(); conn.ConnectionString = connStr; OleDbCommand comm =new OleDbCommand(); comm.CommandType = CommandType.Text; comm.CommandText = "Select * from Musteri Where Email=@email and + Sifre=@sifre"; comm.Connection = conn;

Modul 11:

309 comm.Parameters.Add("@email", txtEmail.Text); comm.Parameters.Add("@sifre", txtSifre.Text); bool sonuc; OleDbDataReader dr = OleDbDataReader(); try { conn.Open(); dr = comm.ExecuteReader(); if (dr.HasRows == true) { sonuc = true; if (dr.Read = true) { Session["user"] = dr.Item("Email"); Session["ad"] = dr.Item("Ad"); Session["soyad"] = dr.Item("Soyad"); Session["musteriId"] = Item("MusteriID"); } } else { sonuc = false; } dr.Close(); } catch (Exception ex) { Response.Write(ex.Message); } finally { if (conn.State == ConnectionState.Open) { conn.Close(); } } if (sonuc == true) { Response.Redirect("Default.aspx"); } Else { lblMesaj.Text = "Hatali kullanici adi veya sifre"; } }

KitapDetay formunun eklenmesi ve veritaban ilemlerinin yaplmas


ASPEticaret projesine KitapDetay isminde yeni bir web form ekleyin. Form zerine, tablodaki kontrolleri ekleyin belirtilen zelliklerini ayarlayn.
Kontrol Kontrol smi Label lblKitapAdi zellik Deer

310 Label lblYazarAdi Label lblFiyat Label lblAciklama Label lblMesaj Image imgResim TetxBox txtAdet Button btnSatinAl Text

Modl 11:

Satn Al

KitapDetay Web formun Html kodlar aadaki gibi olacaktr


<%@ Register TagPrefix="uc1" TagName="yan" Src="yan.ascx" %> <%@ Page Language="c#" AutoEventWireup="false" Codebehind="KitapDetay.aspx.cs" Inherits="AspEticaret.KitapDetay" %> <%@ Register TagPrefix="uc1" TagName="kategori" Src="kategori.ascx" %> <%@ Register TagPrefix="uc1" TagName="Ust" Src="Ust.ascx" %> <%@ Register TagPrefix="uc1" TagName="Alt" Src="Alt.ascx" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <title>KitapDetay</title> <meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR"> <meta content="C#" name="CODE_LANGUAGE"> <meta content="JavaScript" name="vs_defaultClientScript"> <meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema"> </HEAD> <body bgColor="#f0fff0"> <form id="Form1" method="post" runat="server"> <TABLE id="Table1" cellSpacing="0" cellPadding="0" width="700" align="center" border="0"> <TR> <TD bgColor="#99ccff" colSpan="3"><uc1:ust id="Ust1" runat="server"></uc1:ust></TD>

Modul 11:

311

</TR> <TR> <TD width="150" vAlign="top"><uc1:kategori id="Kategori1" runat="server"></uc1:kategori></TD> <TD vAlign="top" width="400"> <P><BR> </P> <P> <TABLE id="Table2" borderColor="#000033" cellSpacing="0" cellPadding="0" width="300" align="center" border="0"> <TR> <TD width="100" rowSpan="5"> <P align="center"><asp:image id="imgResim" runat="server"></asp:image></P> </TD> <TD> <P align="center"><asp:label id="lblKitapAdi" runat="server"></asp:label></P> </TD> </TR> <TR> <TD> <P align="center"><asp:label id="lblYazarAdi" runat="server"></asp:label></P> </TD> </TR> <TR> <TD> <P align="center"><asp:label id="lblFiyat" runat="server"></asp:label></P> </TD> </TR> <TR> <TD> <P align="center"><asp:label id="lblAciklama" runat="server"></asp:label></P> </TD> </TR> <TR> <TD> <P align="center">Adet: <asp:textbox id="txtAdet" runat="server" Width="68px"></asp:textbox>&nbsp; <asp:button id="btnSatinAl" runat="server" Text="Satn Al"></asp:button></P> </TD> </TR> <TR> <TD colSpan="2"> <P align="center"> <asp:Label id="lblMesaj" runat="server"></asp:Label></P> </TD> </TR> </TABLE> </P> </TD> <TD width="150" bgColor="#0099ff" vAlign="top"> <uc1:yan id="Yan1" runat="server"></uc1:yan></TD> </TR> <TR>

312

Modl 11:

<TD bgColor="#99ccff" colSpan="3"><uc1:alt id="Alt1" runat="server"></uc1:alt></TD> </TR> </TABLE> </form> </body> </HTML>

KitapDetay web formunun Code Behind kodlar aadaki gibi olacaktr.


using System.Data.OleDb ;

string kID; private void Page_Load(System.Object sender, System.EventArgs e) { If (Session["user"] == "") { Response.Redirect("Giris.aspx"); } kID = Request.Params("kID"); 'Response.Write(kID) string connStr= "Provider=Microsoft.Jet.OleDB.4.0;+ Data Source=" + Server.MapPath("KitapDb.mdb"); OleDbConnection conn = new OleDbConnection(); conn.ConnectionString = connStr; OleDbCommand comm =new OleDbCommand(); comm.CommandType = CommandType.Text; comm.CommandText = "Select * from Kitap Where KitapID =@kitapID"; comm.Connection = conn; comm.Parameters.Add("@kitapID",Convert.ToInt32(kID)); OleDbDataReader dr = OleDbDataReader(); try { conn.Open(); dr = comm.ExecuteReader(); if (dr.Read = True) { lblKitapAdi.Text = dr.Item("KitapAdi"); lblYazarAdi.Text = dr.Item("Yazar"); lblFiyat.Text = dr.Item("Ucret"); lblAciklama.Text = dr.Item("Aciklama"); imgResim.ImageUrl = "resimler/" + dr.Item("Image"); } dr.Close(); } catch (Exception ex) { Response.Write(ex.Message); } finally { If (conn.State == ConnectionState.Open) {

Modul 11:

313 conn.Close(); } } }

private void btnSatinAl_Click(System.Object sender, System.EventArgs e) { if (txtAdet.Text == "") { lblMesaj.Text = "Adet Giriniz"; return; } string connStr = Provider=Microsoft.Jet.OleDB.4.0;+ Data Source=" + Server.MapPath("KitapDb.mdb"); OleDbConnection conn = new OleDbConnection(); conn.ConnectionString = connStr; OleDbCommand comm = new OleDbCommand(); comm.Connection = conn; comm.CommandType = CommandType.Text; comm.CommandText = "INSERT INTO Siparis(MusteriID,SiparisTarihi,KitapID,Adet) values(@MusteriID,@SiparisTarihi,@KitapID,@Adet)"; comm.Parameters.Add("@MusteriID", Session["musteriId"]); comm.Parameters.Add("@SiparisTarihi", DateTime.Now.ToShortDateString); comm.Parameters.Add("@KitapID", CInt(kID)); comm.Parameters.Add("@Adet", txtAdet.Text); int sonuc try { conn.Open(); sonuc = comm.ExecuteNonQuery(); } catch (Exception ex) { Response.Write(ex.Message); } finally { conn.Close(); } if (sonuc = 1) { Response.Redirect("Satis.aspx"); } }

Disconnect Veritaban ilemleri


AspEticaret isimli projeyi an.

314

Modl 11:

Default formunun eklenmesi ve veritaban ilemlerinin yaplmas


ASPEticaret projesine Default isminde yeni bir web form ekleyin. Form zerine, tablodaki kontrolleri ekleyin belirtilen zelliklerini ayarlayn.
Kontrol Kontrol smi DataGrid dgEncokSatanlar zellik Deer

Default Web formun Html kodlar aadaki gibi olacaktr.


<%@ Register TagPrefix="uc1" TagName="yan" Src="yan.ascx" %> <%@ Page Language="cs" AutoEventWireup="false" Codebehind="Default.aspx.cs" Inherits="AspEticaret._Default" %> <%@ Register TagPrefix="uc1" TagName="kategori" Src="kategori.ascx" %> <%@ Register TagPrefix="uc1" TagName="Ust" Src="Ust.ascx" %> <%@ Register TagPrefix="uc1" TagName="Alt" Src="Alt.ascx" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <title>Default</title> <meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1"> <meta name="CODE_LANGUAGE" content="C#"> <meta name="vs_defaultClientScript" content="JavaScript"> <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5"> </HEAD> <body bgColor="honeydew"> <form id="Form1" method="post" runat="server"> <TABLE id="Table1" cellSpacing="0" cellPadding="0" width="700" align="center" border="0"> <TR> <TD bgColor="#99ccff" colSpan="3">

Modul 11:

315

<uc1:Ust id="Ust1" runat="server"></uc1:Ust></TD> </TR> <TR> <TD width="150" vAlign="top"> <uc1:kategori id="Kategori1" runat="server"></uc1:kategori></TD> <TD width="400" vAlign="top"> <P> <TABLE id="Table2" cellSpacing="0" cellPadding="0" width="350" align="center" border="0"> <TR> <TD style="HEIGHT: 55px"> <P align="center">En ok Satanlar</P> </TD> </TR> <TR> <TD> <DIV align="center"> <asp:DataGrid id="dgEncokSatanlar" runat="server" AutoGenerateColumns="False" Width="253px" BorderWidth="1px" BorderColor="#003333"> <HeaderStyle FontBold="True"></HeaderStyle> <Columns> <asp:HyperLinkColumn DataNavigateUrlField="KitapID" DataNavigateUrlFormatString="Kitapdetay.aspx?KID={0}" DataTextField="KitapAdi" HeaderText="Kitap Adi"> <HeaderStyle Width="275px"></HeaderStyle> </asp:HyperLinkColumn> <asp:BoundColumn DataField="Ucret" HeaderText="Fiyati"> <HeaderStyle Width="75px"></HeaderStyle> </asp:BoundColumn> </Columns> </asp:DataGrid></DIV> </TD> </TR> <TR> <TD></TD> </TR> </TABLE> </P> </TD> <TD width="150" bgColor="#0099ff" vAlign="top"> <uc1:yan id="Yan1" runat="server"></uc1:yan></TD> </TR> <TR> <TD colSpan="3" bgColor="#99ccff"> <uc1:Alt id="Alt1" runat="server"></uc1:Alt></TD> </TR> </TABLE> &nbsp; </form> </body> </HTML>

316

Modl 11:

DataSet ierisine DataTable Eklenmesi 12. Server Explorer penceresinden DataConnections seeneini sein 13. Veritaban tablo ve sorgularna erimek iin oluturduumuz, balant ierisinden Views seeneini sein. 14. Views ierisindeki EnCokSatanlar sorgusunu dsBook nesnesinin ierisine srkleyin. Default web formunun Code Behind kodlar aadaki gibi olacaktr.
using System.Data.OleDb; private void Page_Load(System.Object sender, System.EventArgs e) { if(!Page.IsPostBack) { string connStr = "Provider=Microsoft.Jet.OleDB.4.0;Data Source=" + Server.MapPath("KitapDb.mdb"); OleDbConnection conn = new OleDbConnection(); conn.ConnectionString = connStr; OleDbCommand comm = new OleDbCommand(); comm.CommandType = CommandType.Text; comm.CommandText = "SELECT Kitap.KitapAdi, "+ "Kitap.Ucret, Kitap.KitapID FROM Kitap INNER JOIN Siparis "+ "ON Kitap.KitapID = Siparis.KitapID GROUP BY "+ "Kitap.KitapAdi, Kitap.Ucret, Kitap.KitapID ORDER BY"+ "Count(Siparis.Adet) DESC"; comm.Connection = conn; OleDbDataAdapter da = new OleDbDataAdapter(); da.SelectCommand = comm; DataSet ds = new DataSet(); try { conn.Open(); da.Fill(ds, "EnCokSatanlar"); dgEncokSatanlar.DataSource = ds.Tables["EnCokSatanlar"]; dgEncokSatanlar.DataBind(); } catch(Exception ex) { Response.Write(ex.Message); } finally { if(conn.State == ConnectionState.Open) { conn.Close();

Modul 11:

317 } } } }

Kitap formunun eklenmesi ve veritaban ilemlerinin yaplmas


ASPEticaret projesine Kitap isminde yeni bir web form ekleyin. Form zerine, tablodaki kontrolleri ekleyin belirtilen zelliklerini ayarlayn.
Kontrol Kontrol smi DataList dlKitap zellik RepeatColumns Deer

Kitap Web formun Html kodlar aadaki gibi olacaktr.


<%@ Register TagPrefix="uc1" TagName="Alt" Src="Alt.ascx" %> <%@ Register TagPrefix="uc1" TagName="Ust" Src="Ust.ascx" %> <%@ Register TagPrefix="uc1" TagName="kategori" Src="kategori.ascx" %> <%@ Page Language="cs" AutoEventWireup="false" Codebehind="Kitap.aspx.cs" Inherits="AspEticaret.Kitap" %> <%@ Register TagPrefix="uc1" TagName="yan" Src="yan.ascx" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <title>Kitap</title> <meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR"> <meta content="C#" name="CODE_LANGUAGE"> <meta content="JavaScript" name="vs_defaultClientScript"> <meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">

318

Modl 11:

</HEAD> <body bgColor="#f0fff0"> <form id="Form1" method="post" runat="server"> <TABLE id="Table1" cellSpacing="0" cellPadding="0" width="700" align="center" border="0"> <TR> <TD bgColor="#99ccff" colSpan="3"><uc1:ust id="Ust1" runat="server"></uc1:ust></TD> </TR> <TR> <TD width="150" vAlign="top"><uc1:kategori id="Kategori1" runat="server"></uc1:kategori></TD> <TD vAlign="top" align="center" width="400"> <asp:datalist id="dlKitap" runat="server" RepeatColumns="2"> <ItemTemplate> <table width="180"> <tr align="center"> <td> <a href='KitapDetay.aspx?kID=<%# databinder.eval(Container.dataitem,"KitapID") %>'><img border=0 src='resimler/<%# databinder.eval(Container.dataitem,"Image") %>'> </a> </td> </tr> <tr align="center"> <td> <%# databinder.eval(Container.dataitem,"KitapAdi") %> </td> </tr> <tr align="center"> <td> <%# databinder.eval(Container.dataitem,"Yazar") %> </td> </tr> <tr align="center"> <td> <%# databinder.eval(Container.dataitem,"Ucret") %> </td> </tr> </table> </ItemTemplate> </asp:datalist> </TD> <TD width="150" bgColor="#0099ff" vAlign="top"> <uc1:yan id="Yan1" runat="server"></uc1:yan></TD> </TR> <TR> <TD bgColor="#99ccff" colSpan="3"><uc1:alt id="Alt1" runat="server"></uc1:alt></TD> </TR> </TABLE> </form> </body> </HTML>

Modul 11:

319

DataSet ierisine DataTable Eklenmesi 1. Server Explorer penceresinden DataConnections seeneini sein 2. Veritaban tablo ve sorgularna erimek iin oluturduumuz, balant ierisinden Tables seeneini sein. 3. Tables ierisindeki Kitap tablosunu dsBook nesnesinin ierisine srkleyin. Kitap web formunun Code Behind kodlar aadaki gibi olacaktr.
using System.Data.OleDb private void Page_Load(System.Object sender, System.EventArgs e) { string kategoriID = Request.Params["KategoriID"]; Session["KategoriID"] = kategoriID; //Response.Write(kategoriID) string connStr = "Provider=Microsoft.Jet.OleDB.4.0;Data Source=" + Server.MapPath("KitapDb.mdb"); OleDbConnection conn = new OleDbConnection(); conn.ConnectionString = connStr; OleDbCommand comm = new OleDbCommand(); comm.CommandType = CommandType.Text; comm.CommandText = "Select * from Kitap Where" + "KategoriID =@kID"; comm.Connection = conn; comm.Parameters.Add("@kID", Convert.ToInt32(kategoriID)); OleDbDataAdapter da = new OleDbDataAdapter(); da.SelectCommand = comm; DataSet ds = new DataSet(); try { conn.Open(); da.Fill(ds, "Kitap"); dlKitap.DataSource = ds.Kitap; dlKitap.DataBind(); } catch(Exception ex) { Response.Write(ex.Message); } finally { if(conn.State == ConnectionState.Open) { conn.Close(); } } }

320

Modl 11:

Modul 12:

Modl 12: ASP .NET ile Durum Ynetimi

Bu modlde ASP.NET Web uygulamalarnda kullanlan durum ynetimi zerinde durulacaktr. Durum ynetim alt yaps kullanlarak uygulama seviyesinde veri paylam gerekletirilebilir.

322

Modl 12:

Bu modl tamamlandktan sonra: ASP.NET Web uygulamalarnda kullanlan durum ynetim alt yapsn tanmlayabilecek,
Application ve Session ile web uygulamalarn ynetebilecek, Cookies ve Cookieless Session kavramlarn aklayabileceksiniz.

Durum Ynetimi

Web formlar stateless alr. Yani kullanclardan gelen isteklerin nereden geldii anlalmaz. Web sunucusuna yaplan her istekte web formlar yeniden oluturulur. ASP.NET, sunucuda uygulamaya ait zel bilgileri tutan ve sayfalar aras veri aktarm gerekletiren bir altyap salar.

Modul 12:

323

Sayfalar aras state ynetimi sayesinde sunucuda tutulan bilgiler yeniden kullanlabilir. Bylece veriler sunucuya gnderilip geri geldiinde kullancnn yeniden veri girii yapmasna gerek kalmaz. rnein bir Login sayfasna Bilge kullanc ismiyle giri yapldktan sonra, dier sayfalarda Merhaba Bilge mesajn verilebilir. Bu mesaj gstermek iin Bilge kullanc ad State ynetimi ile bir deikende tutulmaldr. Sunucu tarafl durum ynetimi birden fazla ynetim seenei sunar. Application state Session state Kullanc tarafl durum ynetimi ise genellikle cookie nesneleri ile salanr.

324

Modl 12:

Konu 1: Session

Kullanc bilgisayar ve web sunucusu arasnda kurulan balantya session denir. Bir session, birden fazla web sayfasn kapsayabilir. Kullancnn web uygulamasna girii ile k arasnda tutulan deikenlerdir ve bu deikenler kullancya zeldir. Session deikenlerine, uygulama sresince eriilip gerekli bilgiler hzl bir ekilde kullanlabilir. Sayfalar aras bilgi aktarmak iin pratik bir yntemdir. Veritabanna balant kurularak alnan ve uygulama iinde srekli kullanlan bilgiler session deikenleri iinde tutulur. ASP.NET session deikenlerini ynetirken HttpSessionState snfn kullanr.

Modul 12:

325

Kullanc web sunucusuna balanp bir ASP.NET sayfas grntlemeyi talep ettii zaman, sunucu, kullancya bir SessionID atar ve bu deeri kullancya gnderir. Kullanc uygulamadan kana kadar bu SessionID deikeni sunucuda tutulur.
Kod 12.1: SessionID private void Page_Load(Object sender,EventArgs e) { Response.Write(Session.SessionID); } Kod 12.2: Session Nesnesini kullanmak Login.aspx sayfas private void BtnGiris_Click(Object sender, EventArgs e) { Session[ad] = TxtAd.Text; Response.Redirect(Sayfam.aspx); } Sayfam.aspx sayfas private void Page_Load(Object sender,EventArgs e) { lblAd.Text = Session[ad] + Ho Geldiniz; }

ASP.NET uygulamalarnn, Session deikenlerine ait eitli zellikleri, web.config dosyas iinde tanmlanr.

326 <sessionState mode="InProc" stateConnectionString="tcpip=127.0.0.1:42424" sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes" cookieless="false" timeout="20" />

Modl 12:

in varsaylan attribute deerleri Visual Studio.NET tarafndan atanmtr.


SessionState

Mode: session deerlerinin nerede tutulacan belirler. InProc, deerler IIS iinde saklanr. StateServer deerler sunucuda arka planda alan ASP.NET state servisinde saklanr. SqlServer, deerler SQL Server iindeki tablolarda saklar. Cookieless: Varsaylan olarak False deerini alr. Session deikenlerinin kullanc bilgisayarnda cookie iinde tutulmasn belirler. True deeri verildiinde ise SessionID deeri URLye eklenerek kullancya geri yollanr. Timeout: Session deikenlerinin yaam sresini belirler. Varsaylan olarak 20 dakikadr. Baz tarayclarn cookie destei olmad dnldnde, kullancya ait bilgileri session deikenlerinde tutmak daha geerli olacaktr.

Session Deikenine lk Deer Vermek


Global.asax dosyasnda, Session nesnesinin Start olay prosedr iinde ilk deer verme ilemleri gerekletirilebilir. Kod 12.3 de Session_Start olaynn kullanm gsterilmektedir.

Kod 12.3: Session_Start void Session_Start(Object Sender,EventArgs e) { Session[ArkaPlan] = blue; Session[Yazi] = gray; }

Konu 2: Cookie
Kullanc tarafl durum ynetimi iin cookie deikenleri kullanlr. Internet sitelerinin ou istemci bilgisayarda cookie denilen kk metin dosyalar

Modul 12:

327

oluturur. Microsoft XP, Windows 2000 sistemlerinde cookie nesneleri C:\Documents And Settings\Kullanc Ad\Cookies klasrnde saklanr. Bir siteye ilk defa giri yapldnda cookie oluur. Daha sonra tekrar giri yapldnda cookie iindeki deerler okunur ve bu deerlere gre gerekli ilemler yaplr. rnein yelik sistemi ieren web sitelerindeki Beni Hatrla seenei bu mantkla alr. ASP.NET Cookie deikenlerini ynetirken HttpCookie snfn kullanr.
Cookie deikenleri iin yazma ve okuma ilemleri yaplrken Response ve Request nesneleri kullanlr.

rnek: Kullanc ad girilip Cookie yap butonuna tklannca kullanc tarafnda bir cookie oluturuluyor. Cookie oku butonuna tklandnda ise oluturulan cookie nesnesinden veri alnyor.

ekil 2.1: Cookie kullanm

Kod 12.4: Cookie oluturup okumak private void btnYap_Click(System.Object sender, System.EventArgs e) { // Cookie oluturmak iin verilen direktif. HttpCookie mycookie = new HttpCookie("sitem"); // Formdan Gelen Bilgileri Anahtarlara Yazar. mycookie["ad"] = txtad.Text; // Cookie'nin Biti Sresi. mycookie.Expires = DateTime.Now.AddDays(30); // Cookie'yi Gnder. Response.Cookies.Add(mycookie); } private void btnOku_Click(System.Object sender, System.EventArgs e) { ' Cookie'yi oluturur. HttpCookie mycookie; ' Cookie'yi kullanc tarafndan alr. myCookie = Request.Cookies("sitem"); ' Cookie'den gelen deerlerle formu doldurur. txtad2.Text = mycookie("ad");

328 }

Modl 12:

Cookie Trleri
ki tr Cookie vardr: Temporary (Geici)

Temporary

cookie nesneleri, session

cookie veya non-persistent

cookie olarak da isimlendirilir. Bu cookie ler sadece taraycnn hafzasnda

tutulup, tarayc kapatldnda tm temporary cookie nesneleri hafzadan atlrlar. Persistent (Kalc)

Modul 12:

329

Persistent

cookie nesneleri, temporary

cookie nesnelerinden farkl

olarak hafzadan silinecei zaman tutan bir deikene sahiptirler. Tarayc, kalc bir cookie isteinde bulunan bir sayfa atnda, cookie sabit diske yazlr. Bu tr cookie nesneleri kullanc bilgisayarnda istenilen srede tutulabilir.
Cookie nesnelerinin diskte tutulacann garantisi yoktur. Kullanc sabit diskinden bu dosyalar silmi olabilir.

330

Modl 12:

Konu 3: Application

Application nesnesinin tanmlanmas session nesnesine benzer. Ancak kullanm alan ok farkldr. Web uygulamasna giri yapan ilk kullancdan son kullancya kadar devam eder. Tm kullanclara ait olan bir deikendir. rnein sitenin ka kii tarafndan ziyaret edildii, Application nesnesinde bir deiken tanmlanarak belirlenebilir. Application deikenini kullanrken lock yaparak baka kullanclarn kullanmas engellenir ve deiken ile iiniz sonra unlock yaplmaldr.

Modul 12:

331

Session kullancya zg deikenleri tutarken Application uygulamann

kendisine ait deikenleri tutar. ASP.NET Application deikeni kullanrken HttpApplicationState snfn kullanr.
Kod 12.4: Application Deikeni Void Session_Start (Object sender, EventArgs e) If (Application("ziyaret") == null) { Application("ziyaret") = 0; } Application.Lock(); Application("Ziyaret") = Application("Ziyaret") + 1; Application.UnLock(); TextBox1.Text = "Ziyaret Says: " + Application("ziyaret").ToString(); }

Bu rnekte her bir yeni session aldnda, yani siteye her istek yapldnda ziyareti says birer artrlmaktadr. Application deikeni doldurulduktan sonra uygulama iinden armak iin Application(degisken_ismi) ifadesi kullanlr.

Application Deikenine lk Deer Vermek


Global.asax dosyasnda, Application nesnesinin Start olay prosedr iinde balang deerleri verilir. Bu olay prosedr uygulama almaya

332

Modl 12:

baladnda ve ilk istek geldiinde alr. Application deikeni Web uygulamas kaldrldnda sonlanr. Kod 12.5de Application_Start olaynn kullanmna rnek verilmitir.
Kod 12.5: Application_Start void Application_Start(Object sender,EventArgs e) { Application(ziyaret) = 0; }

Konu 4: Global.asax

Sadece sunucu zerindeki uygulama zerinde alabilen bir dosyadr. Global.asax, ASP.NET web uygulamasnn alt srada, eitli olaylar ele alacak bir dosyadr. Bu dosyann birok zellii vardr. Her bir web uygulamasna ait bir global.asax dosyas vardr. Global.asax dosyas, web uygulamasna ait sanal dosya iinde saklanr. Uygulamaya ait application ve session deikenlerine ilk deer vermek iin kullanlan balang ve biti olaylarn tutar. Bu dosyann tanmlanmas istee baldr. Eer bu dosya projede bulunmuyorsa, ASP.NET hibir application ve session olay prosedr tanmlanmam varsayar.

Modul 12:

333

Global.asax dosyasnda desteklenen olaylar kategoride toplanabilir:

Sayfaya bir istekte bulunulduunda stekte bulunan sayfa istemciye yollandnda Koullu application olaylar gerekletiinde

Koullu application olaylar ise tablo 12.1 de listelenmitir.


Olay ismi Aklama

Application_Start Uygulamann ilk almaya baladnda alr. Application_End Session_Start Session_End


Uygulama sona erdiinde alr. Yeni bir session olutuunda alr.

Session kapandnda alr.


olutuunda alr.

Application_Error Uygulamann almas srasnda bir hata


Tablo 12.1: Koullu Application olaylar

334

Modl 12:

Modl zeti

39. Session niin kullanlr? 40. Cookie niin kullanlr? 41. Cookie trleri nelerdir? 42. Application niin kullanlr?

Modul 12:

335

Lab 1: E-Ticaret Uygulamas Gelitirmek

Bu uygulamada session nesnesi ile KitapDetay sayfasna eriim engelenecektir. KitapDetay sayfasna sadece sisteme giri yapan kullanclar eriebilecektir. Bu lab tamamlandktan sonra: Session kullanmn reneceksiniz.

Session kullanmak
AspEticaret isimli projeyi an.

UyeGiris formu ierinde Session Kullanmak


UyeGiris web formunu an. UyeGiris web formunun Code Behind kodlar aadaki gibi olacaktr. UyeGiris kod dosyas ierisindeki iaretli satrlar, veri taban ierisinden ekilen kaytlarn session deikenlere aktarlmasn salar.
using System.Data.OleDb private void btnGiris_Click(System.Object sender, System.EventArgs e) { ' Session["user"] = "tamer";

336

Modl 12:

string connStr = Provider=Microsoft.Jet.OleDB.4.0;Data Source=" + Server.MapPath("KitapDb.mdb"); OleDbConnection conn = new OleDbConnection(); conn.ConnectionString = connStr; OleDbCommand comm = new OleDbCommand(); comm.CommandType = CommandType.Text; comm.CommandText = "Select * from Musteri + Where Email=@email and Sifre=@sifre"; comm.Connection = conn; comm.Parameters.Add("@email", txtEmail.Text); comm.Parameters.Add("@sifre", txtSifre.Text); Boolean sonuc; OleDbDataReader dr; try { conn.Open(); dr = comm.ExecuteReader(); if (dr.HasRows == True) { sonuc = True; if (dr.Read == True ) { Session["user"] = dr.Item("Email"); Session["ad"] = dr.Item("Ad"); Session["soyad"] = dr.Item("Soyad"); Session["musteriId"] = dr.Item("MusteriID"); } } else { sonuc = False; } dr.Close(); } catch (Exception ex) { Response.Write(ex.Message); } finally { If (conn.State == ConnectionState.Open) { conn.Close(); } } if (sonuc == True ) { Response.Redirect("Default.aspx") } else { lblMesaj.Text = "Hatali kullanici adi veya sifre"; } }

Modul 12:

337

KitapDetay formu ierinde Session Kullanmak


KitapDetay web formunu an. KitapDetay web formunun Code Behind kodlar aadaki gibi olacaktr. KitapDetay kod dosyas ierisindeki iaretli satrlar, kullancnn sisteme giriini kontrol etmektedir. Eer kullanc sisteme giri yapmadysa, user deikeni ierisine deer aktarlmaz. Bu durum kullancnn Giris.aspx sayfasna ynlendirilmesine sebeb olur.
using System.Data.OleDb

string kID private void Page_Load(System.Object sender, System.EventArgs e) { if (Session["user"] == "" ) { Response.Redirect("Giris.aspx"); } kID = Request.Params("kID"); 'Response.Write(kID) string connStr = "Provider=Microsoft.Jet.OleDB.4.0;Data Source=" + "Server.MapPath("KitapDb.mdb"); OleDbConnection conn ; conn.ConnectionString = connStr; OleDbCommand comm = new OleDbCommand(); comm.CommandType = CommandType.Text; comm.CommandText = "Select * from Kitap Where KitapID =@kitapID" ; comm.Connection = conn ; comm.Parameters.Add("@kitapID",Convert.ToInt32(kID)); OleDbDataReader dr = new OleDbDataReader(); Try { conn.Open(); dr = comm.ExecuteReader() If (dr.Read == true) { lblKitapAdi.Text = dr.Item("KitapAdi"); lblYazarAdi.Text = dr.Item("Yazar"); lblFiyat.Text = dr.Item("Ucret"); lblAciklama.Text = dr.Item("Aciklama"); imgResim.ImageUrl = "resimler/" + dr.Item("Image"); } dr.Close(); Catch (Exception ex) { Response.Write(ex.Message); } finally

338 { If (conn.State = ConnectionState.Open) { conn.Close(); } } }

Modl 12:

Ust kullanc kontrolu ierisinde Session kullanmak


Ust kullanc kontrolunu an. Ust kullanc kontrolunn Code Behind kodlar aadaki gibi olacaktr. Ust kod dosyas ierisindeki iaretli satrlar, session deikenin deerini lblAd isimli etikete yazmaktadr.
private void Page_Load(System.Object sender, System.EventArgs E) { if (Session["user"] != "" ) { lblAd.Text = "Bay / Bayan : " + Session["ad"] + " " + Session["soyad"]; btnCikis.Visible = true ; } else { btnCikis.Visible = false; } }

btnCikis butonunundaki iaretli kod satrlar, tm session deikenlerin deerini sfrlar.


private void btnCikis_Click(System.Object sender, System.EventArgs e) { Session.Abandon() ; btnCikis.Visible = false; Response.Redirect("Default.aspx"); }

You might also like