Professional Documents
Culture Documents
Profesyoneli 2
Software Professional 2
Yazan: Fulya SATAR – Engin ÖREN
Editörler: Tamer ŞAHİNER – Tuncer KARAARSLAN
Yayõna Hazõrlayan: Selçuk TÜZEL
Grafik Uygulama: Zeynep ÇÖMLEKÇİ
Kapak Tasarõmõ: Selim Şahin
Baskõ: Lebib Yalkõn
Şef Editör: Mehmet ÇÖMLEKÇİ
1. Baskõ: 2005
.NET yazõlõm teknolojisi ile yeni tanõşan ya da daha önceden .NET yazõlõm
geliştirme araçlarõyla kõsa bir süre çalõşma imkanõ bulmuş okurlar için temel bir
başvuru niteliğindeki bu yayõn ile windows ve web tabanlõ uygulamalar
geliştirebileceksiniz. Veri tabanõ programlama ve web programlama konula-
rõnda sizlerin çok iyi seviyelere gelmesine destek verecektir.
Eğitimcilerinizi yakõndan takip etmenizi sağlayacak bu yayõn ile bol bol örnek
kod inceleme fõrsatõna sahip olacaksõnõz.
Tuncer KARAARSLAN
İçindekiler
Panel.................................................................................214
Table.................................................................................214
Page.IsPostback.................................................................... 259
Visual Studio ortamõ, Visual Basic .NET projelerini kolay bir şekilde oluşturma
imkanõ sağlar. Projenin çalõşmasõ için gereken dosyalarõ otomatik olarak ekler.
Projenin geliştirilme aşamasõnda yeni bileşenlerin eklenmesi, menü ve araç çu-
buklarõ ile kolay bir şekilde gerçekleştirilir.
Geliştirme Ortamõnõ Tanõmak 5
Visual Basic .NET ile Windows tabanlõ ve Web tabanlõ gibi çeşitli projeler
geliştirilebilir. Bu projeler farklõ platformlarda çalõşacağõ veya farklõ amaçlara
yönelik oluşturulacağõ için, başlangõç bileşenleri farklõlõk gösterir. Örneğin, Win-
dows tabanlõ projeler için Windows formlarõnõn kullanõlmasõ ve bazõ referansla-
rõn eklenmesi gerekir. Visual Studio ortamõnõn sağladõğõ şablonlar, proje
dosyalarõnõn başlangõç kodlarõnõ otomatik olarak yazõp gerekli referanslarõ
ekleyerek geliştiriciye hõzlõ bir başlangõç sağlar.
! Windows Application: Windows tabanlõ uygulamalar geliştirmek için
kullanõlõr.
! Class Library: Diğer projeler için class kütüphaneleri sağlayan DLL
(Dynamic Link Library) oluşturmak için kullanõlõr. Bu bileşenler projelere
Reference olarak eklenerek tekrar kullanõlõr.
! Windows Control Library: Kullanõcõ tanõmlõ Windows kontrolleri
oluşturmak için kullanõlõr. Bu kontroller Windows uygulamalarõnda, bir-
çok formda tekrar kullanõlmak üzere tasarlanõr.
! Smart Device Application: Mobil cihazlar üzerinde uygulama geliştir-
mek için kullanõlõr.
! ASP.NET Web Application: IIS (Internet Information Services) üze-
rinde çalõşacak Web uygulamalarõ geliştirmek için kullanõlõr.
! ASP.NET Web Service: Web uygulamalarõna XML Web Service
sağlayan projeler geliştirmek için kullanõlõr. Oluşturulan bu projeler, di-
ğer uygulamalara Web Reference olarak eklenir.
! Web Control Library: Web uygulamalarõnda, kullanõcõ tanõmlõ kontrol-
ler oluşturmak için kullanõlõr.
6 Modül 1:
Visual Basic .NET ile oluşturulan bir projenin çalõşmasõ için gereken bazõ
dosyalar vardõr. Bu dosyalarõn birçoğu, projenin tipine göre farklõlõk gösterir.
Yeni bir proje açõldõğõnda, projeye verilen isim ile bir klasör açõlõr ve proje
dosyalarõ bu klasör altõna yerleştirilir.
! Solution Dosyalarõ (.sln, .suo). Visual Basic .NET projeleri bir solution
dosyasõ (.sln) altõnda oluşturulur. Solution dosyasõ farklõ projeleri bir
arada tutar ve birden fazla projeyi içinde barõndõrõr. Visual Studio ile
proje oluşturulurken solution dosyasõ otomatik olarak eklenir.
Solution User Option (.suo) dosyalarõ, kullanõcõnõn solution ile çalõşõr-
ken yaptõğõ ayarlarõ tutar ve proje tekrar açõldõğõ zaman bu ayarlarõ geti-
rir.
! Project Dosyalarõ (.vbproj, .vbproj.user). Bir projenin içinde bulunan
bileşenlerin, eklenen referanslarõn tutulduğu proje dosyasõdõr. Visual
Basic projeleri .vbproj uzantõlõ dosya ile oluşturulur. Bu dosya aynõ za-
manda, bir solution içinde farklõ dilde ve tipteki projeleri ayõrt etmek için
kullanõlõr. Projeye özgü ayarlar ise .vbproj.user dosyasõnda tutulur.
! Yerel Proje Dosyalarõ (.vb). Form, class, module gibi bileşenlerin tutul-
duğu dosyalardõr. .vb uzantõlõ bir dosya içinde birden çok class ve
module tutulabilir. Ancak projedeki her form için ayrõ bir .vb dosyasõ
oluşturulur.
! Web Projeleri Dosyalarõ (.aspx, .asmx, .asax). Web uygulamalarõnda
oluşturulan dosyalar Web sunucusunda (ISS) tutulur. Bu dosyalar web
formlarõ için .aspx, Web Service için .asmx, global sõnõfõ için .asax
uzantõsõna sahiptir.
8 Modül 1:
Assembly Nedir?
.NET içindeki tüm kütüphaneler, .NET Framework ismi verilen ortak çatõ altõnda
toplanõr. Bu çatõ altõndaki tüm kütüphaneler amaçlarõna göre namespace deni-
len isim alanõ altõnda gruplandõrõlõr. Bu isim alanõ içinde sõnõflar, arayüzler ve
modüller bulunur.
.NET içinde veritabanõ uygulamalarõ geliştirmek için System.Data.dll
kütüphanesine ihtiyaç duyulur. Bu kütüphane Visual Studio .NET içindeki tüm
proje şablonlarõnda otomatik olarak yer alõr. System.Data.dll kütüphanesi
içinde şu isim alanlarõ bulunur:
! System.Data
! System.Data.Common
! System.Data.SqlClient
! System.Data.OleDb
! System.Data.SqlTypes
! System.Xml
Geliştirme Ortamõnõ Tanõmak 13
Namespace Isimalani_ismi
...
End Namespace
Örnekte NSBilgeAdam isminde bir isim alanõ tanõmlanmõştõr. Bu isim alanõ içine
Egitim isminde bir sõnõf eklenmiştir.
Namespace NSBilgeAdam
Class Egitim
'...
End Class
Class Ogrenci
'...
End Class
' vs...
End Namespace
14 Modül 1:
NSBilgeAdam isim alanõ içindeki Ogrenci sõnõfõnõ kullanmak için, sõnõf ismi, isim
alanõ ile birlikte belirtilmelidir.
Proje ile aynõ isimdeki bir isim alanõ .NET derleyicisi tarafõndan yeni oluşturulan tüm pro-
jelere eklenir. Bu genel isim alanõna kök isim alanõ (root namespace) denir. Dolayõsõyla
yeni oluşturulan isim alanlarõ, kök isim alanõ ile birlikte belirtilmelidir.
Herhangi bir isim alanõ içinde birden fazla isim alanõ tanõmlanabilir. Örnekte
NSBilgeAdam isim alanõ içinde Idari, Egitim ve Ogrenci adõnda üç ayrõ isim
alanõ eklenmiştir.
Namespace NSBilgeAdam
' BilgeAdam isim alanõnda kullanõlacak
' Class, Module ve Interface’ler tanõmlanõr
Namespace Idari
Class Personel
End Class
End Namespace
Namespace Egitim
Class Grup
End Class
End Namespace
Namespace Ogrenci
Class Bilgi
End Class
End Namespace
'vs...
End Namespace
Geliştirme Ortamõnõ Tanõmak 15
Bir isim alanõ içinde yer alan sõnõflarõ tanõmlamak için, sõnõfõn bulunduğu
kütüphanenin yolunu eksiksiz olarak belirtmek gerekir. Ancak bu şekilde kulla-
nõmlar, kodun okunmasõnõ oldukça zorlaştõrõr. Örnekte sõnõflar bu yöntemle ta-
nõmlanmõştõr.
Her sõnõf için kütüphane yolunun tekrarõnõ ortadan kaldõrmak için, Imports
anahtar sözcüğü kullanõlõr. Imports sözcüğü ile eklenen isim alanlarõnõn
nesnelerine, proje içinden doğrudan erişilebilir.
Örnekte NSBilgeAdam isim alanõnõn projeye dahil edilmesi gösterilmektedir:
Imports bilgeadam.NSbilgeadam
NSBilgeAdam isim alanõnda bulunan bir sõnõfõ kullanmak için sadece ismini yaz-
mak yeterli olur:
İç içe isim alanlarõnõn kullanõmõnda, içteki isim alanõna kolayca erişmek için kõ-
saltmalar kullanõlabilir. Örnekte, NSBilgeAdam isim alanõ içindeki Ogrenci isim
alanõna erişim gösterilmektedir:
Inherits System.Windows.Forms.Form
' ...
End Class
Geliştirme Ortamõnõ Tanõmak 17
Solution Explorer paneli, bir solution içindeki tüm dosyalarõ görüntüler. Solution
içinde birden fazla proje bulunabildiği için, bu projeler sõralõ bir şekilde listelenir.
Koyu renkle gösterilen proje, solution içinde ilk çalõştõrõlacak projedir.
Bu panel ile solution içine proje ekleme ve silme, projelere yeni nesne ekleme
ve silme işlemleri gerçekleştirilir.
Panelin üst tarafõnda buluna araç çubuğu, dosyalar üzerinde bazõ işlemlerin
gerçekleştirilmesi için kõsayollar sunar. Örneğin araç çubuğundan Show All
Files komutu seçildiği zaman, projelerin bulunduğu klasördeki tüm dosyalar
gösterilir. Solution Explorer panelinde beyaz renkle gösterilen nesneler projeye
dahil edilmemiştir. Örneğin, proje klasöründe bulunan bir resim dosyasõnõ pro-
jeye dahil etmek için, resmi sağ tõklayõp Include In Project komutu verilmelidir.
Solution Explorer panelini görüntülemek için View menüsünden Solution Ex-
plorer komutunu verin.
Geliştirme Ortamõnõ Tanõmak 21
Object Browser, Visual Studio .NET içindeki kütüphane ve isim alanlarõnõ tüm
alt öğeleriyle ile beraber hiyerarşik şekilde listeler.
Object Browser’õ görüntülemek için, View Penceresinden Object Browser
komutunu verin.
Object Browser pencerenin sol üst köşesinde Browse alanõ Selected Compo-
nents seçeneği ile birlikte varsayõlan olarak görünür. Bu seçenek ile projeye da-
hil edilen referanslar ve bu referanslarla ilişkili isim alanlarõ hiyerarşik bir şekilde
listelenir.
Objects paneli içinden seçilen herhangi bir isim alanõ genişletilirse, içindeki tüm
öğeler hiyerarşik şekilde listelenir. Bu öğelerin herhangi biri seçildiğinde, o
öğeye ait tüm alt öğeler Members penceresinde listelenir.
Objects penceresinin sağ alt köşesinde ise, seçilen öğenin tanõmõnõ ve hangi
isim alanõnõn altõnda olduğu gösterilir.
22 Modül 1:
Server Explorer, Visual Studio .NET ortamõ içinde veri sağlayõcõlarla çalõşmayõ
kolaylaştõrmak için tasarlanmõş bir araçtõr. Ayrõca Server Explorer sunucu ma-
kine bileşenlerinin yönetimi ve kullanõmõnõ sağlar.
Server Explorer, Data Connections ve Servers olmak üzere iki sekmeden olu-
şur. Veri sağlayõcõlarõ ile çalõşmak için Data Connections seçeneği kullanõlõr.
Yeni bir veri sağlayõcõ oluşturmak için belirtilen adõmlarõ takip edin.
1. Server Explorer üzerinden Data Connections seçeneğini işaretleyin.
2. Data Connections seçeneğini sağ tõklayõn. Açõlan menüden Add
Connection komutunu verin.
3. Açõlan Data Link Properties penceresinden bağlantõ oluşturulur.
Servers sekmesinin altõndaki SQL Servers menüsünü kullanarak veritabanõ iş-
lemleri yerine getirilebilir ve veritabanõ nesneleri sürükle bõrak metodu ile form
üzerine sürüklenebilir.
Geliştirme Ortamõnõ Tanõmak 23
Visual Studio .NET, içinde çok fazla konuyu barõndõrdõğõ için tümüne hakim ol-
mak neredeyse imkansõzdõr. Bu nedenle yazõlõm geliştiricilerin işini kolaylaştõr-
mak için, Visual Studio .NET içinde dinamik yardõm kütüphanesi oluşturulmuş-
tur. Dinamik yardõm, uygulama geliştirirken yazõlan koda göre tüm yardõm
konularõnõ listeler.
Dinamik yardõmõ aktif hale getirmek için, Help menüsünden Dynamic Help komutunu ve-
rin.
24 Modül 1:
Görev Listesi, aktif proje içine görev eklemek için kullanõlõr. Bu görevler uygu-
lama gelişiminin takip edilmesini sağlar. Görev Listesi içine eklenen tüm görev-
ler önem sõrasõna göre sõralanabilir.
Görev Listesi aracõnõ proje ortamõnda aktif hale getirmek için View menüsünün
Other Windows alt menüsünden Task List komutunu seçin.
Görev Listesi aracõ üzerinde Click here to add a new task alanõ tõklanarak yeni
görev eklenebilir. Biten görevin önündeki onay kutusu tõklanarak görev
sonlandõrõlabilir.
Geliştirme Ortamõnõ Tanõmak 25
BreakPoint
RESİM 1.1.
Çalõşmanõn, şartõn belli bir sayõ kadar sağlandõğõ zaman durdurulmasõ için,
BreakPoint Properties penceresinde Hit Count düğmesi tõklanõr. BreakPoint Hit
Count penceresinde, şartõn gerçekleşme sayõsõ girilir. Örnekte, BreakPoint’e
beş defa veya daha fazla ulaşõldõğõ zaman durulmasõ belirtilir (Resim 1.5).
RESİM 1.2.
Geliştirme Ortamõnõ Tanõmak 27
Debug Panelleri
?sayi
40
sayi = 50
?sayi
50
! Command: Bu modda, Visual Studio ortamõnda tanõmlõ veya kullanõcõ
tanõmlõ makrolarõ, menü öğeleri kullanõlabilir. Command moduna geç-
mek için >cmd komutu kullanõlmalõdõr.
>cmd
>Debug.StepOver
>Help.About
Geliştirme Ortamõnõ Tanõmak 29
Visual Basic .NET ile geliştirilen uygulamalar çalõştõrõlmadan önce derleme işle-
minden geçer. Derleme işlemi ile kodun Visual Basic söz dizimine uygun yazõ-
lõp yazõlmadõğõ kontrol edilir ve kod çalõştõrõlmak üzere makine diline çevrilir.
Uygulamalarõn derlenmesi Build menüsünden yapõlõr.
! Build Solution: Solution içindeki, son derleme işleminden sonra deği-
şen projelerin derlenmesini sağlar.
! Rebuild Solution: Solution içindeki tüm projelerin tekrar derlenmesini
sağlar.
! Build “Proje İsmi”: Belirtilen projenin, son derleme işleminden sonra
değişen bileşenlerinin derlenmesini sağlar.
! Rebuild “Proje İsmi”: Belirtilen projenin tüm bileşenlerinin tekrar
derlenmesini sağlar.
Uygulama derlendikten sonra bulunan hatalar Task List panelinde görüntülenir.
Task List panelinde görüntülenen hatalar çift tõklanarak, hatanõn yapõldõğõ satõra
ulaşõlõr.
RESİM 1.3.
Visual Basic .NET ile uygulama geliştirirken yapõlan söz dizimi hatalarõ hemen Task List
paneline yansõr. Buna Background Compiling denir.
Geliştirme Ortamõnõ Tanõmak 31
Modül Özeti
1. Assembly nedir?
Kodlarõn Yazõlmasõ
1. Form1 nesnesinin kod sayfasõna geçin ve OleDbConnection oluşturan
bir fonksiyon yazõn.
con.Open()
con.Close()
34 Modül 1:
Hata Ayõklama
1. Formun Load olayõna bir BreakPoint yerleştirin.
2. Projeyi F5 tuşuna basarak çalõştõrõn. Başlangõç formu yüklendiği zaman
Load olayõ çalõşacağõ için, çalõşma belirtilen noktada durur.
3. Debug menüsünden Step Into komutunu seçerek ya da F11 tuşuna
basarak kod içinde ilerleyin. ConnectionOlustur isimli metodun içine
girildiği görülür.
4. ConnectionOlustur metodundan çõkõldõktan sonra, Locals panelini
açõn ve con isimli değişkeni inceleyin.
5. Command panelini açõn ve immed komutunu yazarak, Immediate
moduna geçin.
6. Command paneline msgbox(con.State) yazarak Connection
nesnesinin State özelliğini öğrenin.
7. Debug menüsünden Continue komutunu vererek ya da F5 tuşuna
basarak çalõşmanõn ilerlemesini sağlayõn.
8. Formu kapatarak uygulamayõ sonlandõrõn.
9. con.Open() kodunun bulunduğu satõra BreakPoint koyun ve sağ
tõklayarak BreakPoint Properties komutunu verin.
10. Condition düğmesini tõkayõn ve metin kutusuna con.State = 1 yazõn.
con nesnesinin State özelliği 1 (bağlantõ açõk) olduğu zaman çalõşma-
nõn durmasõ ayarlanõr.
11. OK düğmesini tõklayõn ve projeyi çalõştõrõn. Çalõşmanõn belirtilen nok-
tada durmadõğõ gözükür. Bunun nedeni, BreakPoint içinde verilen şartõn
sağlanmamasõdõr.
12. Formu kapatarak uygulamayõ sonlandõrõn ve Visual Studio ortamõndan
çõkõn.
Modül 2: Veri Merkezli Uygulamalar
ve ADO.NET’e Giriş
Veri Depolama
Günümüzde verileri saklamak için çeşitli teknikler kullanõlõr. Örneğin bir emlakçõ
emlak alõm-satõm bilgilerini dosya kağõtlarõ üzerinde depolayabilir. Bu yöntem
veri arama ve listeleme işlemlerinin karmaşõk hale gelmesine ve arama süresi-
nin uzamasõna sebep olur. Hatta daha büyük organizasyonlarda işlemlerin ya-
vaşlamasõna ve durmasõna sebep olabilir.
Artan ihtiyaçlar doğrultusunda veri depolamak ve depolanan veriye erişmek
için çeşitli veri depolama yöntemleri geliştirilmiştir. Bu yöntemler şunlardõr:
! Yapõsal Olmayan: Bu yöntem ile depolanan veriler için belirli bir
sõnõflandõrma ve sõralama yoktur. Veriler düz bir şekilde kaydedilir.
Örneğin basit not dosyalarõ.
! Yapõsal: Bu yöntem ile depolanan veriler çeşitli gruplara ayrõlarak
saklanõr, fakat bu gruplar arasõnda bir alt-üst ayrõmõ yapõlmaz. Örneğin
virgülle ayrõlmõş dosyalar (csv), Excel belgeleri.
! Hiyerarşik: Hiyerarşik depolama yöntemini ağaç yapõsõna benzetebili-
riz. Bu yöntemde veriler çeşitli kategorilere bölünerek depolanõr. Her bir
kategorinin içinde alt kategorilerde olabilir. Örneğin XML (eXtensible
Markup Language) dosyalarõ.
! İlişkisel Veritabanõ: İlişkisel veritabanlarõnda veriler tablolar üzerinde
depolanõr. Tablo içindeki her satõr kaydõ, her sütun ise veriyi ifade eder.
Örneğin SQL Server, Oracle, Access.
! Nesne Yönelimli Veritabanõ: En gelişmiş veri depolama yöntemidir.
Bu yöntemde veriler; ihtiyaca göre gruplandõrõlarak nesneler içinde
saklanõr. Örneğin Versant, AOL.
ADO.NET bu depolama tekniklerinin tümünü destekler.
40 Modül 2:
Bağlantõlõ veri ortamlarõ, uygulamalarõn veri kaynağõna sürekli bağlõ kaldõğõ or-
tamlardõr. Bu ortamlarda veri alma ve değiştirme işlemleri uygulama ile veri
kaynağõ arasõnda bağlantõ kurulduktan sonra gerçekleştirilir. Bağlantõlõ veri or-
tamlarõnda, veri işlemleri gerçekleştiği sürece bağlantõ açõk kalõr.
İlk bilgisayar üretiminden bugüne en çok tercih edilen yöntem bağlantõlõ veri or-
tamlarõ olmuştur. Bağlantõlõ ortamlar veriye erişmek için birçok avantaj sağlar.
Avantajlarõ
! En güvenli veri ortamõdõr.
! Veri kaynağõna yapõlan eş zamanlõ erişimlerde, veri kaynağõnõn kontro-
lünü kolaylaştõrõr.
Dezavantajlarõ
! Uygulama ile veri kaynağõ arasõnda gerçekleşen bağlantõyõ koruyabil-
mek için sabit bir ağ bağlantõsõnõn olmasõ gerekir.
! Uygulama ile veri kaynağõ arasõndaki bağlantõ ağ üzerinden gerçekleş-
tiği için, ağ trafiğinin yoğunluğunu artõrõr.
Örneğin araba üreten bir fabrikada yapõlan üretim bilgilerinin diğer birimlere
ulaştõrõlmasõ ve bu kayõtlarõn depolanmasõ için eşzamanlõ bir bağlantõ kurulmasõ
gereklidir. Ya da bir emlak firmasõnda emlakçõnõn, mülk ve menkul bilgilerini
güncel tutabilmesi için sabit bir bağlantõ kurmasõ gereklidir.
Geliştirme Ortamõnõ Tanõmak 41
Avantajlarõ
! Laptop, Notebook ve Pocket PC gibi araçlarla girilen veriler, istenilen
zamanda veri ortamlarõna aktarõlabilir.
! Çevrimdõşõ ortamlar sayesinde, verilerin depolandõğõ uygulama üzerin-
deki yük hafifletilir. Bu durum performans artõşõnõ sağlar.
Dezavantajlarõ
! Bağlantõsõz veri ortamlarõnda, verilerin güncel kalmasõna dikkat
edilmelidir. Bu ortamlarda veri güncelleme işlemleri farklõ zamanlarda
gerçekleştirilebilir. Veri üzerinde yapõlan bu değişimlerin diğer kullanõcõ-
lara gösterilebilmesi için çeşitli çözümler geliştirilmelidir.
42 Modül 2:
İlk bilgisayardan bugüne veriye erişmek için pek çok yöntem geliştirilmiştir. Bu
yöntemlerin bazõlarõnda amaç yerleşim, bazõlarõnda ise paylaşõm olmuştur.
Amacõn veriyi saklamak olduğu durumlarda paylaşõm konusunda çözüm aran-
mõş, amacõn veriyi birçok kullanõcõ arasõnda paylaştõrmak olduğu durumda ise
ana verinin nerede saklanacağõ konusunda çözüm yollarõ aranmõştõr.
Kullanõcõ sayõsõnõn ve verinin boyutunun artmasõyla, veri erişimi için bilinen mo-
deller de oldukça gelişmiştir. Birebir veri paylaşõmõ yerine, Internet üzerinden
çoklu kullanõcõ desteğine açõk veri erişim modelleri geliştirilmiştir. Günümüzde
gelinen son nokta ise, her an her yerden veriye kolayca erişmemizi sağlayan
XML Web Servis modelidir.
Veri merkezli uygulamalar geliştirmek için veri erişim modelleri kullanõlõr. Bir veri
erişim modelindeki her mantõksal birime katman (tier) denir. Veri merkezli bir
uygulamada katman sayõsõ makine sayõsõna bağlõ değildir. Katman sayõsõnõ veri
erişim modelindeki düzeyler belirler.
44 Modül 2:
ADO.NET Nedir?
ADO (ActiveX Data Objects), farklõ veri kaynaklarõna hõzlõ ve güvenli erişim için
Microsoft tarafõndan geliştirilen nesne modelidir. ADO.NET ise ADO teknolojisi-
nin en yeni versiyonudur. ADO ile aynõ programlama modelini kullanmamakla
birlikte, ADO modelinden gelen pek çok çözüm yolunu da beraberinde getirir.
Uygulama gelişim ihtiyacõ arttõkça, yeni uygulamalarda Web uygulama mode-
line olan bağlõlõk gittikçe azalmaktadõr. Şimdilerde ise ağ bağlantõlarõ üzerinden
veriyi rahatça aktarabilmek için XML kullanõmõna olan yönelim artmaktadõr. İşte
ADO.NET, XML ve ADO.NET’in .NET Framework içinde en uygun şekilde
programlama ortamõ oluşturmamõzõ sağlar.
ADO.NET modelinin diğer veri erişim modellerine göre üstünlüklerini şöyle
sõralayabiliriz:
! ADO.NET, veritabanõndan çekilen verilerin kopyasõnõ XML formatõnõ
kullanarak belleğe aktarõr.
! Uygulamanõn kullanõcõ sayõsõ arttõkça kaynak kullanõmõ da artar. N-kat-
manlõ (N-tier) uygulama yapõsõ kullanõlarak, uygulamalarõn katmanlar
üzerinden dağõtõlmasõ sağlanõr. Böylece uygulamalarõn ölçeklenirliği ar-
tar.
! ADO.NET ile bağlantõsõz veri ortamlarõ için uygulama geliştirilebilir.
! ADO.NET gelişmiş XML desteği verir.
48 Modül 2:
Hangi veri kaynağõ kullanõlacaksa, sadece ona uygun veri sağlayõcõ sõnõfõ kullanõlmalõdõr.
Geliştirme Ortamõnõ Tanõmak 49
Xxx yerine seçilen veri sağlayõcõsõna göre SQL, OLEDB, Oracle ve ODBC eklerinden biri
kullanõlõr.
Geliştirme Ortamõnõ Tanõmak 53
Modül Özeti
RESİM 2.1.
RESİM 2.2.
ODBC .NET veri sağlayõcõlarõ, diğer veri sağlayõcõlarõndan farklõ olarak, veri
kaynağõna bağlanõrken hiçbir ara katman kullanmaz. Bunun yerine, bağlantõ
için ODBC API’leri kullanõr.
.NET Framework veri sağlayõcõlarõ Tablo 3.2’de belirtilen sõnõflarõ kullanõr. Sõnõf
isimlerinin önündeki XXX ön eki kullanõlan veri sağlayõcõ ismini simgeler. Eğer
veritabanõna OLEDB veri sağlayõcõsõ ile bağlanõlõrsa OLEDB ön ekini, eğer SQL
Server veri sağlayõcõsõ ile bağlanõyorsa SQL ön ekini alõr.
Sõnõf Açõklama
XXXConnection Bağlantõ açmak ve kapatmak için kullanõlan sõnõftõr.
Parametre Tanõmõ
Provider Sadece OleDbConnection nesnelerinde kullanõlõr.
Bağlantõ sağlayõcõsõnõn ismini tutar. Sağlayõcõ isimleri
Tablo 3.4’te belirtilmiştir.
ConnectionTimeout veya Veritabanõ bağlantõ için beklenmesi gereken maksi-
Connect Timeout mum saniye sayõsõdõr. Varsayõlan değer 15 saniyedir.
Data Source SQL Server adõ, veya MS Access veritabanõ için dosya
adõ
Password (pwd) SQL Server login (giriş) parolasõ
Parametre Tanõmõ
WorkstationID (wid) Workstation veya client (istemci) adõnõ belirtir.
Tür Açõklama
SQLOLEDB SQL Server için Microsoft OLE DB Provider
cnNorthwind.ConnectionString = _
"User ID=sa;" & _
"Password=2389;" & _
"Initial Catalog=Northwind;" & _
"Data Source=London;" & _
"Connection TimeOut=60;"
cnNorthwind.ConnectionString = _
"Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:\Samples\Northwind.mdb;"
Örnekte Sql Server 6.5 veritabanõ için bağlantõ cümlesi oluşturulmuştur. SQL
Server 7.0 sürümünden eski bir veritabanõ sunucuna bağlantõ yapõldõğõ için
Provider özelliği SQLOLEDB olarak belirtiliyor. ProdServ isimli sunucudaki Pubs
veritabanõna, Windows hesabõ (SSPI) ile bağlanõlõyor.
cnNorthwind.ConnectionString = _
“Provider=SQLOLEDB;” & _
“Data Source = ProdServ; Initial Catalog = Pubs;” & _
“Integrated Security=SSPI;”
Microsoft Access veri kaynağõ, tek veritabanõndan oluşur. SQL Server veri kaynağõ ise
birden fazla veritabanõndan oluşur. Bu yüzden SQL Server veritabanõ bağlantõ cümlesinde
Initial Catalog parametresi kullanõlõr.
Veri Kaynaklarõna Bağlanmak 71
Tablo 3.5’te OLEDB ile Access’e bağlanmak için gerekli, örnek bağlantõ cümle-
leri gösterilmektedir.
Tablo 3.6’da ODBC ile SQL Server’a bağlanmak için gerekli örnek bağlantõ
cümleleri gösterilmektedir.
Tablo 3.7’de OLEDB ile SQL Server’a bağlanmak için gerekli örnek bağlantõ
cümleleri gösterilmektedir.
Tablo 3.8’de SQLClient ile SQL Server’a bağlanmak için gerekli örnek bağlantõ
cümleleri gösterilmektedir.
! Open
! Close
Open metodu, bağlantõ cümlesinde belirtilen veri kaynağõnõ açmak için kullanõlõr.
Close metodu, açõlan bağlantõyõ kapatmak için kullanõlõr. Close metodu ile
kullanõlmayan bağlantõlarõ kapatmak, kaynak tüketimini azaltõr.
Open metodu, uygulama ile veri kaynağõ arasõndaki bağlantõyõ, bağlantõ
cümlesinin Timeout parametresinde belirtilen süre içinde kurmaya çalõşõr. Eğer
belirtilen süre içinde bağlantõ gerçekleşmiyorsa, uygulama hata üretir. Bu süre
için herhangi bir değer belirtilmemişse, varsayõlan değer 15 saniyedir.
Daha önceden açõlmõş bir bağlantõ; kapatõlmadan tekrar açõlmaya çalõşõlõrsa,
uygulama yine hata üretir. Kapatõlan bağlantõnõn yeniden kapatõlmasõ hataya
yol açmaz.
Open metodu ile açõlan bağlantõnõn kapatõlmamasõ durumunda, “Garbage Col-
lector” adõ verilen çöp toplayõcõ devreye girerek bağlantõnõn kapatõlmasõnõ sağ-
lar. Bu durum bağlantõ değişkeninin geçici bir süre bellekte yer tutmasõna ne-
den olur.
cnNorthwind.ConnectionString = _
"Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:\Samples\Northwind.mdb;"
‘Bağlantõyõ açmak
cnNorthwind.Open()
Open metodu ile veri kaynağõ açõlõrken, çeşitli çalõşma zamanõ hatalarõndan do-
layõ bağlantõ açõlmayabilir ve uygulama hata üretebilir. Bu çalõşma zamanõ
hatalarõ;
! Sunucunun bulunamamasõndan,
! Veritabanõnõn bulunamamasõndan,
! Hatalõ kullanõcõ adõ veya parola girilmesinden,
! Donanõm veya yazõlõmdan kaynaklanabilir.
Try, Catch, Finally deyimlerini kullanarak bir bloğu oluşabilecek potansiyel
hatalardan korunur.
Try bloğu içinde, hata üretebilecek kodlar yazõlõr. Örneğin tüm veritabanõ işlem-
leri bu blok içersine yazõlmalõdõr.
Catch bloklarõ, uygulamanõn ürettiği hatalarõ, tiplerine göre sõralõ bir şekilde iş-
ler. Bu blok içine, yakalanan hataya göre yapõlacak işlemler yazõlmalõdõr. Örne-
ğin bağlantõnõn açõlmadõğõ bir durumda veritabanõ işlemleri gerçekleştirilmeye
çalõşõldõğõ zaman kullanõcõya bağlantõnõn açõlmasõnõ bildiren mesaj kutusu
çõkarõlabilir.
Finally bloğunda, Try ve Catch bloklarõndan herhangi biri işlendikten sonra
çalõşõr. Bu blokta, hatanõn üretildiği veya üretilmediği iki durumda da yapõlmasõ
gereken işlemler yazõlõr. Örneğin, bağlantõnõn kapatõlmasõ her iki durumda da
yapõlmasõ gereken bir işlemdir.
Try
cnNorthwind = New System.Data.SqlClient.SqlConnection
cnNorthwind.ConnectionString = _
"Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:\Samples\Northwind.mdb;"
cnNorthwind.Open()
' Veritabanõ işlemleri gerçekleştirilir.
Veri Kaynaklarõna Bağlanmak 79
Bağlantõ sõnõfõnõn durumu hakkõnda bilgi almak için, bağlantõ sõnõfõnõn State
özelliği kullanõlõr.
State özelliğinin alabileceği değerler Tablo 3.10’da belirtilmiştir.
Özellik Açõklama
CurrentState Bağlantõnõn yeni durumu hakkõnda bilgi verir.
End Sub
82 Modül 3:
Modül Özeti
Kontrollerin Eklenmesi
VeriTabaniBaglantisi isminde yeni bir Windows projesi açõn.
Form üzerine, tablodaki kontrolleri ekleyin belirtilen özelliklerini ayarlayõn.
RESİM 3.1.
Kodlarõn Yazõlmasõ
Veritabanõ bağlantõsõ oluşturmak için öncelikle bağlantõ cümlesi oluşturulmasõ
gerekir. Bu bağlantõ cümlesi, kullanõcõnõn gireceği bilgilere göre oluşturulur.
1. Bağlantõ cümlesi için gerekli bilgileri tutan değişkenleri tanõmlayõn.
lblConnectionString.Text = ConnectionString
End Sub
AddHandler sqlCon.StateChange, _
AddressOf DurumDegisti
End If
End Sub
Bağlantõlõ veri ortamlarõ, uygulamalarõn veri kaynağõna sürekli bağlõ kaldõğõ or-
tamlardõr. Bu ortamlarda veri alma ve değiştirme işlemleri uygulama ile veri
kaynağõ arasõnda bağlantõ kurulduktan sonra gerçekleştirilir.
Bağlantõlõ veri ortamlarõ ile veritabanõ üzerinde, gerekli tüm veritabanõ işlemleri
yapõlabilir.
! Veritabanõndan tek değer çekme
! Sadece okunabilir kayõt kümeleri döndürme
! Kayõt ekleme
! Kayõt silme
! Kayõt güncelleme
94 Modül 4:
Sõnõf Açõklama
XXXConnection Bağlantõ açmak ve kapatmak için kullanõlan nesnedir.
Command Nedir?
Command Oluşturmak
Özellik Açõklama
Name Command nesnesinin kod içinde kullanõlan ismidir.
Connection Command nesnesinin hangi Connection üzerinde çalõşacağõnõ
belirler. Bu özellik ile yeni Connection oluşturabilir veya varo-
lan Connection nesnesine bağlanõlabilir.
Parametre Kullanmak
Özellik Açõklama
ParameterName Parametrenin ismi, @Ad gibi
DbType ,SqlDbType, OleDbType Parametrenin veri türü. Kullanõlan
veritabanõna göre SqlDbType veya
OleDbType enumeratörlerinden seçilir.
Size Parametredeki verinin byte olarak maksi-
mum boyutu.
Direction Parametrenin türü.
ParameterDirection değerlerinden biri
ile belirtilir. Bu özelliğin alabileceği değer-
ler:
ParameterDirection.Input (varsayõ-
lan değer)
ParameterDirection.InputOutput
ParameterDirection.Output
ParameterDirection.ReturnValue
Enumeratör Özellik
Input Girdi parametresidir. Varsayõlan değerdir.
cmd.Parameters.Add(paramUser)
cmd.Parameters.Add(paramPass)
conn.Open()
MessageBox.Show(cmd.ExecuteScalar.ToString)
106 Modül 4:
ExecuteScalar metodu ile geriye değer döndürmek için, sadece Sum veya
Count gibi fonksiyonlar kullanõlmaz. Aynõ zamanda Select cümlesi veya
Stored Procedure ile geriye tek değer döndürülebilir. Örnekte Urun tablosun-
daki stok miktarõ SqlCommand nesnesi ile geriye döndürülür.
cmUrun.Parameters("@UrunID").Value = 42
cnAlisveris.Open()
cnAlisveris.Close()
DataReader, verilere tek yönlü (forward-only) ve okunabilir (read-only) eriştiği için oldukça
hõzlõdõr.
Bağlantõlõ (Connected) Veritabanõ İşlemleri 109
Metot Açõklama
Close DataReader nesnesini kapatõlõr ve hafõzadan kaldõrõr.
GetBoolean Belirli bir kolonun değerini boolean olarak geri döndürür.
GetByte Belirli bir kolonun değerini byte olarak geri döndürür.
GetBytes Belirli bir kolonun değerini byte dizisi olarak geri döndürür.
Metot Açõklama
GetOrdinal Belirli bir kolonun sõra numarasõnõ geri döndürür.
Özellik Açõklama
FieldCount DataReader içinde tutulan sütun sayõsõnõ belirtir.
IsClosed DataReader bağlantõsõnõn durumunu belirtir. Bağlantõ açõk ise
FALSE, kapalõ ise TRUE döndürür.
Item DataReader ile gelen verilere erişim sağlar.
RecordAffected DataReader ile gelen kayõt sayõsõnõ verir.
112 Modül 4:
! SQL Veri Kontrol Dili (Data Control Language-DCL): SQL Veri Kont-
rol Dili; bir veritabanõ kullanõcõsõ veya rolü ile ilgili izinlerin düzenlenme-
sini sağlar. Tablo 4.11 DCL komutlarõnõ ve fonksiyonlarõnõ göstermekte-
dir.
DENY Kullanõcõ, grup veya rolü herhangi bir eylem için engeller.
cmUrunTabloOlustur.CommandType = _
CommandType.Text
Try
connAlisveris.Open()
Dim kayitSayisi As Integer = _
cmUrunTabloOlustur.ExecuteNonQuery()
connAlisveris.Close()
MessageBox.Show(kayitSayisi & _
"kayõt eklendi.")
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
cmd.Parameters.Add("@UrunID", 1)
cmd.Parameters.Add("@UrunAdi", "DVD")
cmd.Parameters.Add("@StokMiktari", 15)
Try
connAlisveris.Open()
Dim kayitSayisi As Integer = _
cmd.ExecuteNonQuery()
connAlisveris.Close()
MessageBox.Show(kayitSayisi & _
" kayõt eklendi.")
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
116 Modül 4:
cmd.Parameters.Add("@UrunID", 1)
cmd.Parameters.Add("@StokMiktari", 30)
Try
connAlisveris.Open()
Dim kayitSayisi As Integer = _
cmd.ExecuteNonQuery()
connAlisveris.Close()
MessageBox.Show(kayitSayisi & _
" kayõt değiştirildi.")
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
cmd.Parameters.Add("@UrunID", 1)
Try
connAlisveris.Open()
Dim kayitSayisi As Integer = _
cmd.ExecuteNonQuery()
connAlisveris.Close()
MessageBox.Show(kayitSayisi & _
" kayõt silindi.")
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
Bağlantõlõ (Connected) Veritabanõ İşlemleri 117
Modül Özeti
Veritabanõnõn Oluşturulmasõ
Bu uygulamada kullanõlacak Personel tablosu için bir veritabanõ oluşturulmasõ
gerekir.
1. Microsoft Access ile “kisi” isminde bir veritabanõ oluşturun.
2. Veritabanõna Personel isminde bir tablo ekleyin ve tabloda belirtilen ko-
lonlarõ ekleyin.
Bağlantõlõ (Connected) Veritabanõ İşlemleri 119
Kontrollerin Eklenmesi
Personel isminde yeni bir Windows projesi açõn.
Form üzerine, tablodaki kontrolleri ekleyin belirtilen özelliklerini ayarlayõn.
Kontrol – Kontrol İsmi Özellik Değer
TextBox – txtAd BorderStyle FixedSingle
TextBox – txtSoyad BorderStyle FixedSingle
TextBox – txtDTarihi BorderStyle FixedSingle
TextBox – txtSehir BorderStyle FixedSingle
TextBox – txtAdres BorderStyle FixedSingle
Multiline True
ScrollBars Vertical
ComboBox – cbNo DropDownStyle DropDownList
Button – btnYeni Text Yeni
Button – btnIptal Text İptal
Button – btnKaydet Text Kaydet
Button – btnSil Text Sil
RESİM 4.1.
Kodlarõn Yazõlmasõ
Personel tablosu üzerinde işlem yapõlmasõ için veritabanõna bağlantõ açõlmasõ
gerekir. Bu bağlantõ için gereken Connection String ifadesinin merkezi bir yer-
den alõnmasõ, değişiklik durumunda kolaylõk sağlar.
1. Projeye bir modül ekleyin ve bağlantõ dizisini tanõmlayõn.
120 Modül 4:
ExecuteNonQuery Metodu
2. Veritabanõna yeni bir personel kaydõ eklemek için gereken kodlarõ bir
yordam altõnda yazõn.
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 ex As Exception
MessageBox.Show(ex.Message)
Finally
conn.Close()
End Try
End Sub
3. Verilen bir Personel numarasõna göre tablodan kayõt silme işlemini ger-
çekleştiren kodlarõ yazõn.
ExecuteReader ve DataReader
4. ComboBox kontrolüne personel numaralarõnõ dolduran kodlarõ yazõn. Bu
ComboBox, personel kayõtlarõnõ numaraya göre seçmek için kullanõlõr.
Try
conn.Open()
dr = comm.ExecuteReader()
Do While dr.Read = True
cbNo.Items.Add(dr.Item("Numara"))
Loop
Catch ex As Exception
MessageBox.Show(ex.Message)
Finally
dr.Close()
conn.Close()
End Try
End Sub
122 Modül 4:
Try
conn.Open()
dr = comm.ExecuteReader
If dr.Read = True Then
txtAd.Text = dr.Item("Ad").ToString
txtSoyad.Text = dr.Item("Soyad").ToString
txtAdres.Text = dr.Item("Adres").ToString
txtSehir.Text = dr.Item("Sehir").ToString
txtDTarihi.Text = _
dr.Item("DogumTarihi")
End If
Catch ex As Exception
MessageBox.Show(ex.Message)
Finally
dr.Close()
conn.Close()
End Try
End Sub
btnIptal.Enabled = False
Me.IDDoldur()
cbNo.SelectedIndex = cbNo.Items.Count - 1
End If
End Sub
9. btnYeni düğmesinin Click olayõnda formu, yeni kayõt eklemek için ha-
zõrlayan Temizle yordamõnõ kullanõn.
Sõnõf Açõklama
XXXDataAdapter Connection, Command ve DataReader sõnõflarõnõ kullana-
rak, verilerin DataSet’e doldurulmasõnõ ve DataSet’te yapõ-
lan değişikliklerin veritabanõna kaydedilmesini sağlar. Örneğin
SqlDataAdapter sõnõfõ SQL Server ile DataSet arasõndaki
etkileşimi sağlar.
XXXConnection Bağlantõ açmak ve kapatmak için kullanõlan nesnedir. Örneğin
SqlConnection SQL Server’a bağlantõ sağlar.
XXXCommand Veritabanõ üzerinde Stored Procedure (Saklõ Yordam) veya
SQL cümleleri çalõştõrmak için kullanõlan nesnedir. Örneğin
SqlCommand SQL Server üzerinde Stored Procedure veya
SQL cümleleri çalõştõrmayõ sağlar.
XXXDataReader Veritabanõndan sadece okunur ve ileri hareketli kayõtlar çek-
mek için kullanõlõr. Örneğin SqlDataReader ile SQL Server
üzerinden kayõtlar okunur. Kayõtlar SqlCommand nesnesinin
ExecuteReader metodu ile DataReader’a aktarõlõr.
132 Modül 5:
Veri kaynağõndan DataAdapter ile çekilen verilerin çekirdek belleğe atõlan kop-
yasõ DataSet içinde saklanõr. DataSet ile bu veriler üzerinde gerekli
düzenlemeler yapõldõktan sonra, veriler aynõ DataAdapter ile veritabanõna
aktarõlõr.
DataSet’in temel özellikleri aşağõda listelenmiştir:
! Veri sağlayõcõ türünden bağõmsõz çalõşõr: DataSet tüm veri sağlayõcõ-
larõ ile kullanõlabilir. Tamamen türden bağõmsõz çalõşõr.
! Sürekli çevrimdõşõdõr: DataAdapter nesnesi ile veriler DataSet içine
aktarõlõr ve bağlantõ kapatõlõr. Bağlantõ kesildikten sonra yapõlan tüm
değişiklikler DataSet içine kaydedilir. Bu durum uygulamanõn çevrim-
dõşõ çalõşmasõnõ sağlar.
! Değişikliklerin kaydõnõ tutar: DataSet içinde yapõlan tüm değişiklikler,
DataAdapter nesnesi ile veri kaynağõna aktarõlõr.
! Birden fazla tablo bulundurabilir: İlişkisel veritabanlarõnda olduğu
gibi, birden fazla tablo ve ilişkileri hafõzada tutmanõn tek yolu DataSet
kullanmaktõr.
Bağlantõsõz (Disconnected) Veritabanõ İşlemleri 133
da.Fill(ds, "kitaplar")
DataGrid1.DataSource = ds.Tables("kitaplar")
DataSet sõnõfõnõn Tables koleksiyonu ile DataSet içine bir veya birden çok
DataTable eklenebilir. DataSet sõnõfõnõn Relations koleksiyonu ile DataSet
içine bir veya birden çok DataRelation eklenebilir.
Örnekte dtKitaplar isminde yeni bir DataTable oluşturulmaktadõr.
Ds.Tables.Add(dtKitaplar)
Örnekte DataTable nesnesi için Ucret, KDV ve Tutar isminde 3 adet kolon
oluşturulmuştur. Örnekteki KDV kolonu, Ucret kolonun %17 değeri üzerinden
hesaplanõr. Tutar kolonu ise Ucret ve KDV değerinin toplamõ ile hesaplanõr.
DataAdapter sõnõfõ, DataSet ile veri kaynağõ arasõnda köprü oluşturur. Veri
kaynağõna yapõlan bağlantõ ile verilerin DataSet nesnesine aktarõlmasõnõ sağ-
lar. DataAdapter ayrõca DataSet üzerinde yapõlan değişikliklerin veri kayna-
ğõna aktarõlmasõnõ sağlar.
Örnekte, OleDbDataAdapter ile çekilen veriler ds ismindeki DataSet nesne-
sine aktarõlõr. DataSet içindeki veriler DataGrid ile ekranda gösterilir.
da.Fill(ds, "kitaplar")
DataGrid1.DataSource = ds.Tables("kitaplar")
DataAdapter ile veri çekmenin diğer bir yöntemi SELECT sorgusu ile Command
nesnesi oluşturmaktõr. Oluşturulan Command, DataAdapter nesnesinin
SelectCommand özelliğine atanõr. Örnekte Command ile DataAdapter nesnesi-
nin beraber kullanõmõ gösterilmektedir.
da.Fill(ds, "kitaplar")
DataGrid1.DataSource = ds.Tables("kitaplar")
da.Fill(ds, "kitaplar")
da.Fill(ds, 0, 5, "kitaplar")
da.Update(ds, "siparisler")
Bağlantõsõz (Disconnected) Veritabanõ İşlemleri 139
DataSet nesnesi ile veritabanõnõn bir kopyasõ çekirdek belleğe atõldõktan sonra,
bu veriler çeşitli Windows kontrolleri ile gösterilebilir veya değiştirilebilir. Bu
kontrollerin en önemlisi DataGrid bileşenidir.
140 Modül 5:
DataSet nesnesin içerdiği veri, Windows Form içindeki herhangi bir kontrolün
herhangi bir özelliğine bağlanabilir. Örneğin DataSet içindeki bir tablonun ilk
satõr ve sütunundaki veri, TextBox kontrolünün Text özelliğine bağlanabilir.
DataSet içindeki veriyi Windows kontrollere bağlamanõn iki yöntemi vardõr. Bu
yöntemler basit (simple data binding) ve karmaşõk (complex data binding) veri
bağlama olarak adlandõrõlõr.
Basit veri bağlama; DataSet içindeki bir veri elemanõnõ (DataTable kolonunu)
Windows kontrollere bağlama işlemidir. TextBox, Label, RadioButton gibi
kontroller bu gruba girer. Örneğin, DataSet tablosundaki herhangi bir kolonu
TextBox, Label gibi Windows kontrollere bağlamak.
Karmaşõk veri bağlama; DataSet içindeki birden fazla veri elamanõnõ Windows
kontrollerine bağlama işlemidir. DataGrid, ListBox, ErrorProvider gibi kont-
roller bu gruba girer.
Örnekte, Dataset içindeki kitap_baslik kolonunun değeri, TextBox ve
Label kontrollerin Text özelliğine aktarõlõr.
TextBox1.Text = _
ds.Tables("kitaplar").Rows(2).Item("kitap_baslik")
Label1.Text = _
ds.Tables("kitaplar").Rows(2).Item("kitap_baslik")
Bağlantõsõz (Disconnected) Veritabanõ İşlemleri 141
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
TreeView1.Nodes(0).Text = _
ds.Tables("kitaplar").Rows(1).Item("kitap_baslik")
DataGrid1.DataSource = ds.Tables("Kitaplar")
Bağlantõsõz (Disconnected) Veritabanõ İşlemleri 143
DataRow nesnesi tanõmlandõktan sonra, index veya kolon isimleri üzerinden ko-
lonlara değer girilir. Örnekte birinci kolona kitabõn ISBN numarasõ, ikinci kolona
ise yazar adi bilgileri girilmiştir.
drNew(0) = “975-8725-14-9”
drNew(1) = “Tamer Şahiner”
veya
drNew(“kitap_ISBN”) = “975-8725-14-9”
drNew(“kitap_yazar”) = “Tamer Şahiner”
144 Modül 5:
dtKitaplar.Rows.Add(drNew)
DataRow ile DataTable içindeki kayõtlar değiştirilebilir. DataRow nesnesi ile satõr
düzenleme işlemleri için aşağõdaki metotlar kullanõlõr.
! BeginEdit
! EndEdit
! CancelEdit
BeginEdit, veriyi düzenlerken oluşabilecek olaylarõ askõya alõr. Veriyi düzenle-
mek için Items koleksiyonu kullanõlõr. EndEdit metodu ile, askõya alõnan olay-
lar yeniden aktif edilir. CancelEdit metodu ile değişikliklerden ve askõya alõnan
olaylardan vazgeçilir. Örnekte, DataTable içindeki dördüncü kayõt için güncel-
leme işlemi yapõlmõştõr.
DataRow ile DataTable içindeki belirli bir satõr silinebilir. Örnekte, DataTable
içindeki dördüncü kayõt silinmiştir.
DrSil.Delete()
146 Modül 5:
cmKitaplar.Position += 1
End If
End Sub
Veritabanõnõn Oluşturulmasõ
Bu uygulamada kullanõlacak Personel tablosu için bir veritabanõ oluşturulmasõ
gerekir.
1. Microsoft Access ile kisi isminde bir veritabanõ oluşturun.
2. Veritabanõna Personel isminde bir tablo ekleyin ve tabloda belirtilen
kolonlarõ ekleyin.
Bağlantõsõz (Disconnected) Veritabanõ İşlemleri 149
Kontrollerin Eklenmesi
Baglantõsõz_Personel isminde yeni bir Windows projesi açõn.
Form üzerine, tablodaki kontrolleri ekleyin belirtilen özelliklerini ayarlayõn.
RESİM 5.1.
RESİM 5.2.
Bağlantõnõn Oluşturulmasõ
Kisi veritabanõna bağlantõ sağlamak için OleDbConnection oluşturun.
Bağlantõsõz (Disconnected) Veritabanõ İşlemleri 151
Kodlarõn Yazõlmasõ
1. btnDDoldur kontrolünün Click olayõna kayõtlarõ DataGrid kontrolüne
dolduran kodlarõ yazõn.
Try
conn.Open()
da.Fill(Ds1, "Personel")
Catch ex As Exception
MessageBox.Show(ex.Message)
Finally
conn.Close()
End Try
Try
conn.Open()
da.Update(Ds1, "Personel")
Catch ex As Exception
MessageBox.Show(ex.Message)
Finally
conn.Close()
End Try
BindingContext(Ds1, "Personel").EndCurrentEdit()
BindingContext(Ds1, "Personel").AddNew()
BindingContext(Ds1, "Personel").CancelCurrentEdit()
Bağlantõsõz (Disconnected) Veritabanõ İşlemleri 153
BindingContext(Ds1, "Personel").EndCurrentEdit()
BindingContext(Ds1, "Personel").RemoveAt(BindingContext(Ds1,
"Personel").Position)
BindingContext(Ds1, "Personel").Position = 0
BindingContext(Ds1, "Personel").Position -= 1
BindingContext(Ds1, "Personel").Position -= 1
10. btnSon kontrolünün Click olayõna son kayda giden kodu yazõn.
BindingContext(Ds1, "Personel").Position = _
BindingContext(Ds1, "Personel").Count - 1
154 Modül 5:
“City DESC”
Veriler artan ve azalan olmak üzere iki şekilde sõralanabilir. Sõralanacak kolo-
nun sonuna; azalan sõralama için DESC, artan sõralama için ASC anahtar söz-
cüğü yazõlõr.
recordStates ise, kayõtlarõn durumuna göre, (Deleted, Modified gibi) seçim
yapar.
Bağlantõsõz (Disconnected) Veritabanõ İşlemleri 157
Örnekte, müşteri adõ “V” ile başlayan veya Sipariş Numarasõ 10300’den büyük
kayõtlar sorgulanmaktadõr:
Modül Özeti
RESİM 5.3.
Kontrollerin Eklenmesi
Dershane isminde yeni bir Windows projesi açõn.
Form üzerine, tablodaki kontrolleri ekleyin belirtilen özelliklerini ayarlayõn.
Kontrol – Kontrol İsmi Özellik Değer
DataGrid – dgOgrenci ReadOnly True
DataGrid – dgKurs ReadOnly True
ComboBox – cbBolum DropDownStyle DropDownList
Button – btnListele Text Listele
Label – Label1 Text Bolüm
RESİM 5.4.
RESİM 5.5.
Bağlantõnõn Oluşturulmasõ
Dershane veritabanõna bağlantõ sağlamak için OleDbConnection oluşturun.
Kodlarõn Yazõlmasõ
1. Form kontrolünün Load olayõna kayõtlarõ DataSet tablolarõna dolduran kod-
larõ yazõn.
Try
Conn.Open()
daBolum.Fill(Ds1, "Bolum")
daOgrenci.Fill(Ds1, "Ogrenci")
daKurs.Fill(Ds1, "Kurs")
Catch ex As Exception
MessageBox.Show(ex.Message)
Finally
Conn.Close()
End Try
ASP.NET, multi-tier (çok katmanlõ) veri erişim modelini kullanõr. Bu veri erişim
modeli İstemci,İş ve Veri katmanlarõndan oluşur.
ASP.NET, ASP ve diğer Web platformlarõna göre daha yüksek performans ile
çalõşõr. ASP.NET bu performans artõşõnõ Visual Studio .NET ile gelen, .NET
Framework ve CLR (Common Language Runtime) ile sağlar.
ASP.NET platformunu en verimli şekilde kullanmayõ sağlayan CLR bileşenleri
aşağõdaki gibidir.
! Type Management
! Memory Management
! JIT Compilation
! Exception Manager
174 Modül 6:
CLR ile hafõza yönetimi otomatik olarak işlenir. New anahtar sözcüğü ile
oluşturulan nesneler için, CLR hafõzada yer ayõrõr. Nesneler referanslarõnõ
kaybettikten sonra “Garbage Collection” mekanizmasõ ile bellekten silinir.
ASP.NET’e Giriş 177
Microsoft .NET platformu, geniş çaplõ Web uygulamalarõ geliştirebilmek için ge-
rekli her türlü araç ve teknolojiye sahiptir. Dilden bağõmsõz çalõşabilme, eski tek-
nolojiden yeni teknolojilere kolayca geçiş imkanõ sağlar. Tamamen nesne yöne-
limli programlamayõ destekleyen bir platform olan Visual Studio .NET, Web uy-
gulamalarõnda da nesne yönelimli programlama modelini destekler.
RESİM 6.1.
.NET Framework, ASP.NET ile uygulama geliştirmek için birçok avantaj sağlar.
Bu avantajlar aşağõda listelenmiştir:
! Visual Studio .NET ortamõnõn en büyük avantajõ, birden fazla dili
destekliyor olmasõdõr. ASP.NET ile geliştirilen uygulamalarda, farklõ
.NET dilleri bir arada kullanõlabilir. Örneğin VB.NET ile geliştirilen bir uy-
gulama içine C# ile yazõlan kod bloklarõ eklenebilir.
! Visual Studio .NET, Web uygulamalarõn güvenliğini sağlayan çeşitli
sõnõflar içerir. Bu sõnõflar System.Web.Security isim alanõ içinde bulu-
nur.
! ASP .NET sayfalarõ içinde, HTML ve kaynak kod birlikte çalõştõrõlõr. Bu
durum tasarõm ve programlama kolaylõğõ sağlar.
! ASP.NET içinde kodlar satõr satõr derlenmez. Bunun yerine Web form-
lar derlenir. Bu durum performansõn artõşõnõ sağlar.
! Güçlü hata yakalama araçlarõ sunar.
! Web servisleri ile birlikte çalõşabilir.
! ASP.NET, ADO.NET kullanõmõnõ kolaylaştõran Web nesneleri içerir.
182 Modül 6:
IIS Nedir?
IIS (Internet Information Services), Windows sistemler için Web tabanlõ uygu-
lama geliştirme ve yayõnlama amacõyla kullanõlan Web sunucusudur.
184 Modül 6:
IIS Kurulumu
Web uygulamalarõ geliştirmek için IIS 5.0 veya daha üst versiyonu kurulmalõdõr.
IIS, Windows 2000 Server işletim sistemi ile varsayõlan bileşen olarak gelir.
Windows 2000 Professional, Windows XP Professional ve sonraki sistemlerde
ise, bu aracõn kullanõcõ tarafõndan kurulmasõ gerekir.
IIS kurulumu için aşağõdaki adõmlar takip edilir:
1. Denetim Masasõ (Control Panel) penceresinde Program Ekle/Kaldõr
(Add or Remove Programs) simgesini çift tõklayõn.
2. Açõlan pencerenin sol panelinden Windows Bileşeni Ekle/Kaldõr
(Add/Remove Windows Components) bileşenini seçin.
3. Windows Bileşeni Ekle/Kaldõr penceresinden Internet Information Ser-
vices (IIS) seçeneğini işaretleyerek yükleme işlemini başlatõn.
Windows NT 4.0 ve Windows XP Home Edition işletim sistemleri ile ASP.NET uygulamasõ ge-
liştirilemez.
IIS Yönetimi
Web Sites çalõşan web uygulamalarõnõ listeler. Web Sites klasörü altõndaki
Default Web Site sekmesi üzerinden Web sunucu seçenekleri ayarlanabilir.
Web sunucu özelliklerini değiştirmek için aşağõdaki adõmlar takip edilir:
1. Internet Information Services üzerinden Web Sites seçilir.
2. Web Sites sağ tõklanõr. Açõlan menüden Properties komutu seçilir.
Home Directory kategorisindeki Local Path alanõnda c:\inetpub\wwwroot ifa-
desi, sistemde IIS sunucusunun çalõştõracağõ uygulamalarõn yer bilgisini tutar.
Visual Studio .NET kullanmadan yeni bir Virtual Directory oluşturmak için De-
fault Web Site sağ tõklanõr. Çõkan menüden New alt menüsü işaretlenir ve Vir-
tual Directory seçilir. Virtual Directory Creation Wizard ile yeni bir Virtual Direc-
tory oluşturulur.
190 Modül 6:
ASP.NET ile uygulama geliştirmek için .NET Framework’ün kurulu olmasõ gere-
kir. Framework’ün, SDK olarak isimlendirilen 130MB’lõk full versiyonu ve yal-
nõzca temel bileşenleri kapsayan 20MB’lõk iki farklõ kurulum dosyasõ bulunur.
Framework versiyon ve yamalarõ (Service Pack) http:// msdn.microsoft.
com/netframework/downloads/updates/default.aspx adresinden ücretsiz
olarak indirilebilir.
Framework’ü kurmak için aşağõdaki adõmlar takip edilir:
1. Framework kurulum dosyasõ çalõştõrõlõr.
2. Açõlan penceredeki “Would you like to Install Microsoft .NET Frame-
work Package?” sorusuna Yes cevabõ verilir.
3. Next düğmeleri tõklanarak kurulum tamamlanõr.
.NET Framework kurabilmek için işletim sisteminin Windows NT tabanlõ olmasõ gerekir. Win-
dows 2000 işletim sisteminde minimum SP2 yapõlandõrmasõ gereklidir.
ASP.NET’e Giriş 191
Modül Özeti
1. ASP nedir?
4. IIS nedir?
192 Modül 6:
Uygulama Yayõnlamak
Default.htm ismindeki HTML sayfayõ IIS üzerinden yayõnlayõn.
<html>
<head>
<title>HTMLPage1</title>
</head>
<body>
<p>Hoş Geldiniz.</p>
</body>
</html>
Web uygulamanõn yayõnõ, wwwroot içindeki herhangi bir alt klasörden yapõlabilir. Örneğin
http://localhost/WebUygulama. ASP.NET Web Application uygulamalarõn yayõnõ bu
yöntem ile yapõlõr.
194 Modül 6:
Modül 7: ASP.NET Web Form ve
Kontrolleri ile Çalõşmak
Web Form, ASP.NET uygulamalarõnõn yapõ taşõdõr. Visual Studio .NET ortamõ
aracõlõğõ ile eklenen kontrollerin ve Visual Basic .NET kodlarõnõn birleşimi Web
Form oluşturur.
Web formlar, .aspx uzantõlõ arayüz dosyasõ ve .aspx.vb uzantõlõ kod
dosyalarõndan oluşur. Örneğin default.aspx isimli ASP.NET sayfasõnõn su-
nucu taraflõ Visual Basic .NET kodlarõ default.aspx.vb isimli dosyada tutulur.
Kullanõcõ arayüz sayfasõ ve kod sayfasõnõn ayrõ tutulmasõnõn yararõ, Web prog-
ramcõsõna ve Web tasarõmcõsõna ayrõ kaynaklar sunarak bağõmsõz çalõşma or-
tamõ sağlamaktõr.
Web Formlarõ Visual Studio ile iki farklõ şekilde tasarlanabilir. Design sekmesi,
Web kontrollerinin görsel olarak düzenlenmesini sağlar. HTML sekmesi ise,
kontrollerin HTML kodlar ile eklenmesini sağlar.
Görsel kõsõmda Web Form kontrolleri ve bu kontrollere ait HTML kodlarõ, kod
sayfasõnda da bu kontrollerin davranõşlarõnõ belirleyen Visual Basic .NET kod-
larõ bulunur.
ASP.NET Web Form ve Kontrolleri ile Çalõşmak 199
Page Özelliği
Language
Sayfa içinde kullanõlacak dil seçeneğini bildirilir. ASP.NET uygulamalarõnda ge-
nellikle VB ve C# dilleri tercih edilir.
CodeBehind
Web formlarõn, Visual Basic .NET veya C# uzantõlõ kod dosyasõnõ belirtir.
SmartNavigation
SmartNavigation özelliğine True değeri ayarlanõrsa, sayfa yeniden yüklendiği
zaman, kaydõrma çubuklarõnõn sayfa içindeki yeri korunur. Böylece sayfa ilk ko-
numunda kalõr. Bu özellik Internet Explorer 5.5 ve üstü tarayõcõlar tarafõndan
desteklenir.
ViewState
ASP.NET teknolojisi ile gelen yeniliklerden biridir. EnableViewState özelliği ile
objenin içine girilen bilgi ne olursa olsun, sunucu bunu bir değişkende tutup
tekrar kullanõcõya geri döndürür. Bu durum sunucuya gönderilen veriler üze-
rinde hata oluşmasõ durumunda, bilgilerin kaybolmamasõnõ sağlar. Bu özelliğin
tüm kontrolleri içermesi için, Page yönerge satõrõnda tanõmlanmasõ gerekir. Bu
özellik True veya False değeri alabilir.
Body Özelliği
PageLayout(ms_positioning)
Web form içinde kullanõlan nesnelerin, görüntülenme biçimini ayarlar. Bu özellik
iki değer alabilir:
! FlowLayout: Sayfaya eklenen kontroller eklenme sõrasõna göre sõrala-
nõr. Kontrollerin yerleri sürükleme ile değiştirilemez. Nesneler için style
tanõmlamaz.
<body ms_positioning=”FlowLayout”>
…
</body>
! GridLayout: Kontroller form üzerindeki herhangi bir yere eklenebilir.
Kontrollerin yerleri sürükleme ile değiştirilebilir. Bu görünümde nesneler
için style tanõmlanõr. Bu görünüm Windows uygulamalarõndaki Form
görünümüne benzer.
<body ms_positioning=”GridLayout”>
…
</body>
ASP.NET Web Form ve Kontrolleri ile Çalõşmak 203
Form Özelliği
Web kontrolleri gruplandõrmak için kullanõlõr. Her web form için tek Form etiketi
tanõmlanõr. Tüm kontroller <form> … </form> etiketleri arasõna eklenir.
Form etiketi içinde tanõmlanabilecek birçok özellik vardõr.
Method
Web kontrol özelliklerinin, sunucuya gönderilme şeklini belirler. İki değer alabi-
lir:
! Post: İsim ve değer bilgilerini, HTML bilgisinin üst bilgisine yazarak
gönderir.
Id
Formun isim bilgisini verir. CodeBehind sayfasõ içinde, forma işlem yaptõrmak
için kullanõlõr.
Runat
Web formlarda kullanõlan kontrollerin sunucu ile haberleşerek çalõşabilmesi için
runat=”server” bildirimi kullanõlõr. Bu özellik sadece server değerini alabilir.
Web sunucu üzerinde çalõşan kontrollerdir. İki tür server kontrolü vardõr:
! HTML Server Kontrolleri
! Web Server Kontrolleri (ASP.NET Kontrolleri)
ASP.NET server kontrolleri System.Web.UI.Control sõnõfõndan türetilir. Her
ASP.NET server kontrolü <asp:KontrolIsmi> etiketi ile bildirilir. HTML kontrol-
leri ise System.Web.UI.HtmlControls isim alanõnda bulunur.
Button, TextBox, DropDownList gibi server kontrollerinin çalõşma modeli, is-
temci taraflõ HTML kontrollerinin çalõşma modelinden oldukça farklõdõr.
ASP.NET server kontrolleri, tamamen sunucu üzerinde çalõşõr ve geri plandaki
tüm işleyişleri ara yüzle gizlenerek gerçekleştirilir.
Bir kontrolün sunucu tarafõnda çalõştõğõ runat=”server” özelliği ile belirlenir.
Standart Kontroller
Bu kontroller, HTML kontrollere alternatif olarak tasarlanmõştõr. Eski tip HTML
kontrolleri ile yeni ASP.NET kontrolleri arasõndaki en belirgin fark, her Web
kontrolünden önce asp: ön ekinin kullanõlõyor olmasõdõr.
Doğrulama Kontrolleri
Kullanõcõnõn girdiği değerleri kontrol etmek için kullanõlõr. Kontrolün yapõlacağõ
alana ve veriye göre, farklõ doğrulama kontrolleri kullanõlõr. ASP.NET, belirli bir
aralõkta veri girişi sağlayan, karşõlaştõrma yapan ve belirli değerlerin boş
geçilmemesini sağlayan çeşitli doğrulama kontrolleri sunar.
RequiredFieldValidator, RangeValidator, CompareValidator,
RegularExpressionValidator, CustomValidator, ValidationSummary
kontrolleri bu grupta yer alõr.
Zengin Kontroller
AdRotator ve Calendar zengin kontroller grubunda yer alõr. AdRotator, Web
sayfalarõ üzerinde reklam yayõnõ yapmak için kullanõlõr. Calendar ise Web say-
larõ üzerinde Takvim göstermek için kullanõlõr.
Label
Label, kullanõcõya bilgi vermek için kullanõlõr.
TextBox
TextBox, kullanõcõnõn bilgi girişini sağlar. En sõk kullanõlan giriş .kontrolüdür.
Button
Button, form üzerindeki olaylarõ sunucuya yollamak için kullanõlõr. En sõk
kullanõlan onay kontrolüdür.
208 Modül 7:
CheckBox
CheckBox, kullanõcõya seçenekler arasõndan seçim yapma imkanõ sunar. Onay
kutusu işaretlenmiş ise True, işaretlenmemiş ise False değerini alõr. Onay
kutusunun durumu CheckedChanged metodu ile takip edilebilir.
Örnekte, CheckBox kontrolünün onay kutusu tõklandõğõ anda “Seçili”, seçim
işlemi geri alõndõğõ anda “Seçili değil” mesajõ yazõlõr. Seçim yapõldõğõ anda
mesajõn yazdõrõlmasõnõ sağlayan AutoPostBack özelliğinin True değeridir.
RadioButton
RadioButton, CheckBox kontrolüne benzerlik gösterir. Ancak RadioButton
kontrolünün GroupName özelliği ile, birden fazla RadioButton arasõnda grup
oluşturulur. Aynõ grup içinden sadece bir RadioButton seçilebilir. Birden fazla
seçeneğin işaretlenmesine izin verilmez. Onay kutusunun durumu Checked
metodu ile takip edilebilir.
Örnekte, RadioButton kontrolleri arasõnda muzik isminde bir grup
oluşturulmuştur. Bu grup içindeki Pop, Jazz ve Classic RadioButton
kontrollerinden sadece bir tanesi seçilebilir. BtnOnay isimli button tõklandõğõnda,
seçilen RadioButton kontrolünün değeri Message isimli Label kontrolüne yazõ-
lõr.
<br>
<asp:RadioButton id=Radio3 Text="Classic"
GroupName="muzik" runat="server"/>
<br>
<asp:button text="Seçiniz" id=”BtnOnay”
OnClick="BtnOnay_Clicked" runat=server/>
<br><br>
<span id="Message" runat="server" />
HyperLink
Hyperlink, sayfalar arasõ dolaşõmõ sağlar. Hyperlink kontrolünün görünümü
metin veya resim olabilir. ImageUrl özelliği ile görüntülenecek resim dosyasõ
belirlenir. NavigateUrl özelliği ile gidilecek sayfa belirlenir.
Örnekte Hyperlink kullanõmõ gösterilmektedir.
Target özelliği, açõlacak sayfanõn aynõ sayfa üzerinde veya yeni bir sayfada
gösterilmesini sağlar. Tablo 7.2’de Target özelliğinin değerleri gösterilmektedir.
Image
Image, sayfa içinde resim görüntülemek için kullanõlõr. ImageUrl özelliği ile gö-
rüntülenecek resim dosyasõ belirlenir. ImageAlign özelliği resmin hizalanmasõ
için kullanõlõr. AlternateText resme alternatif metin göstermek için kullanõlõr.
Örnekte, Image kullanõmõ gösterilmektedir.
ImageButton
ImageButton resimli düğme kontrolüdür.
ASP.NET Web Form ve Kontrolleri ile Çalõşmak 211
LinkButton
LinkButton, HyperLink görünümlü Button kontrolüdür. LinkButton kontrolü-
nün HyperLink kontrolünden farkõ ise olaylarõnõn olmasõdõr.
Örnekte, LinkButton kullanõmõ gösterilmektedir.
<br>
<asp:Label id=Label1 runat=server />
212 Modül 7:
DropDownList
DropDownList, açõlan kutuda veri görüntülemek için kullanõlõr. DropDownList
öğeleri Items koleksiyonunda tutulur. Items koleksiyonunun Count özelliği ile
toplam öğe sayõsõ bulunur. DropDownList kontrolüne tasarõm veya çalõşma za-
manõnda öğe eklenebilir.
Örnekte, DropDownList kontrolüne tasarõm zamanõnda öğe eklenmektedir.
Dim i As Integer
For i = 0 To 5
DropDownList1.Items.Add(i.ToString)
Next
End Sub
ListBox
ListBox, DropDownList kontrolüne benzer. Elemanlar liste halinde gösterilir
ve SelectionMode özelliğine Multiple değeri atanarak, çoklu seçim yapma
imkanõ sağlanõr.
Örnekte, ListBox kontrolünün çoklu seçim özelliği kullanõlmaktadõr. ListBox
kontrolü içinde seçilen tüm elemanlar Label kontrolüne yazdõrõlõr.
Panel
Panel, diğer kontrolleri gruplandõrmak için kullanõlõr.
Örnekte, panel kullanõmõ gösterilmektedir.
Table
Table, satõrlarõna ve sütunlarõna programlama yoluyla müdahale edilebilen
tablo kontroldür. Table kontrolü içinde TableRow ve TableCell nesneleri
kullanõlõr. TableCell, tabloda bir hücreyi temsil eder. TableRow ise tabloda bir
satõrõ temsil eder.
Örnekte, Table kullanõmõ gösterilmektedir.
Dim i As Integer
ASP.NET Web Form ve Kontrolleri ile Çalõşmak 215
Dim j As Integer
For j = 0 To nrows - 1
Dim r As TableRow
r = new TableRow()
For i = 1 To ncells
Dim c As TableCell
c = new TableCell()
c.Controls.Add(new LiteralControl("Satõr " & _
j.ToString() & ", hücre " & i.ToString()))
r.Cells.Add(c)
Next i
Table1.Rows.Add(r)
Next j
End Sub
Konu 5: Doğrulama(Validation)
Kontrolleri
Web forma girilecek verinin doğruluğunu kontrol etmek için sõklõkla JavaScript
fonksiyonlarõ veya uzun ASP kodlarõ kullanõlõrdõ. Bu durum uygulama geliştirme
sürecinin artmasõna neden olurdu.
ASP.NET ile birlikte verinin doğruluğunu kontrol etmek için doğrulama kontrol-
leri geliştirildi. ASP.NET, belirli bir aralõkta veri girişi sağlayan, karşõlaştõrma ya-
pan ve belirli değerlerin boş geçilmemesini sağlayan çeşitli doğrulama kontrol-
leri sunar. Tablo 7.3’te doğrulama kontrolleri listelenmiştir.
RequiredFieldValidator
RequiredFieldValidator, belirtilen kontrolün boş geçilmemesini sağlar. Doğ-
rulama yapõlacak web kontrolünün ismi ControlToValidate özelliğine girilir
Geçerli giriş yapõlmadõğõnda ortaya çõkacak hata mesajõ ErrorMessage özelliği
ile belirtilir.
Örnekte, RequiredFieldValidator kullanõmõ gösterilmektedir:
<asp:RequiredFieldValidator id="RequiredFieldValidator1"
style="Z-INDEX: 103; LEFT: 224px; POSITION: absolute;
TOP: 48px" runat="server"
ErrorMessage="Adõnõzõ Girmelisiniz!!!"
ControlToValidate="txtad">
</asp:RequiredFieldValidator>
CompareValidator
Kontrol içine girilen değeri, sabit değerle veya başka bir kontrol ile karşõlaştõr-
mak için kullanõlõr. Doğrulama yapõlacak Web kontrolünün ismi
ControlToValidate özelliğine girilir. Karşõlaştõrma yapõlacak sabit değer
ValueToCompare özelliğine girilir. Type özelliğine girilen değerin veri türü,
Operator özelliğine ise mantõksal operatör girilir.
Örnekte txtYas kontrolüne yirmi veya yirmiden büyük tamsayõ girişi sağlayan
doğrulama işlemi yapõlmaktadõr:
<asp:CompareValidator id="CompareValidator1"
style="Z-INDEX: 109; LEFT: 232px; POSITION: absolute;
TOP: 88px" runat="server"
ErrorMessage="Yaşõnõz 20 ye eşit veya büyük olmalõdõr."
ValueToCompare="20"
ControlToValidate="txtYas"
Type="Integer"
Operator="GreaterThanEqual"
218 Modül 7:
Width="128px">
</asp:CompareValidator>
Doğrulama yapõlacak Web kontrolü, başka bir Web kontrolü ile karşõlaştõrõla-
caksa ControlToCompare özelliği kullanõlõr.
Örnekte txtYas kontrolünün değeri txtKontrol değerinden büyük olmalõdõr:
<asp:CompareValidator id="CompareValidator1"
style="Z-INDEX: 109; LEFT: 240px; POSITION: absolute;
TOP: 128px" runat="server"
ErrorMessage="yaşõnõz kontrol alanõnda yazõlan
değerden büyük olmalõdõr."
ControlToValidate="txtYas"
Type="Integer"
Operator="GreaterThan"
Width="144px"
ControlToCompare="txtKontrol">
</asp:CompareValidator>
RangeValidator
Kontrol içine girilen değerin belirli bir değer aralõğõnda olmasõnõ sağlar. Doğru-
lama kontrollerinin ortak özelliklerine ek olarak MinimumValue, MaximumValue
ve Type özellikleri vardõr.
Örnekte txtYas kontrolüne girilen değerin, otuzbeş ile elli arasõnda olmasõnõ
sağlayan doğrulama işlemi yapõlmaktadõr. Bu özel karakterler Tablo 7.4’te
gösterilmiştir.
<asp:RangeValidator id="RangeValidator1"
style="Z-INDEX: 109; LEFT: 240px; POSITION:
absolute; TOP: 128px" runat="server"
ErrorMessage="Yaşõnõz 35 ile 50 arasõnda olmalõdõr."
ControlToValidate="txtYas"
Type="Integer"
MaximumValue="50"
MinimumValue="35">
</asp:RangeValidator>
ASP.NET Web Form ve Kontrolleri ile Çalõşmak 219
RegularExpressionValidator
Kontrol içine girilen değerin istenen formatta girilmesini sağlar.
ValidationExpression özelliğine girilen özel karakterler ile veri giriş formatõ
sağlanõr. Bu özel karakterler Tablo 7.4’te gösterilmektedir.
Örnekte RegularExpressionValidator kontrolü ile txtMail metin kutusu
için geçerli e-mail girişi sağlanmaktadõr:
<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 Tanõmõ
a Bir harf kullanõmõnõ zorunlu kõlar.
Karakter Tanõmõ
\ Bir komut karakterini devam ettiren karakter.
ValidationExpression=
"\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*">
ValidationExpression =“\w+@\w+\.\w+”
CustomValidator
Aynõ anda birden fazla nesnenin değerini kontrol etmek veya kullanõcõ tanõmlõ
kontrol yazmak için CustomValidator kontrolü kullanõlõr.
Özellik Açõklama
ClientValidationFunction İstemci fonksiyon ismini belirtir.
Sub CustomValidator_SunucuKontrol _
(s as Object, e as ServerValidateEventArgs)
‘...
End Sub
! IsValid: Bu özellik True ise kontrol içine girilen değerin doğruluğu sağ-
lanmõştõr.
! Value: Doğrulama kontrolünün değerini verir.
CustomValidator, kredi kart numaralarõnõn doğruluğu kontrol etmek için
kullanõlabilir.
Örnekte, metin kutusuna girilen değerin çift olmasõ kontrol edilmektedir.
CustomValidator kontrolünün HTML kodlarõ aşağõdaki gibidir:
<asp:CustomValidator id="CustomValidator1"
style="Z-INDEX: 102; LEFT: 312px; POSITION: absolute;
TOP: 64px" runat="server"
ErrorMessage="çift rakam giriniz."
ControlToValidate="txtcustom" Display="Static"
OnServerValidate="ServerKontrol">
</asp:CustomValidator>
ValidationSummary
ValidationSummary, doğrulama kontrollerin ErrorMessage özelliğine girilen
tüm mesajlarõ listeler.
Örnekte, ValidationSummary kullanõmõ gösterilmektedir:
<asp:ValidationSummary id="ValidationSummary1"
style="Z-INDEX: 114; LEFT: 72px; POSITION: absolute;
TOP: 336px" runat="server"
HeaderText="Hatalar">
</asp:ValidationSummary>
AdRotator
AdRotator, Web sayfalarõ üzerinde reklam yayõnõ yapmak için kullanõlõr. Rek-
lam için kullanõlan banner nesneleri XML dosya içine kaydedilir.
Örnekte, AdRotator kullanõmõ için gerekli XML dosya (Ads.Xml) gösterilmekte-
dir:
<Advertisements>
<Ad>
<ImageUrl>image1.gif</ImageUrl>
<NavigateUrl>http://www.bilgeadam.com</NavigateUrl>
<AlternateText>BilgeAdam BTA</AlternateText>
<Impressions>80</Impressions>
<Keyword>Yazõlõm</Keyword>
</Ad>
<Ad>
<ImageUrl>image2.gif</ImageUrl>
<NavigateUrl>http://www.microsoft.com</NavigateUrl>
<AlternateText>Microsoft Site</AlternateText>
<Impressions>80</Impressions>
<Keyword>microsoft</Keyword>
</Ad>
</Advertisements>
224 Modül 7:
Calendar
Calendar, Web saylarõ üzerinde takvim göstermek için kullanõlõr.
Örnekte, Calendar kullanõmõ gösterilmektedir:
Özellik Açõklama
CellPadding Hücreler ve kenarlõklarõ arasõndaki boşluk değerini tutar.
Konu 8: ViewState
Modül Özeti
5. AutoPostBack nedir?
RESİM 7.1.
RESİM 7.2.
Display="Dynamic">*</asp:requiredfieldvalidator><asp:regu
larexpressionvalidator id="revEmail" runat="server"
ControlToValidate="txtEmail" ErrorMessage="Hatalõ Email"
Display="Dynamic"
ValidationExpression="\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-
ASP.NET Web Form ve Kontrolleri ile Çalõşmak 235
.]\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 Doğrula*</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="Doğrulama
ş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>
<TD style="WIDTH: 100px; HEIGHT:
15px" colSpan="2"></TD>
</TR>
<TR>
<TD style="WIDTH: 100px"></TD>
236 Modül 7:
<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>
RESİM 7.3.
<TR>
<TD style="WIDTH: 66px">E-
Mail </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>
</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>
RESİM 7.4.
RESİM 7.5.
<uc1:kategori id="Kategori1"
runat="server"></uc1:kategori></TD>
<TD width="400" vAlign="top">
<P><BR>
Kayõt işlemi başarõyla tamalandõ.<BR>
Giriş yapmak için
<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>
RESİM 7.6.
<uc1:Alt id="Alt1"
runat="server"></uc1:Alt></TD>
</TR>
</TABLE>
</form>
</body>
</HTML>
Modül 8: ASP.NET ile Kod
Geliştirmek
Web Form içinde kullanõlan kontrollere ait HTML kodlarõ ve bu kontrollere ait
Visual Basic .NET kodlarõ bulunur. Web Formlarõn en önemli özelliği ise, tasa-
rõm ve kod ara yüzlerinin ayrõ tutulmasõdõr.
Web Forma kod eklemek için üç yol izlenir:
! Mixed Code: Bu metotta Web içeriği ile kod aynõ sayfa içinde yazõlõr.
Bu metot pek tercih edilmez, çünkü okunmasõ ve düzenlenmesi zordur.
! Inline Code: Web içeriği ile kod aynõ sayfa içinde yer alõr. ASP.NET
kodu Script etiketi içine yazõlõr.
! Code-behind: HTML içeriği ve Visual Basic .NET kodu tamamen ayrõ
dosyalarda tutulur. Kod dosyasõna code-behind sayfasõ denir. Bu metot
Visual Studio .NET ortamõnõn varsayõlan çalõşma şeklidir.
ASP.NET ile Kod Geliştirmek 249
Aynõ .aspx dosyasõ içinde HTML kodu ve Visual Basic .NET kodu ayrõ bölüm-
lere yazõlõr. Bölümlerin ayrõ tutulmasõ okunabilirliği artõrõr. Server taraflõ kodlar
Script etiketi içersine yazõlmalõdõr ve runat=”server” özelliği belirtilmelidir.
</form>
</body>
</HTML>
Imports System
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Web.UI.HtmlControls
Codebehind
Code-behind sayfasõnõn ismini temsil eder. Visual Studio .NET platformunun
dosyayõ birleştirebilmesi için gereklidir.
Src
Code-behind sayfasõnõn ön derleme işleminden geçmediği durumlarda bu
özellik kullanõlõr. Code-behind sayfasõnõn ismini temsil eder.
252 Modül 8:
<SCRIPT language=”JavaScript”>
</SCRIPT>
ASP.NET ile Kod Geliştirmek 253
Client-side olay prosedürleri ile fare ve klavye olaylarõna kod yazõlabilir. Server-
side olay prosedürleri Click ve Change gibi olaylar için kullanõlõr. Fare ve
klavye olaylarõ gibi çok sõk gerçekleşebilecek olaylarõ desteklenmez.
254 Modül 8:
Visual Studio .NET içinde server-side olay prosedürleri iki adõm ile oluşturulur.
Birinci adõm, olay üretecek kontrolü Web form üzerine eklemektir. İkinci adõm
ise, code-behind sayfasõna olay prosedürünü eklemektir.
Olay prosedürleri kontrolün ID özelliğine girilen değerden faydalanarak
oluşturulur. Handles anahtar sözcüğü kontrolün hangi olay ile
ilişkilendirileceğini belirler. Handles anahtar sözcüğü ile tek bir olay için birden
fazla olay prosedürü oluşturulabilir.
Örnekte Web form içine btn1 isminde bir Button yerleştirilmiştir. Eklenen btn1
kontrolünün üretilen HTML kodu ve code-behind sayfasõna eklenen olay
prosedürü Kod 8.4’te belirtilmiştir.
‘...
‘...
End Sub
ASP.NET ile Kod Geliştirmek 255
Bir ASP.NET sayfasõ belirli olaylar sõrasõ ile çalõşõr. Bu sõraya “Sayfa Yaşam
Döngüsü” denir
Bu döngü olaylarõ aşağõdaki sõrada gerçekleşir:
1. Page_Init (Page Initialize – Sayfanõn oluşmaya başlamasõ): Bu aşa-
mada sayfa başlatõlõr ve sayfadaki kontroller oluşturulur.
2. Page_Load (Sayfanõn yüklenmesi): Bu olay, sayfa yüklendiği zaman
tetiklenir.
3. Control Events (Kullanõcõ kontrol olaylarõ): Click ve Change
olaylarõdõr. Bu olaylar kontrollerin tõklanmasõ veya kontrol değerlerinin
değişimi ile tetiklenir. TxtAd_Changed ve Btn1_Click gibi.
4. Page_Unload (Sayfanõn Kapanmasõ): Bu olay, sayfa kapandõğõ za-
man tetiklenir.
Page Event yaşam döngüsü sonlandõğõnda sayfaya ait bilgiler hafõzadan silinir.
Kontrol olaylarõnõn çoğu, sayfa sunucuya geri gönderilene kadar gerçekleş-
mez. Örneğin Click olayõ ile form sunucuya gönderilmeden Change olaylarõ
gerçekleşmez.
ASP.NET ile Kod Geliştirmek 257
Response.Redirect
Postback İşlemleri
<asp:DropDownList id="DropDownList1"
runat="server" AutoPostBack=”True”>
<asp:ListItem>Türkçe </asp:ListItem>
<asp:ListItem>İngilizce</asp:ListItem>
</asp:DropDownList>
mesaj.Text = DropDownList1.SelectedItem.Value
End Sub
ASP.NET ile Kod Geliştirmek 259
Page.IsPostback
Page Load olayõ, sayfa yüklendiği zaman gerçekleşir. Sayfaya yapõlan her is-
tekte Page Load olayõ içindeki kodlar çalõşõr. Aynõ sayfanõn her seferinde yeni-
den çalõştõrõlmasõ, istenilen bir durum değildir.
Page.IsPostback özelliği ile, sayfanõn Load olayõ içindeki kodlar sadece bir
kez çalõştõrõlõr. Böylece sayfa yeniden çağrõldõğõnda bu işlemler gerçekleşmez.
Örnekte Page.IsPostBack özelliğinin kullanõmõ gösterilmektedir:
Modül Özeti
RESİM 8.1.
Kodlarõn Yazõlmasõ
1. btnCodeBehind kontrolünün Click olayõna “Code Behind” yazan kodu
yazõn. Bu kod code behind yöntemi ile btnCodeBehind kontrolünün
Click olayõnõ çalõştõrõr.
Response.Write("Code Behind")
<script language="javascript">
function mesaj()
{
alert('Hello World')
ASP.NET ile Kod Geliştirmek 263
</script>
Konu 2: HTML
HTML (Hyper Text Markup Language), bir işaretleme dilidir. İstemci tarafõnda
çalõşan Internet tarayõcõsõ tarafõndan okunur, yorumlanõr ve alõnan işaretler
neticesinde ekrana ilgili görüntü yansõtõlõr.
HTML, HTTP (HyperText Transfer Protocol) ile bir arada çalõşõr. Bu işaretleme
dili ile oluşturulmuş dokümanlar yalnõzca istemci tarafõnda çalõşõr.
HTML dokümanlarõnõn tümü ASCII karakterlerinden oluşur ve herhangi bir me-
tin editöründe yazarak oluşturulabilir.
HTML Yapõsõ
HTML dilini oluşturan bileşenler:
! Tag (etiket)
! Attribute (nitelik)
! Value (değer)
HTML kodlarõnõn temeli etiketlerdir. Bir etiket, HTML’e yapõlmasõ istenen bir ola-
yõn bildirimini temsil eder. Etiketlerin içine attribute adõ verilen değerler girilir. Eti-
ketlere ait değişik özellikler, attribute nesnelerinde saklanõr. Attribute değerleri,
olaylara ait ayrõntõlarõ tutar. Value ise, bir attribute değerinin davranacağõ tarzõ
belirler.
270 Modül 9:
Tag
Etiketler (Tag), < > işaretleri arasõnda yazõlõr. Semboller ve etiket arasõnda
boşluk yoktur.
<Html>
Bir etikete ait açma ve kapatma ifadeleri vardõr. Açma ifadesi <Html>,kapatma
ifadesi ise </Html> şeklinde bildirilir. Yani açõlan bir etiket, aynõ isim başõna /
işareti getirilerek kapatõlõr. Örneğin <P> etiketi,bir paragraf açmaya yarar. </P>
kapatma ifadesi kullanõldõğõnda ise bu kapatma ifadesinin kullanõldõğõ yere ka-
dar olan bölüm, paragrafõn içine dahil edilir. Ancak bazõ istisnalar da vardõr.
<Img> ve <Br> etiketi gibi bazõ etiketler için bir kapatma ifadesi yoktur.
HTML etiketlerinde büyük harf-küçük harf duyarlõlõğõ yoktur.
Web Programlamaya Giriş 271
Attribute
Nitelikler (Attribute), bir etikete ait özellikleri belirler. <html> etiketi ve </html>
kapatma etiketi, HTML belgesinin başladõğõ ve bittiği yeri belirtir ve Attribute
değerine ihtiyacõ yoktur. Attribute olmadan çalõşan etiketlerin yanõ sõra, attribute
ile birlikte çalõşan etiketler de vardõr. <body> etiketi, </body> kapatma ifadesi
ile görüntülenecek alanõn başlangõcõnõ ve bitişini bildirir. Bu etiket, hiçbir attrib-
ute tanõmlanmadan çalõşabilir. Görüntülenecek alana bir arka plan rengi
tanõmlamak istediğinizde bgcolor veya görüntülenecek yazõ tipini tanõmlamak
istediğinizde text niteliklerine değerler atanmalõdõr.
Aşağõdaki örnekte siyah zemin üzerine beyaz yazõ yazõlmaktadõr:
Value
Bir olayõn ne şekilde gerçekleşeceği value ile bildirilir. Örneğin bir paragraflõk
metinin hizalanmasõ, <DIV> etiketi kullanõlarak yapõlõr. DIV etiketinin align
attribute değeri, left, right, center ve justify değerlerinden birini alõr.
Web Programlamaya Giriş 273
<html>
<head>
<title> Temel HTML Belgesi </title>
</head>
<body>
Sayfada kullanõlacak herşey burada bildirilir.
</body>
</html>
Başlõklar
Bir sayfadaki yazõnõn başlõklarõnõ standart şekilde tutmak için HTML başlõklarõ
kullanõlõr. Başlõklar 1 ve 6 arasõ değerler alõr.
<html>
<head>
<title>Başlõk Etiketleri</title>
</head>
<body>
<h1>html başlõklarõ</h1>
<h1>Bu başlõk H1 tag'i ile oluştu</h1>
<h2>Bu başlõk H2 tag'i ile oluştu</h2>
<h3>Bu başlõk H3 tag'i ile oluştu</h3>
<h4>Bu başlõk H4 tag'i ile oluştu</h4>
<h5>Bu başlõk H5 tag'i ile oluştu</h5>
<h6>Bu başlõk H6 tag'i ile oluştu</h6>
</body>
</html>
Listeler
Belge içinde metine liste görünümü vermek için listeleme etiketleri kullanõlõr.
Sõrasõz ve sõralõ listeler oluşturulabilir. Sõrasõz listeler, <ul>...</ul> etiketleri
arasõnda oluşturulur. Her bir liste nesnesi için <li> etiketi kullanõlõr.
Sõralõ listeler, <ol>...</ol> etiketleri arasõnda oluşturulur. Her bir liste nes-
nesi için <li> etiketi kullanõlõr.
<h4>Sõrasõz Liste</h4>
<ul>
<li>nesne 1
<li>nesne 2
</ul>
<dl>
<dt> Başlõk 1:
<dd> Başlõk 1'e ait açõklama bu paragrafta girilir.Başlõk
1'e ait açõklama bu paragrafta girilir.
<dt> Başlõk 2:
<dd> Başlõk 2'ye ait açõklama bu paragrafta girilir.
Başlõk 2'ye ait açõklama bu paragrafta girilir.
</dl>
Resim Görüntüleme
HTML sayfalarõnda resim görüntülemek için <img> etiketi kullanõlõr. src attrib-
ute değeri, görüntülenecek resmin adresini tutar.
Kod 9.6’da <img> kullanõmõ gösterilmektedir.
<a href="http://www.bilgeadam.com">
<img src="c:\resimler\resim1.jpg">
</a>
Tablolar
Satõr ve sütunlardan oluşan yapõlara tablo denir. Bir Web sayfasõ içinde, görü-
nümü belirli sõnõrlarda tutmak için tablolardan yararlanõlõr.
<table>...</table> etiketleri ile tablonun başlangõç ve bitiş alanõ bildirilir. Bu
etiketler arasõndaki, <tr> satõrlarõ, <td> ise sütunlarõ temsil eder. Tablonun
align, border, width, height, bgcolor attribute değerleri ile tabloya çeşitli
nitelikler verilebilir. Align attribute nesnesi center, left veya right hizalama
değerini alõr. Border tablo kenarlõklarõnõn kalõnlõk değerini tutar.
HTML dosyasõ içine gömülmüş kodlara script denir. Yorumlanmasõ için Internet
tarayõcõsõna ihtiyaç vardõr. HTML dilinin karşõlayamadõğõ bazõ ihtiyaçlara çözüm
üretmek için script'ler kullanõlõr.
Web Programlamaya Giriş 279
JavaScript
Birden fazla satõr yorum satõrõ yapõlacaksa, satõrlarõn başladõğõ yere /*, bittiği
yere */ ifadeleri yerleştirilir.
JavaScript kodlarõ HTML sayfalarõ içine <head> etiketlerine gömülü olarak veya
.js uzantõlõ dosyalara referans gönderilerek HTML içinden çağrõlabilir.
280 Modül 9:
<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 değeri ile kullanõlacak script dili belirtilir.
JavaScript kullanõlmasõ için burada language=”javascript” bildirimi yapõlõr.
<html>
<head>
<title>JavaScript Örneği</title>
</head>
<body>
<br> Bu yazõ html ile yazõldõ.
<br>
<script language="JavaScript">
document.write("İşte bu ise JavaScript ile yazõldõ!")
</script>
<br>
Bu yazõ yine HTML ile yazõldõ.
</body>
</html>
Buradaki script ifadesi head etiketleri arasõnda bir fonksiyon olarak değil,
body etiketleri arasõnda satõr halinde kullanõlmõştõr.
Web Programlamaya Giriş 281
Değişkenler
var anahtar sözcüğü ile yeni bir değişken oluşturulur. Tür bilgisi saklanmaz.
Sayõsal değerler verildiğinde işlem yapma yeteneğine sahip olurlar. Çift tõrnak
içinde değer verildiğinde ise metin ifadesi olarak anlaşõlõr.
Dikkat edilmesi gereken nokta değişkenlerin küçük – büyük harf duyarlõ
olmasõdõr. Bazõ tarayõcõlar için değişken isimlerinde bu duyarlõlõk göz önünde
bulundurulmazken, çoğu tarayõcõda küçük – büyük harf duyarlõlõğõna dikkat edi-
lir. Bu nedenle her değişken adõ bu durum göz önünde bulundurularak
verilmelidir.
var deger1;
var deger2=20;
var deger3=30;
var ay=”Mayõs”;
var yil=”2005”;
var degerToplam=deger2+deger3;
var tarih=ay+yil;
Koşul Operatörü
[koşul ifadesi] ? koşul_doğru_ise : koşul_yanlõş_ise
var a=5;
var b=7;
var c=14;
var d=23;
var e;
e = (a + b < c) ? d : a+b ;
282 Modül 9:
if (a + b < c)
e = d;
else
e = a+ b;
Operatörler
JavaScript operatörleri, Visual Basic .NET dilinde kullanõlan operatörlerden bi-
raz farklõdõr. Örneğin mod almak için Mod anahtar sözcüğü yerine % mod alma
operatörü kullanõlõr.
Atama Operatörü ( = )
Değişkenlere değer atamak için = karakteri kullanõlõr.
Aritmetik Operatörler
Değişkenler üzerinde aritmetik işlemler yapmak için tanõmlanmõş operatörlerdir.
Operatör Açõklama
+ Sayõsal değişkenleri toplar. String değişkenlerini birbirine ekler.
- Sayõsal değişkenlerde çõkarma işlemi yapar.
var x = 5;
// x değişkeni bir artõrõlõr ve ekrana 6 değeri yazõlõr
Web Programlamaya Giriş 283
document.write(++x);
Değişkenin subfix kullanõmõnda ise önce değer alõnõr, akõş bir sonraki satõra
geçtikten sonra değişkenin değeri bir artõrõlõr.
var x = 5;
/* x değişkeni önce yazõlõr, sonra bir artõrõlõr.
Yani ekrana 5 yazõlõr. */
document.write( x++);
// Ekrana 6 değeri yazõlõr.
document.write(x);
Karşõlaştõrma Operatörleri
JavaScript kodlarõ içinde de karşõlaştõrma işlemleri yapõlabilir. Ancak bu
operatörler Visual Basic .NET karşõlaştõrma operatörlerinden biraz farklõdõr.
Operatör Açõklama
== Eşit midir? operatörü. İki değer de birbirine eşit ise true sonucu verir.
!= Eşit değil midir? operatörü. İki değer birbirine eşit değilse true sonu-
cunu verir.
< Küçük operatörü. Sol taraf değeri, sağ taraf değerinden küçükse true
sonucunu verir.
> Büyüktür operatörü. Sol taraf değeri, sağ taraf değerinden büyük ise
true sonucunu verir.
<= Küçük eşittir operatörü.
if (a == b) {
document.write(“a ile b değişkeni eşit”)
}
if (a != b) {
document.write(“a ile b değişkeni eşit değildir”)
}
Mantõksal Operatörler
Mantõksal operatörler ise Visual Basic .NET mantõksal operatörlerinden tama-
men farklõdõr.
284 Modül 9:
Operatör Açõklama
&& And (ve) operatörü. İki tarafta belirtilen ifadeler true ise, sonuç olarak
true değerini döndürür.
|| Or (veya) operatörü. İki tarafta verilen ifadelerden en az birinin doğru
olmasõ durumunda true değerini döndürür.
var sehir;
sehir=prompt(“Yaşadõğõnõz şehrin trafik kodunu giriniz”,
“İstanbul için 34, Ankara için 6 gibi”);
JavaScript dilinde HTML sayfasõna yazõ yazdõrmak için write komutu kullanõlõr.
if ( koşul )
// koşul doğru ise çalõşacak ifade
Koşulun doğru olmasõ halinde yapõlacak işlemler bir satõrdan fazla yer tutu-
yorsa, bu satõrlar {} parantezleri ile gruplanõr. Visual Basic .NET dilindeki gibi
End if ifadesi kullanõlmaz.
Web Programlamaya Giriş 285
if (koşul) {
//koşul doğru ise
}
else {
//koşul yanlõş ise
}
var a;
var b = 10;
for (a = 1; a <= b; a++) {
document.write( a , “. sayõ”, “<br>”);
}
while ( döngü_koşul_ifadesi )
{
//şart doğruysa yapõlacak işlemler
}
//şart doğru değilse yapõlacak işlemler
Visual Basic .NET dilindeki Select Case döngüsüne karşõlõk olarak JavaScript
dilinde switch-case ifadesi vardõr. Genel kullanõmõ:
switch (parametre)
{
case “ifade1”:
// ifade1 koşulu doğru ise yapõlmasõ istenenler
break; //break ile diğer koşullarõn da çalõşmasõ
//engellenir ve döngüden çõkõlõr.
case “ifade2:”
//ifade2 koşulu doğru ise yapõlmasõ istenenler
break;
}
286 Modül 9:
Fonksiyonlar
JavaScript dilinde, kodlarõn yeniden kullanõlabilmesi için kullanõlõr. Genel kulla-
nõmõ:
JavaScript Nesneleri
JavaScript içinde bazõ işlemler, bazõ nesnelerin fonksiyonlarõ çağrõlarak yapõlõr.
Örneğin document.write komutu, aslõnda document nesnesinin write meto-
dunu çağõrõr.
Window Nesnesi
Genel pencere özelliklerini tutan nesnedir. Pencere açma ve kapama işlemleri
için bu nesne kullanõlõr.
Genel kullanõmõ:
open komutu ile yeni bir pencere açõlõrken, close komutu ile pencere kapatõlõr.
Yeni bir pencere açmak için open komutuna ilk parametrenin girilmesi zorunlu-
dur. Pencere_ismi, birden fazla pencere ile işlem yapõldõğõ durumlarda
kullanõlabilir. Pencereye ait özellikler Tablo 9.4’te belirtilmiştir.
Özellik Açõklama
Menubar Menü çubuğunun görüntülenmesini sağlar.
Özellik Açõklama
Location Adres çubuğunun görüntülenmesini sağlar.
window.open("http://www.bilgeadam.com", "bilgeadam" ,
"menubar=no, toolbar=no, scrollbars=yes, location=yes,
width=300, heigt=300";)
Internet tarayõcõsõ ile daha önce ziyaret edilmiş sayfalara tekrar ulaşabilmek için
window.history.go(-1) komutu kullanõlabilir. -1 ifadesi ile bir önceki sayfaya
gidilir. Sayõ artõrõlarak daha önceki sayfalara da gidilebilir.
Internet tarayõcõsõnõn en alt kõsmõnda bulunan status penceresine erişmek için
window.status komutu kullanõlõr.
<html>
<head>
<title>Browser'õmõzõ tanõyalõm</title>
<METAcontent=text/html;CHARSET=iso-8859-9 http-
equiv=Content-Type>
288 Modül 9:
<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 kullanõcõnõn her türlü hareketi kontrol edilebilir. Bir
kontrolün üzerine gelmesi, dolaşmasõ ve üzerinden ayrõlmasõ gibi hareketlere
olay denir. Bu olaylar ise onClick, onMuoseOver, onMouseOut, onSubmit,
onReset, onChange, onLoad, onUnLoad, onError, onAbort, onFocus, onBlur
olarak belirtilebilir.
onClick
Internet sitelerinin çoğunda en sõk kullanõlan JavaScript olayõdõr. Sayfa üze-
rinde bir nesnenin fare ile tõklanõp bõrakõlmasõ sonucunda gerçekleşen olaydõr.
Link, button ve resim nesneleri tõklanarak onClick olayõ tetiklenebilir.
Nesnelerin etiketlerinde ise onClick olaylarõnõ tetikleyen fonksiyonlarõn ismi
bildirilmelidir.
function tikla()
{
alert(“Tõklama işlemi gerçekleşti…”);
}
<input type="button" name="tikla" value="tikla"
onClick=tikla()>
onMouseOver, onMouseOut
Fare nesnenin üzerindeyken onMouseOver, fare nesne üzerinden ayrõlõnca
onMouseOut olaylarõ devreye girer.
function nesneUzerinde()
{
window.status="Şu anda nesne üzerindesiniz.";
}
function nesneDisinda()
{
window.status="nesnenin dõşõna çõktõnõz." ;
}
<a href="http://www.google.com"
onMouseOver = nesneUzerinde()
onMouseOut = nesneDisinda()> Google
</a>
onSubmit
Web sayfalarõnda ziyaretçinin forma bilgi girip sunucuya göndermesi durumla-
rõnda onSubmit devreye girer. Gönderilecek forma girilen verilerin uygunluğu-
nun kontrolü bu olayõn tetiklediği fonksiyonlara yaptõrõlabilir.
function dogrula()
{
confirm (‘Formu doldurduysanõz OK'i tõklayõnõz');
}
onReset
Form içinde kullanõlan tüm metin alanlarõnõn temizlenmesini sağlar. Doldurulan
formda yanlõşlõk olduğunda bu olay tetiklenir. Kullanõcõya onay penceresi çõkart-
mak için de kullanõlabilir.
function sil()
{
return confirm('Silmek istediginize emin misiniz?');
290 Modül 9:
onChange
Bilgi girişi yapõlan alanlarda, değişikliğin gerçekleştiği bilgisi onChange olayõ ile
tetiklenir.
function degisti()
{
alert(‘Seçimi değiştirdiniz’);
}
<form method="post">
<p>
<select name="degistir" size="1" onChange="degisti()">
<option>Istanbul
<option>Ankara
<option>Antalya
</select>
</form>
onLoad, onUnLoad
onLoad olayõ sayfaya giriş yapõldõğõnda gerçekleşir. onUnLoad olayõ sayfadan
çõkõldõğõnda gerçekleşir.
function giris()
{
alert(“Sayfaya Giriş Yaptõnõz!");
}
function cikis()
{
alert("Sayfadan çõktõnõz..");
}
onError, onAbort
Ziyaret edilen sayfadaki nesneler, çeşitli nedenlerden dolayõ tam olarak
yüklenememiş olabilir. Genellikle resim nesnelerinin yüklenmesinde problem
çõkabilir. Bu tür durumlarõ ziyaretçiye bildirmek için onError veya onAbort
olaylarõ kullanõlõr.
onFocus, onBlur
onFocus olayõ kullanõcõ kontrollerine giriş yapõlõrken gerçekleşir. onBlur olayõ
ise ve kullanõcõ kontrollerinden çõkõş yapõlõrken gerçekleşir.
function dogru()
{
document.form1.mesaj.value="Lütfen hata yapmayõn!";
}
function sor()
{
document.form1.mesaj.value="isminiz alõndõ";
}
VbScript
VbScript, Microsoft tarafõndan geliştirilmiştir. Ancak VbScript tüm tarayõcõlar
tarafõndan desteklenmez. Bu nedenle tüm tarayõcõlarda çalõşacak script yazõl-
mak isteniyorsa, JavaScript kullanõlmalõdõr.
VbScript dilinin kullanõlabilmesi için script etiketi içindeki language niteliğine
vbscript değeri atanõr.
<script language="vbscript">...</script>
<html>
<body>
292 Modül 9:
<script language="vbscript">
document.write("İlk VBScript!")
</script>
</body>
</html>
<html>
<body>
<script language=”vbscript">
dim isim
isim="Bilge Adam"
document.write(isim)
</script>
</body>
</html>
<html>
<head>
<script language="vbscript">
sub mySub()
msgbox("sub procedure")
end sub
</script>
</head>
<body>
<script language=”vbscript">
call mySub()
</script>
<p> sub procedure geri dönüş değeri taşõmaz.</p>
</body>
</html>
<html>
<head>
Web Programlamaya Giriş 293
<script language=”vbscript">
function sehir()
sehir = "Trabzon"
end function
</script>
</head>
<body>
<script language=“vbscript">
document.write("En sevdiğim sehir: " & sehir())
</script>
<p> function procedure geri dönüş değerine sahiptir.</p>
</body>
</html>
Koşul ve döngü yapõlarõnõn kullanõmõ Visual Basic .NET dilindeki gibidir.
294 Modül 9:
Konu 4: CSS
CSS (Cascading Style Sheets), HTML sayfalarõ içinde özel stiller tanõmlamak
için kullanõlõr. Sayfanõn yazõ türü, arka plan rengi, link renkleri, nesnelerin sayfa
üzerindeki yerleşimi birer stil öğeleridir. Bir sitedeki tüm sayfalara aynõ stili ver-
mek için CSS dosyalarõ hazõrlanõr. Bu CSS dosyalarõ HTML sayfalarõna dahil
edilir.
Stiller HTML sayfalarõna üç yöntem ile dahil edilebilir:
! Inline (iç)
! Embedded (gömülü)
! Linked (bağlantõlõ)
İç (Inline)
Herhangi bir HTML etiketi içinde stil kullanõlabilir. Örneğin paragraf etiketine
style=”x” attribute değeri eklenebilir ve o paragrafa özel tasarõm özellikleri
bildirilebilir.
Gömülü (Embedded)
Gömülü stiller, HTML sayfasõnõn Head etiketi içerinde tanõmlanõr. Bu stilleri
tanõmlamak için <Style>..</Style> etiketleri kullanõlmalõdõr.
Web Programlamaya Giriş 295
<html>
<head>
<style>
body
{
background:#ff0000;
color:#ffffff;
}
</style>
</head>
<body>
Kõrmõzõ zemin üzerine beyaz renkle yazõ
</body>
</html>
Bağlantõlõ (Linked)
Stil verileri .css uzantõlõ dosyalarda tanõmlanõr. En güçlü tasarõm özelliği
bağlantõlõ stil dosyalarõndadõr. Tasarõm özellikleri bu dosyada tanõmlanõr ve her
sayfa içinden bu stil dosyasõna bağlantõ verilerek etiketlere gerekli stiller
uygulanõr.
HTML sayfalarda stil dosyasõ ile bağlantõ kurmak için aşağõdaki tanõmlama
yapõlõr. Bu tanõmlama head etiketleri içinde yapõlõr.
Stil nesnelerinin söz dizimi, HTML söz dizimine benzer yapõdadõr. Stil
nesnelerinin belirli kõsõmlarõ vardõr:
! Seçici (Selector): Atanõlan özellikler ve değerleri alõr. H1 ve P gibi
HTML etiketlerine benzer.
! Özellik (Property): Bir seçiciyi tanõmlar. P paragraf etiketine verilen
özellikler o seçiciyi tanõmlar. Kenar boşluklarõ, font ve arka plan değer-
leri birer özellik öğesidir.
! Değer (Value): Özellikleri tanõmlayan öğelerdir.
Özellikler ve değerler birleşerek bir tanõm oluşturur. Seçici ve tanõm ise bir kural
oluşturur. Sayfa düzeni, kenar boşluklarõ, girinti ve hizalama değerleri kontrol
edilerek hazõrlanmõş bir site profesyonel bir görünüme sahip olabilir.
En çok kullanõlan yazõ özellik ve değerleri Tablo 9.6’da listelenmiştir.
Body {
margin-left: 10px;
margin-right: 10px;
margin-top: 20px;
margin-bottom:15px;
}
p {
font-size: 20;
color: blue;
font-weight: bold;
font-style: italic;
font-family: Times New Roman;
}
p {
background-color:blue;
background-image: url(back.gif);
background-position:left;
backround-repeat:repeat-x;
}
Seçiciler
Seçiciler, oluşturulan <H1>, <P> gibi etiketlerin mevcut özelliklerini aynõ tutarak
onlara yeni özellikler ekleme olanağõ verir. Ayrõca istenilen bir kelimeye stil özel-
liği atayõp istenilen zamanda çağrõlmasõnõ sağlar.
h1 {
background:green;
color:white;
font-weight:bold;
font-family:arial;
}
h1.kirmizi{color:red}
Linkler ve CSS
Sayfalarda ziyaret edilen linklerin mavi alt çizgilerini ortadan kaldõrmak veya
başka stiller vermek için CSS dilinden yararlanõlabilir. <A> etiketinin stilini
belirlemekte kullanõlan dört ifade vardõr:
Web Programlamaya Giriş 299
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; font-
family:arial}
Sõnõf ve Gruplama
Sõnõf (class), stil kurallarõnõn küçük parçalara ayrõlmasõnõ sağlar. Sayfadaki
herhangi bir yazõnõn diğer yazõlardan farklõ görünmesi istendiği durumda, isteni-
len sayõda özel HTML etiketi oluşturulabilir. Örneğin sayfada iki farklõ türde H1
etiketi kullanõlmak istensin.
H1.serif {
font: 14pt Century Schoolbook;
}
H1.sans{
font: 20pt Arial;
}
Bu stilleri kullanmak için kod içine serif veya sans sõnõf ismi vermek yeterlidir.
Gruplama, stil özellikleri ve değerleri yoğunlaştõrõldõğõnda oluşur. Örneğin:
P.1 {
font: verdana;
font-size: 12pt;
line-height: 18pt;
}
P.1{font:12pt/18pt verdana}
Her iki gösterimde de aynõ görüntü elde edilir. Ancak gruplamada değerler
girerken font-size, font-height ve font sõralamasõna uyulmasõ gerektiğine
dikkat edilmelidir.
300 Modül 9:
Modül Özeti
2. Script nedir?
4. CSS nedir?
RESİM 9.1.
<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>
Web Programlamaya Giriş 303
</tr>
</table>
</form>
Kodlarõn Yazõlmasõ
SanalKlavye HTML sayfasõnõn HTML bölümüne aşağõdaki kodlarõ yazõn. Bu
kod, Java Script ile istemci taraflõ fonksiyonlar eklemektedir. Bu kodu
<Head>..</Head> etiketleri arasõna ekleyin.
<script language="javascript">
function HarfA()
{
form1.password.value += "A";
}
function HarfB()
{
form1.password.value += "B";
}
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()
Web Programlamaya Giriş 305
{
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()
{
form1.password.value += "P";
}
function HarfR()
{
form1.password.value += "R";
}
function HarfS()
{
306 Modül 9:
form1.password.value += "S";
}
function HarfT()
{
form1.password.value += "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>
RESİM 9.2.
RESİM 9.3.
Kodlarõn Yazõlmasõ
Popup HTML sayfasõnõn HTML bölümüne aşağõdaki kodlarõ yazõn. Bu kod,
JavaScript ile istemci taraflõ fonksiyon eklemektedir. Bu kodu
<Head>..</Head> etiketleri arasõna ekleyin.
<script language="javascript">
function pencereac()
{
window.open('acilan_pencere.htm','acilan','width=500,heig
ht=300')
}
</script>
Modül 10: Kullanõcõ Kontrolleri
Oluşturmak
Sõk kullanõlan kontroller bir araya getirilerek yeni bir kontrol oluşturulur. Bu kont-
roller uygulama içinde her sayfada kullanõlabilir. Örneğin, sayfalar arasõ dola-
şõmõ sağlayan menü paneli, kullanõcõ kontrolü haline getirilebilir.
Web kontrollerinde olduğu gibi kullanõcõ kontrolleri de sunucu tarafõnda çalõşõr.
Kullanõcõ kontrolleri System.Web.UI.UserControl sõnõfõndan türetilmiştir.
Projeye yeni bir kullanõcõ kontrolü eklemek için aşağõdaki adõmlarõ takip edin:
1. Solution Explorer penceresini açõn.
2. Proje adõnõ sağ tõklayõn.
3. Açõlan penceredeki Add menüsünden Add Web User Control komu-
tunu seçin.
4. Name metin kutusuna kullanõcõ kontrolüne verilecek ismi girin.
314 Modül 10:
Kullanõcõ kontrol formlarõ, normal Web formlar gibi tasarlanõr. Kullanõcõ kontrol
dosyalarõ .ascx ve bu kontrollere ait code-behind sayfasõ ise .ascx.vb
uzantõlõdõr.
Kullanõcõ kontrollerinde HTML ve Visual Basic .NET kodu birlikte kullanõlabilir.
Ancak kullanõcõ kontrolleri Web formlarõ tarafõndan kullanõldõğõ için <head>,
<body>, <form> gibi HTML elementleri bulundurmaz.
Web form direktifi olan @Page yerine kullanõcõ kontrollerinde @Control ifadesi
kullanõlõr. Bu direktif @Page direktifinin AspCompat ve Trace dõşõndaki tüm
attribute değerlerine sahiptir.
Kullanõcõ Kontrolleri Oluşturmak 315
Kullanõcõ kontrollerini Web form içine eklemek için @Register ifadesi kullanõlõr.
Bu ifade kullanõcõ kontrollerinin Web forma bağlanmasõnõ sağlar.
TagPrefix attribute değeri kullanõcõ kontrolü için bir namespace oluşturur. Böy-
lece her kontrol ayrõ bir namespace içinde tanõmlanõr. TagName, kullanõcõ
kontrolünün ismidir. Src ise kullanõcõ kontrolünün bulunduğu yolu belirtir.
@Register ifadesi ile forma bağlanan kullanõcõ kontrolü, aşağõda kod ile Web
form içinde görüntülenir. Kullanõcõ kontrolleri sunucu üzerinde çalõştõğõ için,
runat="server" parametresi ile tanõmlanmalõdõr.
Modül Özeti
RESİM 10.1.
Imports System.Data.OleDb
RESİM 10.2.
RESİM 10.3.
</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>
Bağlantõ Oluşturulmasõ
KitapDB veritabanõ üzerinde işlem yapõlmasõ için bağlantõ kurulmasõ gerekir.
Bu bağlantõyõ Server Explorer’õ kullanarak oluşturun. Bu bağlantõ ile veritabanõ
içindeki Kategori tablosu, dsBook isimli DataSet içine eklenecektir.
KitapDb uygulamasõ için yeni bağlantõ oluşturmak:
RESİM 10.4.
RESİM 10.5.
</ItemTemplate>
</asp:Repeater>
Imports System.Data.OleDb
Dim i As Integer
da.Fill(DataSet1, "Kitaplar")
CheckBoxList1.DataSource = DataSet1
CheckBoxList1.DataMember = "Kitaplar"
CheckBoxList1.DataTextField = "Kitap_baslik"
CheckBoxList1.DataValueField = "kitap_ISBN"
CheckBoxList1.DataBind()
End Sub
ADO.NET ile Veriye Erişim 331
Repeater
text='<%# Databinder.eval(container.dataitem,
"contactname")%> ' >
</asp:Label>
</td>
</tr>
</table>
</ItemTemplate>
<FooterTemplate>
<b>BilgeAdam BTA</b>
</FooterTemplate>
</asp:Repeater>
text='<%#Databinder.eval(container.dataitem,
"companyname")%> '
334 Modül 11:
text='<%#Databinder.eval(container.dataitem,
"contactname")%> '
Repeater1.DataSource = DataSet2
Repeater1.DataBind()
DataList
DataList kontrolünün bir diğer farkõ, çõktõ görünümünün tablo içinde veya düz
bir biçimde verilmesidir. RepeatLayout özelliğinin Table ve Flow değerlerini
kullanarak tablo görünümü ve düz görünüm verilir. Varsayõlan görülüm Table
biçimindedir.
ADO.NET ile Veriye Erişim 337
DataGrid
da.Fill(ds, "kitaplar")
DataGrid1.DataSource = ds
DataGrid1.DataMember = "kitaplar"
DataGrid1.DataBind()
End Sub
ADO.NET ile Veriye Erişim 339
HTML
OleDbDataAdapter1.Fill(DataSet1, “Tablo_ismi”)
DataGrid1.DataBind()
DataGrid için hazõrlanmõş çeşitli şablonlar vardõr. Hazõr şablonlarõ seçmek için
DataGrid kontrolü üzerinde sağ tõklanõr ve AutoFormat seçilir.
Varsayõlan durumda DataGrid verileri Grid görünümünde sunar. GridLines
özelliğine Both, Hortizonal, Vertical ve None değerlerinden biri atanabilir.
BackImageUrl özelliği sayesinde DataGrid kontrolünde bir arka plan resmi
görüntülenebilir.
340 Modül 11:
BoundColumn
BoundColumn, DataGrid kontrolünün varsayõlan kolonudur. Kayõtlarõ görüntü-
ler. Veri kaynağõndan alõnan tablodan sadece belirli kolonlarõn görüntülenmesi
istenirse, BoundColumn kontrolleri kullanõlabilir. Kod 11.5’te veri kaynağõndan
alõnan tablonun istenilen kolonlarõ görüntülenir.
BoundColumn ile sadece görüntülenmesi istenen kolonlarõ DataGrid kontro-
lüne eklenir.
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>
! DataField
! DataFormatString
! FooterText
! HeaderImageUrl
! HeaderText
BoundColumn kolonu, DataGridkontrolünün Columns etiketi içinde
tanõmlanmõştõr. DataField özelliğinde ise kolon adõ belirtilmiştir
<asp:BoundColumn DataField="Kitap_fiyat"
DataFormatString="{0:c}"/>
HeaderText="<img src=myImage.Gif>Başlõk"
HyperLinkColumn
HyperLinkColumn, kayõtlarõ linkler şeklinde görüntüleyen kolondur. Yani
DataGrid kontrolünde görüntülenen kayõtlar üzerinden başka sayfalara ilgili
linkler verilmek isteniyorsa, HyperLinkColumn kullanõlmalõdõr. DataGrid
kayõtlarõna ilişkin ayrõntõlõ bilgi verilmek isteniyorsa master/detail formlarõ şek-
linde görüntü vermek için yine bu kolon kullanõlabilir.
Örnekte HyperLinkColumn kullanõmõ gösterilmektedir. DataGrid nesnesi
üzerindeki Detaylar kolunu tõklanarak, detay bilgileri getirilebilir. Bu bilgiler
Detaylar.aspx sayfasõ üzerinde gösterilir.
DataGrid1.DataSource = cmdSelect.ExecuteReader()
DataGrid1.DataBind()
conn.Close()
End Sub
Html
<asp:DataGrid ID="DataGrid1"
AutoGenerateColumns="False" EnableViewState="False"
CellPadding="10" Runat="Server">
<Columns>
<asp:BoundColumn
HeaderText="Müşteri Adõ"
ADO.NET ile Veriye Erişim 343
DataField="musteri_ad" />
<asp:BoundColumn
HeaderText="Müşteri Soyadõ"
DataField="musteri_soyad" />
<asp:HyperLinkColumn
HeaderText="Detaylar"
DataNavigateUrlField="musteri_id"
DataNavigateUrlFormatString="Detaylar.aspx?id={0}"
Text="Detay Görüntüle" />
</Columns>
</asp:DataGrid>
! DataNavigateUrlField
! DataNavigateUrlFormatString
! DataTextField
! DataTextFormatString
! FooterText
! HeaderImageUrl
! HeaderText
! NavigateUrl
! Target
! Text
DataTextField ve DataTextFormatString özellikleri, her bir hyperlink için
farklõ etiketler görüntülenmesi için kullanõlabilir.
Örnekte, HyperLinkColumn kullanõmõ gösterilmektedir. Site linkleri (link_url)
ve başlõklarõ (link_title) veritabanõndaki linkler tablosundan çekilerek,
DataGrid üzerinde gösterilir. Link_title kolonu site başlõklarõnõn
görüntülenmesini sağlar. Link_title kolunu tõklanarak link_url kolonundaki
adres bilgisine yönlendirilir.
DataGrid1.DataSource = cmdSelect.ExecuteReader()
DataGrid1.DataBind()
conn.Close()
End Sub
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, kayõtlarõ bir şablona uyarak görüntüleyen kolondur.
DataGrid hücreleri içinde görüntülenecek verileri çeşitli kontroller kullanarak
ekrana yansõtmak için bu kolon kullanõlõr. Ancak TemplateColumn, kendi içinde
HeaderTemplate, FooterTemplate, ItemTemplate ve EditItemTemplate ol-
mak üzere alanlara ayrõlõr.
Kod 11.8’de TemplateColumn kullanõmõ gösterilmektedir. TemplateColumn ala-
nõnda, kitaba ait yazar ve açõklama bilgileri görüntülenir. Ancak bu iki kolon
bilgileri HTML kodlarõyla alõnõr.
conn)
conn.Open()
DataGrid1.DataSource = cmdSelect.ExecuteReader()
DataGrid1.DataBind()
conn.Close()
End Sub
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>Açõklama:</td>
<td><%# DataBinder.Eval(Container.DataItem,
"kitap_aciklama" )%></td>
</tr>
</table>
</itemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>
346 Modül 11:
ButtonColumn
ButtonColumn, Button kontrollerinin görüntülenmesini sağlar. Uygulanacak
metot kolon üzerinde, düğme şeklinde görüntülenir. Örneğin “Sepete Ekle” gibi
bir iş için Button kullanõlõr ve ButtonColumn içinde tanõmlanõr.
ButtonColumn alanõ kullanarak Select ismindeki düğme tõklandõğõ zaman
kontrolün arka plan rengi ve yazõ kalõnlõğõ değiştirilir. UnSelect seçildiğinde
kontrol eski haline getirilir.
DataGrid1.DataSource = cmdSelect.ExecuteReader()
DataGrid1.DataBind()
conn.Close()
End Sub
e.Item.BackColor = System.Drawing.Color.LightGreen
e.Item.Font.Bold = True
Else
e.Item.BackColor = System.Drawing.Color.Blue
e.Item.Font.Bold = False
End If
End Sub
HTML
<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>
If e.CommandName="select" Then
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
End If
348 Modül 11:
EditCommandColumn
EditCommandColumn, Edit, Update, Cancel gibi düzenleme komutlarõnõn gö-
rüntülenmesini sağlar. EditCommandColumn ile sadece bir satõr düzenlenebilir.
Düzenlemenin veritabanõ geçmesi ayrõ işlemler gerektirir.
EditCommandColumn kolonunun görüntülediği kayõt, düzenleme için kayõt se-
çen DataGrid nesnesinin EditItemIndex özelliğine göre değişir.
Düzenleme işleminin seçili olmadõğõ durumda bu kolonda Edit düğmesi gözü-
kür. Edit seçildiği anda ise Update ve Cancel düğmeleri gözükür.
EditCommandColumn özellikleri:
! ButtonType
! CancelText
! EditText
! FooterText
! HeaderImageUrl
! HeaderText
! UpdateText
ADO.NET ile Veriye Erişim 349
DataGrid1.DataSource = cmdSelect.ExecuteReader()
DataGrid1.DataBind()
conn.Close()
End Sub
Html
Sayfalama
Sayfalarca uzunluktaki kayõtlarõ bir seferde göstermek yerine sayfalara ayõrmak
daha kullanõşlõ olur. DataGrid kontrolünde sayfalama yapabilmek için kontro-
lün AllowPaging özelliği True yapõlõr. Varsayõlan değer False değeridir.
PageIndexChanged olayõnõ tetikleyecek bir metodun yazõlmasõ gerekir.
Sub BindDataGrid
Dim connStr As String =
"Provider=Microsoft.Jet.OLEDB.4.0; _
Data Source=" & Server.Mappath("./Stok.mdb")
Dim conn As New OleDbConnection(connStr)
Dim da As new OleDbDataAdapter("Select * From Kitaplar _
Order By Kitap_baslik", conn )
da.Fill( ds )
DataGrid1.DataSource = ds
ADO.NET ile Veriye Erişim 351
DataGrid1.DataBind()
End Sub
HTML
<asp:DataGrid ID="DataGrid1"
AllowPaging="True" PageSize="5"
OnPageIndexChanged="DataGrid1_PageIndexChanged"
CellPadding="3" Runat="Server" />
PlaceHolder Kullanõmõ
Programõn çalõşma zamanõ sõrasõnda, kullanõcõdan gelecek isteğe göre yeni
kontroller eklenmek isteniyorsa PlaceHolder kontrolü kullanõlõr. PlaceHolder
kontrolünün amacõ, dinamik olarak eklenen bu kontrollerin bir arada tutulmasõ-
dõr. Dinamik olarak oluşturulan kontroller istenildiği gibi dizayn edilebilir.
Çalõşma zamanõnda forma yeni bir kontrol eklemek için Controls.Add() me-
todu kullanõlõr.
For i = 1 To 10
PlaceHolder1.Controls.Add( _
New LiteralControl("<p>Alan " & i & ": "))
PlaceHolder1.Controls.Add(New TextBox)
Next
ADO.NET ile veriye erişmek için Connected ve Disconnected veri erişim yön-
temi kullanõlõr. Bu yöntemler ile ASP.NET sayfalarõnda veri alõşverişi yapõlõr.
354 Modül 11:
Namespace
Imports System.Data
Imports System.Data.OleDb
Inline kod yazõmõnda <%@ %> ifadeleri arasõnda isim alanlarõ import edilir.
Modül Özeti
Imports System.Data.OleDb
358 Modül 11:
comm.Parameters.Add("@ad", txtAd.Text)
comm.Parameters.Add("@soyad", txtSoyad.Text)
comm.Parameters.Add("@email", txtEmail.Text)
comm.Parameters.Add("@sifre", txtSifre.Text)
Dim sonuc As Integer
Try
conn.Open()
sonuc = comm.ExecuteNonQuery()
Catch ex As Exception
Response.Write(ex.Message)
Finally
conn.Close()
End Try
If sonuc = 1 Then
Response.Redirect("Kayit.aspx")
End If
End Sub
Imports System.Data.OleDb
"Provider=Microsoft.Jet.OleDB.4.0;Data Source=" _
& Server.MapPath("KitapDb.mdb")
dr.Close()
Catch ex As Exception
Response.Write(ex.Message)
Finally
If conn.State = ConnectionState.Open Then
conn.Close()
End If
End Try
If sonuc = True Then
Response.Redirect("Default.aspx")
Else
360 Modül 11:
RESİM 11.1.
</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>
<asp:button id="btnSatinAl"
runat="server" Text="Satõn 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>
<TD bgColor="#99ccff" colSpan="3"><uc1:alt
id="Alt1" runat="server"></uc1:alt></TD>
</TR>
</TABLE>
</form>
</body>
</HTML>
Imports System.Data.OleDb
kID = Request.Params("kID")
'Response.Write(kID)
Dim connStr As String = _
"Provider=Microsoft.Jet.OleDB.4.0;Data Source=" _
& Server.MapPath("KitapDb.mdb")
comm.Parameters.Add("@kitapID", _
Convert.ToInt32(kID))
Dim dr As OleDbDataReader
Try
conn.Open()
dr = comm.ExecuteReader
If dr.Read = True Then
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")
End If
dr.Close()
Catch ex As Exception
Response.Write(ex.Message)
Finally
If conn.State = ConnectionState.Open Then
364 Modül 11:
conn.Close()
End If
End Try
End Sub
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)
Dim sonuc As Integer
Try
conn.Open()
sonuc = comm.ExecuteNonQuery()
Catch ex As Exception
Response.Write(ex.Message)
Finally
conn.Close()
End Try
If sonuc = 1 Then
Response.Redirect("Satis.aspx")
End If
End Sub
ADO.NET ile Veriye Erişim 365
RESİM 11.2.
<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">
<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 Font-
Bold="True"></HeaderStyle>
<Columns>
<asp:HyperLinkColumn
DataNavigateUrlField="KitapID"
DataNavigateUrlFormatString="Kitapdetay.aspx?KID={0}"
<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>
</form>
</body>
</HTML>
Imports System.Data.OleDb
comm.Connection = conn
RESİM 11.3.
<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>
ADO.NET ile Veriye Erişim 371
Imports System.Data.OleDb
comm.Parameters.Add("@kID", _
Convert.ToInt32(kategoriID))
Durum Yönetimi
Web formlarõ stateless çalõşõr. Yani kullanõcõlardan gelen isteklerin nereden gel-
diği anlaşõlmaz. Web sunucusuna yapõlan her istekte Web formlar yeniden
oluşturulur.
ASP.NET, sunucuda uygulamaya ait özel bilgileri tutan ve sayfalar arasõ veri
aktarõmõ gerçekleştiren bir altyapõ sağlar.
ASP.NET ile Durum Yönetimi 377
Konu 1: Session
Login.aspx sayfasõ
Sayfam.aspx sayfasõ
<sessionState
mode="InProc"
stateConnectionString="tcpip=127.0.0.1:42424"
sqlConnectionString="data
source=127.0.0.1;Trusted_Connection=yes"
cookieless="false"
timeout="20"
/>
Konu 2: Cookie
Cookie Türleri
İki tür cookie vardõr:
! Temporary (Geçici). Temporary cookie nesneleri, session cookie veya
non-persistent cookie olarak da isimlendirilir. Bu cookie‘ler sadece
tarayõcõnõn hafõzasõnda tutulup, tarayõcõ kapatõldõğõnda tüm temporary
cookie nesneleri hafõzadan atõlõr.
ASP.NET ile Durum Yönetimi 383
Konu 3: Application
Bu örnekte her bir yeni session açõldõğõnda, yani siteye her istek yapõldõğõnda
ziyaretçi sayõsõ birer artõrõlõr.
Application değişkeni doldurulduktan sonra uygulama içinden çağõrmak için
Application(“degisken_ismi”) ifadesi kullanõlõr.
Konu 4: Global.asax
Modül Özeti
Session Kullanmak
ASPEticaret isimli projeyi açõn.
Imports System.Data.OleDb
"Provider=Microsoft.Jet.OleDB.4.0;Data Source=" _
& Server.MapPath("KitapDb.mdb")
dr.Close()
Catch ex As Exception
Response.Write(ex.Message)
Finally
If conn.State = ConnectionState.Open Then
conn.Close()
End If
End Try
If sonuc = True Then
Response.Redirect("Default.aspx")
Else
ASP.NET ile Durum Yönetimi 393
Imports System.Data.OleDb
kID = Request.Params("kID")
'Response.Write(kID)
Dim connStr As String = _
"Provider=Microsoft.Jet.OleDB.4.0;Data Source=" _
& Server.MapPath("KitapDb.mdb")
comm.Parameters.Add("@kitapID", _
Convert.ToInt32(kID))
Dim dr As OleDbDataReader
Try
conn.Open()
dr = comm.ExecuteReader
If dr.Read = True Then
394 Modül 12:
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")
End If
dr.Close()
Catch ex As Exception
Response.Write(ex.Message)
Finally
If conn.State = ConnectionState.Open Then
conn.Close()
End If
End Try
End Sub