: VB.net e-book part 2

Transkript

: VB.net e-book part 2
Yazõlõm
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
Copyright © 2005, Bilge Adam
Kitabõn yayõn haklarõ Bilge Adam Bilgi Teknolojileri Akademisi’ne aittir.
Firmadan yazõlõ izin almadan kõsmen veya tamamen alõntõ yapõlamaz, hiçbir
şekilde kopya edilemez, çoğaltõlamaz ve yayõmlanamaz.
Önsöz
.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 konularõ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.
Yazõlõm profesyonelleri için hazõrlanan bu yayõnda emeği geçen tüm yazõlõm
ekibindeki arkadaşlarõma teşekkür ederim. Yazarlõk katkõlarõndan dolayõ Fulya
SATAR’a, bu yayõnõn hazõrlanmasõnda büyük emek ve fedakarlõklarõndan dolayõ özellikle Tamer ŞAHİNER’e ve yayõndaki büyük emeklerinden dolayõ Engin
ÖREN’e teşekkür ederim. Ayrõca yayõnõn içeriğinin oluşmasõnda fikirlerini sürekli bizimle paylaşan yazõlõm ekibindeki eğitimcilerimize teşekkürler.
Tuncer KARAARSLAN
İçindekiler
Modül 1: Geliştirme Ortamõnõ Tanõmak ...............................3
Konu 1: Visual Basic .NET ile Proje Oluşturmak .................................. 4
Proje Şablonu Seçmek ................................................................... 5
Proje Dosyalarõna Genel Bakõş.......................................................... 7
Assembly Nedir?........................................................................... 9
Projeye Referans Eklemek ............................................................ 10
İsim Alanõ (Namespace) Nedir? ....................................................... 12
Yeni İsim Alanõ Eklemek ............................................................... 13
Projeye İsim Alanõ Dahil Etmek....................................................... 15
Proje Özelliklerini Ayarlamak......................................................... 17
Konu 2 : Proje Bileşenlerini Tanõmak ................................................. 19
Solution Explorer Kullanmak.......................................................... 20
Object Browser Kullanmak............................................................ 21
Server Explorer Kullanmak............................................................ 22
Dinamik Yardõm Almak................................................................. 23
Görev Listesini Kullanmak............................................................. 24
Konu 3: Uygulamalarda Hata Ayõklama ............................................. 25
BreakPoint ............................................................................... 26
Debug Panelleri ......................................................................... 27
Command Panelini Kullanmak........................................................ 28
Konu 4: Uygulamanõn Derlenmesi...................................................... 29
Derleme Seçeneklerine Bakõş......................................................... 30
Modül Özeti .......................................................................................... 31
LAB 1: Geliştirme Ortamõnõ Tanõmak.................................................. 32
Uygulama 1: Windows Uygulamasõ Oluşturmak ................................... 32
Çağrõ Merkezi Uygulamasõnõ Oluşturmak ....................................... 32
Uygulama 2: Object Browser Kullanmak ........................................... 33
System.Data Kütüphanesini Açmak ............................................. 33
Uygulama 3: Debug Aracõnõ Kullanma............................................... 33
Kodlarõn Yazõlmasõ .................................................................. 33
Hata Ayõklama....................................................................... 34
İçindekiler
V
Modül 2: Veri Merkezli Uygulamalar ve ADO.NET’e Giriş. 37
Konu 1: Veri Merkezli Uygulamalar .................................................... 38
Veri Depolama........................................................................... 39
Bağlantõlõ (Connected) Veri Ortamlarõ .............................................. 40
Bağlantõsõz (Disconnected) Veri Ortamlarõ ......................................... 41
Veri Erişim Yöntemleri ................................................................. 43
Konu 2: ADO.NET’e Giriş...................................................................... 46
ADO.NET Nedir? ......................................................................... 47
ADO.NET Nesne Modeli ................................................................ 48
ADO.NET Veri Sağlayõcõlarõ ............................................................ 49
Modül Özeti .......................................................................................... 53
Lab 2: Veri Merkezli Uygulamalar ve ADO.NET’e Giriş ...................... 54
Uygulama 1: Yeni bağlantõ oluşturmak.............................................. 54
Çağrõ Merkezi Uygulamasõ İçin Yeni Bağlantõ Oluşturmak.................... 54
Modül 3: Veri Kaynaklarõna Bağlanmak............................ 59
Konu 1: Veri Sağlayõcõ Seçmek............................................................ 60
Veri Sağlayõcõ Nedir?.................................................................... 61
Veri Sağlayõcõ Sõnõflarõ .................................................................. 62
Konu 2: Bağlantõ Oluşturmak.............................................................. 66
Bağlantõ Cümlesi (Connection String) Oluşturmak ................................ 67
Bağlantõ Cümlesini (Connection String) Kullanmak ............................... 69
Bağlantõ Cümlesi(Connection String) Örnekleri ................................... 71
Ms Access ile OLEDB Bağlantõ Cümleleri........................................ 72
SQL Server ile ODBC Bağlantõ Cümleleri........................................ 73
SQL Server ile OLEDB Bağlantõ Cümleleri....................................... 74
SQL Server ile SQL Server Bağlantõ Cümleleri ................................. 75
Konu 3: Bağlantõ Yönetimi .................................................................. 76
Bağlantõyõ Açmak ve Kapatmak....................................................... 77
Bağlantõ Durumlarõnõ Kontrol Etmek................................................. 80
Modül Özeti .......................................................................................... 82
Lab 1: Bağlantõ Oluşturmak ................................................................ 83
Kontrollerin Eklenmesi................................................................. 83
Kodlarõn Yazõlmasõ ...................................................................... 84
VI
İçindekiler
Modül 4: Bağlantõlõ (Connected) Veritabanõ İşlemleri ........91
Konu 1: Bağlantõlõ Veri Ortamlarõyla Çalõşmak................................... 92
Bağlantõlõ Uygulamalar İçin Veritabanõ Mimarisi................................... 93
Konu 2: Command ile Çalõşmak.......................................................... 95
Command Nedir?........................................................................ 96
Command Oluşturmak ................................................................. 99
Parametre Kullanmak................................................................. 101
Konu 3: Command ile Geriye Değer Döndürmek ............................ 105
Konu 4: Command ile Geriye Kayõt Döndürmek.............................. 107
DataReader Özellik ve Metotlarõ .................................................... 107
Konu 5: Command ile Kayõt Döndürmeyen Sorgular
Çalõştõrmak ..................................................................... 113
Modül Özeti ........................................................................................ 117
Lab 1: Veritabanõ İşlemleri................................................................ 118
Veritabanõnõn Oluşturulmasõ ..................................................... 118
Kontrollerin Eklenmesi ........................................................... 119
Kodlarõn Yazõlmasõ ................................................................. 119
ExecuteNonQuery Metodu ....................................................... 120
ExecuteReader ve DataReader.................................................. 121
Form Kontrolleri İşlemleri........................................................ 122
Yordamlarõn Formda Kullanõlmasõ............................................... 123
Modül 5: Bağlantõsõz (Disconnected) Veritabanõ İşlemleri129
Konu 1: Disconnected Uygulamalar İçin Veritabanõ Mimarisi ........ 130
Konu 2: DataSet ve DataTable Oluşturmak ..................................... 132
DataSet Nesne Modeli................................................................. 133
Konu 3 : DataAdapter ile Kayõtlarõ Dataset’e Doldurmak................ 137
Konu4: DataSet Nesnesini Kontrollere Bağlamak........................... 139
DataSet İçindeki Veriyi Windows Kontrollerine Bağlamak ...................... 140
DataSet İçindeki Veriyi DataGrid’e Bağlamak .................................... 142
Konu : 5 DataTable Üzerindeki Veriyi Düzenlemek......................... 143
Windows Form ile Kayõt Üzerinde Hareket Sağlamak ........................... 146
İçindekiler
VII
Lab 1: Bağlantõsõz Veritabanõ İşlemleri ............................................148
Veritabanõnõn Oluşturulmasõ .....................................................148
Kontrollerin Eklenmesi ...........................................................149
Bağlantõ Cümlesinin Oluşturulmasõ .............................................150
Bağlantõnõn Oluşturulmasõ........................................................150
DataAdapter Nesnesinin Oluşturulmasõ........................................151
DataSet Nesnesinin Oluşturulmasõ..............................................151
DataSet İçindeki Verinin DataGrid Kontrolüne Bağlanmasõ.................151
DataSet İçindeki Verinin TextBox Kontrollerine Bağlanmasõ ...............152
Kodlarõn Yazõlmasõ .................................................................152
Konu 6: Veri Arama ve Sõralama .......................................................154
DataView Özellik ve Metotlarõ.......................................................157
Modül Özeti ........................................................................................159
Lab 2: Çoklu Tablolarla Çalõşmak......................................................160
Veritabanõnõn Projeye Eklenmesi ...............................................161
Kontrollerin Eklenmesi ...........................................................161
Bağlantõ Cümlesinin Oluşturulmasõ .............................................161
Bağlantõnõn Oluşturulmasõ........................................................162
DataAdapter Nesnesinin Oluşturulmasõ........................................162
DataSet Nesnesinin Oluşturulmasõ..............................................164
DataView Nesnesinin Oluşturulmasõ............................................164
DataSet İçindeki Verinin ComboBox Kontrolüne Bağlanmasõ...............165
Kodlarõn Yazõlmasõ .................................................................165
Modül 6: ASP.NET’e Giriş ............................................... 169
Konu 1: ASP.NET Nedir?....................................................................170
Konu 2: ASP Tarihçesi........................................................................171
Konu 3: ASP.NET Uygulama Mimarisi...............................................172
İstemci Katmanõ (Presentation Tier) ...........................................172
İş katmanõ (Business Logic Tier).................................................172
Veri Katmanõ (Data Tier) .........................................................172
Konu 4: ASP.NET Çalõşma Modeli......................................................173
Tür Yönetimi (Type Management) ..............................................174
JIT Derleme (JIT Compilation) ..................................................175
Hafõza Yönetimi (Memory Management) ......................................176
Exception Yöneticisi (Exception Manager) ....................................177
VIII
İçindekiler
Konu 5: ASP.NET’in .NET Çatõsõndaki Yeri........................................ 180
Konu 6: .NET Framework’ün ASP.NET’teki Avantajlarõ ................... 181
Konu 7: ASP.NET ile Uygulama Geliştirmek..................................... 182
IIS Nedir? ................................................................................ 183
IIS Kurulumu ve Yönetimi ............................................................ 184
IIS Kurulumu ........................................................................ 185
IIS Yönetimi......................................................................... 187
.NET Framework Kurulumu .......................................................... 190
Modül Özeti ........................................................................................ 191
Lab 1: Web Tabanlõ Uygulamalarõn Yayõnlanmasõ ........................... 192
IIS (Internet Information Services) Kurulmasõ ................................ 192
Uygulama Yayõnlamak ............................................................ 192
Modül 7: ASP.NET Web Form ve Kontrolleri ile Çalõşmak197
Konu 1: Web Form Bileşenleri .......................................................... 198
Page Özelliği........................................................................ 200
Body Özelliği ....................................................................... 202
Form Özelliği ....................................................................... 203
Konu 2: Server (Sunucu) Kontroller................................................. 204
Konu 3: Kontrollerin Sõnõflandõrõlmasõ .............................................. 205
Standart Kontroller................................................................ 205
Doğrulama Kontrolleri ............................................................ 206
Zengin Kontroller.................................................................. 206
İlişkisel Liste Tabanlõ Kontroller................................................. 206
Konu 4: Standart Kontroller.............................................................. 207
Label................................................................................. 207
TextBox.............................................................................. 207
Button ............................................................................... 207
CheckBox ........................................................................... 208
RadioButton ........................................................................ 209
HyperLink........................................................................... 210
Image................................................................................ 210
ImageButton........................................................................ 210
LinkButton .......................................................................... 211
DropDownList ...................................................................... 212
ListBox............................................................................... 213
İçindekiler
IX
Panel.................................................................................214
Table.................................................................................214
Konu 5: Doğrulama(Validation) Kontrolleri.....................................216
RequiredFieldValidator ...........................................................217
CompareValidator .................................................................217
RangeValidator.....................................................................218
RegularExpressionValidator ......................................................219
CustomValidator ...................................................................220
ValidationSummary................................................................222
Konu 6: Zengin Kontroller .................................................................223
AdRotator ...........................................................................223
Calendar ............................................................................ 224
Konu 7: AutoPostBack Özelliği..........................................................226
Konu 8: ViewState .............................................................................228
Modül Özeti ........................................................................................229
Lab 1: E-Ticaret Uygulamasõ Geliştirmek .........................................230
Veritabanõnõn Projeye Eklenmesi....................................................230
Web Formlarõn Eklenmesi ............................................................231
UyeKayit Formunun Eklenmesi..................................................231
UyeGiris Formunun Eklenmesi ..................................................236
Giris Formunun Eklenmesi .......................................................238
Kayit Formunun Eklenmesi ......................................................240
Satis Formunun Eklenmesi .......................................................242
Modül 8: ASP.NET ile Kod Geliştirmek ........................... 247
Konu 1: Kod Yazmak .........................................................................248
Inline Kod Yazmak .....................................................................249
Code-Behind Kod Yazmak ............................................................250
Konu 2: Client Side (İstemci Taraflõ) Olay Prosedürleri ..................252
Konu 3: Server Side (Sunucu Taraflõ) Olay Prosedürleri .................253
Olay Prosedürleri Oluşturmak .......................................................254
Olay Prosedürlerinde Kontrollerle Etkileşim ......................................255
Konu 4: Sayfa Yaşam Döngüsü.........................................................256
Response.Redirect.....................................................................257
Postback İşlemleri .....................................................................258
X
İçindekiler
Page.IsPostback.................................................................... 259
Modül Özeti ........................................................................................ 260
Lab 1: ASP.Net ile Kod Geliştirmek................................................... 261
Web Uygulamasõ Oluşturmak .................................................... 261
Web Form Eklenmesi ............................................................. 261
Kodlarõn Yazõlmasõ ................................................................. 262
Modül 9: Web Programlamaya Giriş............................... 267
Konu 1 : Web Programlamaya Giriş ................................................. 268
Konu 2: HTML..................................................................................... 269
HTML Yapõsõ ............................................................................. 269
Tag ................................................................................... 270
Attribute ............................................................................ 271
Value................................................................................. 272
HTML Belgesi Nasõl Oluşturulur?................................................. 273
En Sõk Kullanõlan Etiketler............................................................ 274
Başlõklar ............................................................................. 274
Paragraf ve Satõr Sonu ............................................................ 274
Sayfalara Bağlantõ Vermek....................................................... 275
Listeler .............................................................................. 275
Resim Görüntüleme............................................................... 276
Tablolar.............................................................................. 276
Konu 3: Script Nedir? ........................................................................ 278
JavaScript............................................................................... 279
Değişkenler ......................................................................... 281
Operatörler......................................................................... 282
Klavyeden Bilgi Almak ve Ekrana Çõktõ Vermek .............................. 284
Koşul ve Döngü Yapõlarõ........................................................... 284
Fonksiyonlar........................................................................ 286
JavaScript Nesneleri .............................................................. 286
Olaylar............................................................................... 288
VbScript ................................................................................. 291
Konu 4: CSS........................................................................................ 294
İç (Inline)............................................................................ 294
Gömülü (Embedded).............................................................. 294
Bağlantõlõ (Linked)................................................................. 295
Style Sheet’lerin Söz Dizimi ......................................................... 296
Seçiciler............................................................................. 298
İçindekiler
XI
Linkler ve CSS ......................................................................298
Sõnõf ve Gruplama......................................................................299
Modül Özeti ........................................................................................300
Lab 1: Web Programlamaya Giriş .....................................................301
Web Uygulamasõ Oluşturmak ....................................................301
Sanal Klavye Oluşturmak.........................................................301
Kodlarõn Yazõlmasõ .................................................................304
Popup Pencere Oluşturmak ......................................................306
Kodlarõn Yazõlmasõ .................................................................307
Modül 10: Kullanõcõ Kontrolleri Oluşturmak ................... 311
Konu 1: Kullanõcõ Kontrolleri .............................................................312
Kullanõcõ Kontrolünün Avantajlarõ ...................................................312
Kullanõcõ Kontrolünü Projeye Eklemek .............................................313
Modül Özeti ........................................................................................317
Lab 1: E-Ticaret Uygulamasõ Geliştirmek .........................................318
Kullanõcõ Kontrollerin Eklenmesi ................................................318
Ust Kontrolünün Eklenmesi ......................................................318
Alt Kontrolünün Eklenmesi.......................................................320
Yan Kontrolünün Eklenmesi......................................................321
DataSet Nesnesinin Oluşturulmasõ..............................................322
Bağlantõ Oluşturulmasõ ...........................................................322
Kategori Kontrolünün Eklenmesi................................................322
Modül 11: ADO.NET ile Veriye Erişim ............................. 327
Konu 1: Veri Bağlantõlõ Kontroller .....................................................328
CheckBoxList ve RadioButtonList Kullanõmõ.......................................329
Repeater, DataList ve DataGrid Kullanõmõ.........................................331
Repeater ............................................................................332
DataList ............................................................................. 335
DataGrid ............................................................................ 338
DataGrid Kontrolünde Kolon Oluşturmak......................................340
DataGrid Kontrolünde Sõralama ve Sayfalama................................349
PlaceHolder Kullanõmõ ................................................................351
Konu 2: Connected ve Disconnected Uygulamalar Geliştirmek .....353
Namespace .............................................................................355
XII
İçindekiler
Modül Özeti ........................................................................................ 356
Lab 1: E-Ticaret Uygulamasõ Geliştirmek......................................... 357
Connect Veritabanõ İşlemleri .................................................... 357
UyeKayit Formu ile Veritabanõ İşlemlerinin Yapõlmasõ ...................... 357
UyeGiris Formu ile Veritabanõ İşlemlerinin Yapõlmasõ ....................... 358
KitapDetay Formunun Eklenmesi ve Veritabanõ İşlemlerinin
Yapõlmasõ............................................................................ 360
Disconnect Veritabanõ İşlemleri................................................. 365
Default Formunun Eklenmesi ve Veritabanõ İşlemlerinin Yapõlmasõ....... 365
DataSet İçine DataTable Eklenmesi ............................................ 367
Kitap Formunun Eklenmesi ve Veritabanõ İşlemlerinin Yapõlmasõ ......... 368
DataSet İçine DataTable Eklenmesi ............................................ 371
Modül 12: ASP.NET ile Durum Yönetimi ........................ 375
Durum Yönetimi ....................................................................... 376
Konu 1: Session ................................................................................. 378
Session Değişkenine İlk Değer Vermek ............................................. 380
Konu 2: Cookie................................................................................... 381
Cookie Türleri .......................................................................... 382
Konu 3: Application ........................................................................... 385
Application Değişkenine İlk Değer Vermek........................................ 386
Konu 4: Global.asax........................................................................... 388
Modül Özeti ........................................................................................ 390
Lab 1: E-Ticaret Uygulamasõ Geliştirmek......................................... 391
Session Kullanmak ..................................................................... 391
UyeGiris Formu İçinde Session Kullanmak..................................... 391
KitapDetay Formu İçinde Session Kullanmak ................................. 393
Ust Kullanõcõ Kontrolü İçinde Session Kullanmak............................. 394
Modül 1: Geliştirme Ortamõnõ
Tanõmak
Bu modülde, Visual Studio .NET ortamõ ile tanõşacak ve bu ortam içinde
kullanõlan temel proje bileşenleri hakkõnda genel bilgiler edineceksiniz. Ayrõca
çalõşma zamanõ hatalarõnõ yakalamayõ ve uygulamayõ derlemeyi öğreneceksiniz.
Bu modül tamamlandõktan sonra;
! Proje oluşturabilecek,
! Projeye referans ekleyebilecek,
! Projeye isim alanõ ekleyebilecek,
! Proje özelliklerini değiştirebilecek,
! Dinamik yardõm alabilecek,
! Proje içine görevler ekleyebilecek
! Çalõşma zamanõ hatalarõnõ yakalayabilecek,
! Uygulamalarõ derleyebileceksiniz.
4
Modül 1:
Konu 1: Visual Basic .NET ile Proje
Oluşturmak
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ç çubuklarõ ile kolay bir şekilde gerçekleştirilir.
Geliştirme Ortamõnõ Tanõmak
5
Proje Şablonu Seçmek
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, Windows tabanlõ projeler için Windows formlarõnõn kullanõlmasõ ve bazõ referanslarõ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ştirmek için kullanõlõr.
! ASP.NET Web Application: IIS (Internet Information Services) üzerinde ç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õ kontroller oluşturmak için kullanõlõr.
6
Modül 1:
! Console Application: Komut penceresinde
uygulamalarõ geliştirmek için kullanõlõr.
çalõşacak
konsol
! Windows Service: Windows altõnda sürekli çalõşan uygulamalar için
kullanõlõr. Bu uygulamalar, kullanõcõlarõn sisteme giriş yapmadõğõ durumlarda da çalõşmaya devam eder.
! Other Projects: Enterprise Applications (şirket uygulamalarõ), Deployment Projects (yükleme projeleri), Database Projects (veritabanõ projeleri) gibi değişik şablonlardõr.
! Empty Project: Herhangi bir şablon uygulanmadan açõlan Windows
projelerdir. Başlangõç nesnesi ve referanslar eklenmez.
! Empty Web Project: Herhangi bir şablon uygulanmadan açõlan Web
projelerdir. Bu proje IIS üzerinde tanõmlanõr ancak form ve referans
nesneleri eklenmez.
! Blank Solution: Başlangõç olarak bir proje açõlmaz. Boş bir solution
dosyasõ açõlõr. İstenen projeler, Add New Project komutu ile bu solution
içine dahil edilir.
Visual Studio ile yeni bir proje birkaç adõmda oluşturulabilir.
1. File menüsünden New alt menüsünü işaretleyin ve Project komutunu
seçin.
2. New Project penceresinde Visual Basic Projects tipini ve çalõşmak
istediğiniz şablonunu seçin.
3. Name özelliğinde projeye vereceğiniz ismi yazõn.
4. Location özelliği projenin dosyalarõnõn bulunacağõ yeri belirler. Browse
düğmesini tõklayarak Windows dizinine ulaşõn ve projenin yerini seçin.
5. More düğmesi tõklandõğõnda, solution dosyasõ için yeni bir isim
kullanõlmasõnõ ve ayrõ bir klasör açõlmasõnõ sağlayan panel görüntülenir.
Solution için farklõ bir isim vermek için Create directory for Solution
seçeneğini işaretleyin ve metin kutusuna solution için yeni bir isim yazõn.
6. OK düğmesi tõklandõğõnda proje açõlõr. Solution için ayrõ bir klasör seçilmemişse, proje dosyalarõ proje ismi ile oluşturulan klasör altõnda oluşturulur.
Geliştirme Ortamõnõ Tanõmak
7
Proje Dosyalarõna Genel Bakõş
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õşõrken yaptõğõ ayarlarõ tutar ve proje tekrar açõldõğõ zaman bu ayarlarõ getirir.
! 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õ zamanda, 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 tutulduğ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:
Proje oluşturulduktan sonra yeni nesnelerin eklenmesi Project menüsü ile ya
da Solution Explorer paneli kullanõlarak gerçekleştirilir. Project menüsünden
yeni bir form, module, class, component ya da user control eklemek için ilgili
menü komutu seçilebilir. Add New Item komutu ile farklõ tipte birçok dosya projeye dahil edilebilir.
Geliştirme Ortamõnõ Tanõmak
9
Assembly Nedir?
Visual Studio .NET ortamõnda geliştirilen uygulamalar derlendiğinde, .exe
veya .dll uzantõlõ dosyalar oluşur. .NET’in otomatik olarak oluşturduğu bu
dosyalara assembly denir. Assembly içinde dosyaya ait başlõk, açõklama ve telif
hakkõ gibi kritik bilgiler tutulur.
Visual Studio .NET içinde geliştirilen bir projeye, farklõ kişiler tarafõndan geliştirilmiş assembly’ler eklenebilir. Özellikle gelişmiş projelerde assembly’ler ayrõ
programcõlar tarafõndan yazõlarak ortak bir proje altõnda toplanabilir.
10
Modül 1:
Projeye Referans Eklemek
Herhangi bir projenin içine bileşen kütüphanelerinin eklenmesi için kullanõlõr. Bu
bileşen kütüphaneleri, .NET ve COM bileşenlerden oluşur.
Projeye referans eklemek için aşağõdaki adõmlarõ takip edin:
1. Solution Explorer penceresinden References menüsünü sağ tõklayõn.
2. Açõlan menüden Add Reference komutunu verin.
3. Açõlan pencere üzerinden .NET, COM, Projects sekmelerinden herhangi birini seçin.
.NET, projeye NET bileşen kütüphanelerini eklemek için kullanõlõr.
COM, projeye COM bileşen kütüphanelerini eklemek için kullanõlõr.
Projects, proje ile aynõ solution içinde yer alan bileşen kütüphanelerini
eklemek için kullanõlõr.
4. Eklenecek assembly nesnesini seçin ve Select düğmesini tõklayõn. Birden fazla assembly seçmek için aynõ işlemi tekrar edin.
5. Referans ekleme işlemini tamamlamak için OK düğmesini tõklayõn.
Proje şablonlarõ içinde en çok kullanõlan referanslar şunlardõr:
Geliştirme Ortamõnõ Tanõmak
11
! System: Programõn çalõşmasõ için gerekli en temel referanstõr.
System.dll kütüphanesi içinde tutulur.
! System.Data: Veritabanõ bağlantõlarõnõn yapõlmasõ için gerekli referanstõr. System.Data.dll kütüphanesi içinde tutulur.
! System.Drawing, System.Windows.Forms: Windows form ve
kontrollerini içeren referanstõr. System.Drawing.dll ve System.
Windows.Forms.dll kütüphaneleri içinde tutulur.
! System.XML: XML teknolojisinin kullanõlmasõnõ sağlayan referanstõr.
System.XML.dll kütüphanesi içinde tutulur.
12
Modül 1:
İsim Alanõ (Namespace) 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 denilen 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
Yeni İsim Alanõ Eklemek
Yeni isim alanõ oluşturmak için Namespace anahtar kelimesi kullanõlõr.
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
' BilgeAdam isim alanõnda kullanõlacak
' Sõnõf, Modul ve Arayüzler tanõmlanõr
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.
Dim yeniOgrenci As New bilgeadam.NSbilgeadam.Ogrenci()
Proje ile aynõ isimdeki bir isim alanõ .NET derleyicisi tarafõndan yeni oluşturulan tüm projelere 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
Projeye İsim Alanõ Dahil Etmek
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 kullanõmlar, kodun okunmasõnõ oldukça zorlaştõrõr. Örnekte sõnõflar bu yöntemle tanõmlanmõştõr.
Dim kisi1 As New bilgeadam.NSbilgeadam.Idari.Personel
Dim OgrenciBilgi As New bilgeadam.NSbilgeadam.Ogrenci.Bilgi
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 yazmak yeterli olur:
Dim ogrenciBilgi As New Ogrenci.Bilgi
İç 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:
Imports ogr = bilgeadam.NSBilgeadam.Ogrenci
Public Class Form1
16
Modül 1:
Inherits System.Windows.Forms.Form
'
...
Dim OgrBilgi As New ogr.Bilgi
End Class
Geliştirme Ortamõnõ Tanõmak
17
Proje Özelliklerini Ayarlamak
Projenin genel davranõşlarõnõ ve konfigürasyon özelliklerini değiştirmek için
Property Page penceresi kullanõlõr.
Proje özelliklerini değiştirmek için aşağõdaki adõmlarõ takip edin:
1. Proje ismini sağ tõklayõn.
2. Açõlan menüden Properties komutunu verin.
3. Açõlan Property Page penceresi üzerinde Common Properties (Genel
Özellikler) ve Configuration Properties (Konfigürasyon Özellikleri)
sekmelerinden herhangi birini seçin.
4. Genel Özellikler, projenin genel davranõşlarõnõ değiştirmek için kullanõlõr.
5. Konfigürasyon Özellikleri, hata ayõklama ve derleme seçeneklerinin değiştirilmesi için kullanõlõr.
6. Proje özelliğini değiştirdikten sonra OK düğmesini tõklayõn.
En çok kullanõlan proje özellikleri şunlardõr:
18
Modül 1:
! Assembly Name: Derlenen uygulamanõn .exe veya .dll uzantõlõ çõktõ
dosyasõnõn adõnõ belirler.
! Root Namespace: Kök isim alanõnõ belirler. Varsayõlan durumda projenin ismi gelir.
! Project Output Type: Derlenen uygulamanõn hangi tipte assembly
oluşturacağõnõ belirler. Bu tipler Windows, konsol uygulamalarõ ya da sõnõf kütüphaneleri (.dll) olabilir.
! Startup Object: Uygulamanõn hangi formdan veya modülden çalõşmaya başlayacağõnõ belirtilir.
Geliştirme Ortamõnõ Tanõmak
19
Konu 2 : Proje Bileşenlerini Tanõmak
20
Modül 1:
Solution Explorer Kullanmak
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õ projeye 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 Explorer komutunu verin.
Geliştirme Ortamõnõ Tanõmak
21
Object Browser Kullanmak
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 Components seçeneği ile birlikte varsayõlan olarak görünür. Bu seçenek ile projeye dahil 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 Kullanmak
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 makine 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
Dinamik Yardõm Almak
Visual Studio .NET, içinde çok fazla konuyu barõndõrdõğõ için tümüne hakim olmak neredeyse imkansõzdõr. Bu nedenle yazõlõm geliştiricilerin işini kolaylaştõrmak 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 verin.
24
Modül 1:
Görev Listesini Kullanmak
Görev Listesi, aktif proje içine görev eklemek için kullanõlõr. Bu görevler uygulama gelişiminin takip edilmesini sağlar. Görev Listesi içine eklenen tüm görevler ö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
Konu 3: Uygulamalarda Hata
Ayõklama
Uygulamalarõn geliştirmesi sõrasõnda birçok hata ile karşõlaşõlõr. Bu hatalarõn
çoğu çalõşma zamanõnda ortaya çõktõğõ için, kodun yazõlmasõ sõrasõnda hatanõn
kaynağõnõn anlaşõlmasõ zordur. Hata üreten kod satõrlarõnõ ve hatalarõn nedenini
anlamak için Visual Studio Debug (hata ayõklama) aracõ kullanõlõr.
Visual Studio Debug aracõ;
! Kodlar arasõna BreakPoint konarak, çalõşmanõn istenen satõrda durmasõnõ,
! Kodlar arasõnda ilerlerken Debug panelleri ile değişkenlerin değerlerinin
gözlenmesini,
! Command paneli ile çalõşma anõnda komut çalõştõrõlmasõnõ, değişkenlerin değerlerinin değiştirilmesini sağlar.
26
Modül 1:
BreakPoint
BreakPoint kullanõmõ, uygulamanõn çalõşmasõnõn istenen kod satõrõnda
durdurulmasõnõ sağlar. Çalõşma, bir şartõn gerçekleştiği durumda da
durdurulabilir. Örneğin bir değişkenin, belli bir değeri aldõğõ kod satõrõnda
uygulamanõn durmasõ istenebilir.
İstenen bir kod satõrõna BreakPoint koymak için, kod sayfasõnõn sol tarafõnda
bulunan panel tõklanõr ya da F9 tuşuna basõlõr.
Belirtilen bir şart gerçekleştikten sonra çalõşmanõn durmasõ isteniyorsa,
BreakPoint sağ tõklanõp BreakPoint Properties komutu verilmelidir. Çõkan
pencerede Condition düğmesi tõklanarak BreakPoint Condition penceresi açõlõr.
Bu pencerede bir değişkenin istenen bir değeri aldõktan sonra çalõşmanõn durmasõ belirtilir (Resim 1.1).
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
Çalõşma durdurulduktan sonra, değişkenlerin o andaki durumlarõ Debug panelleri ile gözlemlenir. Bu paneller ancak ata ayõklama sõrasõnda kullanõlabilir. Debug panelleri, Debug menüsü altõnda Windows menüsünden seçilebilir.
! Autos: Çalõşmakta olan satõrla, bir önceki ve bir sonraki arasõnda kalan
değişkenleri listeler.
! Locals: Çalõşõlan kapsam içindeki tüm değişkenleri listeler. Bu kapsam
bir modül, yordam veya döngü olabilir.
! Watch: Değeri incelenmek istenen değişken veya özellikler, bu panele
yazõlarak eklenir.
Çalõşma durdurulduktan sonra kodlar arasõnda ilerlemek gerekir. Kodlar arasõnda ilerlemenin, yordamlarõn içine girilmesi, üzerinden atlanmasõ gibi birçok
yol vardõr.
1. Step Into: Çalõştõrõlan kod eğer bir yordam veya fonksiyon ise bu yordam veya fonksiyonun içine girilir ve hata ayõklamaya devam edilir.
2. Step Over: Bir yordam veya fonksiyon içine girilmeden ilerlenir.
3. Step Out: Bir yordam veya fonksiyon içinde ilerleniyorsa, buradan
çõkõlarak yordam veya fonksiyonun çağõrõldõğõ yere dönülür.
4. Continue: Bir sonraki BreakPoint satõrõna gidilir. Eğer başka bir
BreakPoint konmamõşsa, uygulama normal çalõşmasõna devam eder.
28
Modül 1:
Command Panelini Kullanmak
Command paneli iki farklõ modda kullanõlõr.
! Immediate: Bu modda, değişken değerleri değiştirebilir, .NET
Framework sõnõflarõndaki metotlar veya kullanõcõ tanõmlõ metotlar
çalõştõrõlabilir. Immediate moduna geçmek için immed komutu kullanõlõr.
Immediate modunda bir değişkenin değeri ? ile öğrenilebilir ve yeni değer atanabilir.
?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
Konu 4: Uygulamanõn Derlenmesi
29
30
Modül 1:
Derleme Seçeneklerine Bakõş
Visual Basic .NET ile geliştirilen uygulamalar çalõştõrõlmadan önce derleme işleminden 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
Modül Özeti
1. Assembly nedir?
2. İsim Alanõ nedir?
3. Object Browser niçin kullanõlõr?
4. Server Explorer ne işe yarar?
5. Çalõşma zamanõ hatalarõnõ yakalamak için neler yapõlõr?
6. Proje nasõl derlenir?
31
32
Modül 1:
LAB 1: Geliştirme Ortamõnõ Tanõmak
Uygulama 1: Windows Uygulamasõ Oluşturmak
Bu uygulamada Windows Application kullanarak Çağrõ Merkezi (Call Center)
isminde bir uygulamasõ oluşturacağõz.
Çağrõ Merkezi Uygulamasõnõ Oluşturmak
1. Visual Studio .NET’i kullanarak Çağrõ Merkezi isminde uygulama oluşturmak.
! File menüsündeki New alt menüsünü işaretleyin ve Project komutunu tõklayõn.
! New Project iletişim kutusunda Windows Application şablonunu seçin.
! Name metin kutusuna CagriMerkezi yazõn.
! Location metin kutusuna C:\Proje yazõn ve OK düğmesini tõklayõn.
2. Uygulamanõn Assembly Name özelliğini Cagri olarak değiştirmek.
! Proje ismini sağ tõklayõn.
! Açõlan menüden Properties komutunu verin.
! Açõlan penceredeki Common Properties (Genel Özellikler) klasörünü seçin.
! Common Properties klasörü altõndaki General sekmesinde Assembly Name metin kutusuna Cagri yazõn ve OK düğmesini tõklayõn.
Geliştirme Ortamõnõ Tanõmak
33
Uygulama 2: Object Browser Kullanmak
Bu uygulamada Object Browser’õ kullanarak System.Data kütüphanesini
inceleyeceğiz.
System.Data Kütüphanesini Açmak
1. View menüsü içinden Object Browser alt menüsünü seçin.
2. Object paneli içindeki System.Data kütüphanesini genişletin.
3. System.Data kütüphanesi içindeki System.Data.OleDb isim alanõnõ
genişletin.
4. System.Data.OleDb isim alanõnõ içindeki OleDbConnection,
OleDbCommand, OleDbDataReader, OleDbDataAdapter sõnõflarõnõ
inceleyin.
Uygulama 3: Debug Aracõnõ Kullanma
Bu uygulamada çağrõ merkezi veritabanõna bağlantõ açan kodlar Debug
kullanarak incelenir.
Kodlarõn Yazõlmasõ
1. Form1 nesnesinin kod sayfasõna geçin ve OleDbConnection oluşturan
bir fonksiyon yazõn.
Private Function ConnectionOlustur(ByVal connectionString As
String) As OleDb.OleDbConnection
Return New OleDb.OleDbConnection(connectionString)
End Function
2. Formu çift tõklayarak Load olayõna gelin. Load olayõnda, veritabanõna
bağlantõ açan kodlarõ yazõn. Bu veritabanõ C:\Proje\CagriMerkezi
klasörü altõnda bulunacaktõr.
Dim con As OleDb.OleDbConnection
' Connection oluşturan fonksiyon çağrõlõr
con = ConnectionOlustur( _
"data source= 'C:\Proje\CagriMerkezi\CagriMerkezi.mdb';
Provider = Microsoft.Jet.OleDB.4.0")
con.Open()
' Veritabanõ işlemleri ilerleyen modüllerde
' anlatõlacaktõr. Bu kõsmõ boş bõrakõn.
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)
nesnesinin State özelliğini öğrenin.
yazarak
Connection
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õşmanõn durmasõ ayarlanõr.
11. OK düğmesini tõklayõn ve projeyi çalõştõrõn. Çalõşmanõn belirtilen noktada 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ş
Bu modülde verilerin hangi ortamlarda depolandõğõnõ öğreneceksiniz. Ayrõca
depolanan veriye erişmek için kullanõlan yöntemleri öğrenecek ve ADO.NET
teknolojisi hakkõnda bilgi sahibi olacaksõnõz.
Bu modülün sonunda;
! Veri depolama yöntemlerini öğrenecek,
! Bağlantõlõ ve bağlantõsõz veri ortamlarõnõ öğrenecek,
! Veri erişim yöntemlerini öğrenecek,
! ADO.NET nesne modelini öğrenecek,
! ADO.NET nesne modelinde veri sağlayõcõlarõnõ seçebileceksiniz.
38
Modül 2:
Konu 1: Veri Merkezli Uygulamalar
Geliştirme Ortamõnõ Tanõmak
39
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üresinin uzamasõna sebep olur. Hatta daha büyük organizasyonlarda işlemlerin yavaş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 benzetebiliriz. 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õ (Connected) Veri Ortamlarõ
Bağlantõlõ veri ortamlarõ, uygulamalarõn veri kaynağõna sürekli bağlõ kaldõğõ ortamlardõ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õ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 ortamlarõ 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 kontrolünü kolaylaştõrõr.
Dezavantajlarõ
! Uygulama ile veri kaynağõ arasõnda gerçekleşen bağlantõyõ koruyabilmek 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
Bağlantõsõz (Disconnected) Veri Ortamlarõ
Bağlantõsõz veri ortamõ, uygulamanõn veri kaynağõna sürekli bağlõ kalmadõğõ
veri ortamõdõr. Uygulama ile veri kaynağõ arasõndaki bağlantõ, veri alõşverişi
yapõlõrken açõlõr ve işlem bittikten sonra kapatõlõr. Bu veri ortamlarõ çevrimdõşõ
çalõşmak için kullanõlõr.
Teknolojinin ilerlemesi ve veri depolayan araçlarõn taşõnabilirliğinin sağlanmasõ
ile tüm dünyada çevrimdõşõ ortamlara duyulan ihtiyaç artmõştõr. Laptop,
Notebook ve Pocket PC gibi araçlarõn yaygõnlaşmasõ ile günümüzde
uygulamanõn veri kaynağõna bağlõ olmadõğõ durumlarda bile veri girişi yapõlabilir.
Uygulamada sadece çevrimiçi veya çevrimdõşõ ortamlardan birini seçmek yeterli olmayabilir. Gelişmiş uygulamalarda her iki ortamõn avantajlarõnõ birleştiren
bir çözüm tercih edilebilir.
Avantajlarõ
! Laptop, Notebook ve Pocket PC gibi araçlarla girilen veriler, istenilen
zamanda veri ortamlarõna aktarõlabilir.
! Çevrimdõşõ ortamlar sayesinde, verilerin depolandõğõ uygulama üzerindeki 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:
! Bağlantõsõz veri ortamlarõ içinde farklõ kullanõcõlar eşzamanlõ güncelleme
işlemleri gerçekleştirebilir. Bu durumda oluşacak veri çakõşmalarõnõn
engellenmesi gerekir.
Örneğin bir toptancõ firmasõnda, firma çalõşanlarõ farklõ konumdaki bayilerinin
tüm siparişlerini bir el bilgisayarõna kaydedebilir. Bu veriler el bilgisayarõnda geçici bir süre için depolanõr. Bu süre çalõşanlarõn sahada kaldõğõ süredir. Süre sonunda veriler sunucu bilgisayara aktarõlõr.
Geliştirme Ortamõnõ Tanõmak
43
Veri Erişim Yöntemleri
İ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 aranmõş, 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 modeller 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:
! İstemci Katmanõ (Client Tier): Sunum ya da kullanõcõ servis katmanõ
olarak da bilinir. Bu katman kullanõcõ arayüzünü içerir.
! İş Katmanõ (Business Tier): Bu katman, uygulamanõn veri kaynağõ ile
etkileşen bölümüdür.
! Veri Katmanõ (Data Tier): Veriyi içeren katmandõr.
! Birlikte Çalõşabilirlik Katmanõ (Interoperability Tier): Platform ve dilden bağõmsõz, her tür veriye etkileşim sağlayan katmandõr. Bu katmana
herhangi bir işletim sistemi üzerinde bulundurulabilen XML Web
Servislerini örnek verebiliriz.
Geliştirme Ortamõnõ Tanõmak
45
Uygulamalar katmanlara bölünerek ölçeklenebilirlikleri artõrõlõr.
Katman sayõsõ arttõkça, veri erişim modelinin ölçeklendirebilirliği ve karmaşõklõğõ da artar.
46
Konu 2: ADO.NET’e Giriş
Modül 2:
Geliştirme Ortamõnõ Tanõmak
47
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 teknolojisinin 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 modeline 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-katmanlõ (N-tier) uygulama yapõsõ kullanõlarak, uygulamalarõn katmanlar
üzerinden dağõtõlmasõ sağlanõr. Böylece uygulamalarõn ölçeklenirliği artar.
! 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:
ADO.NET Nesne Modeli
ADO.NET nesne modeli iki ana bölümden oluşur.
! DataSet sõnõflarõ
! .NET veri sağlayõcõ sõnõflarõ
DataSet sõnõflarõ, çevrimdõşõ ortamlar için veri depolama ve yönetme işlemlerini
sağlar. DataSet sõnõflarõ veri kaynağõndan bağõmsõz her tür uygulama ve
veritabanõ için kullanõlabilir. Özellikle İlişkisel Veritabanõ, XML ve XML Web Servisleri üzerinden veri çekmek için kullanõlõr.
.NET veri sağlayõcõ sõnõflarõ, farklõ türdeki veritabanlarõna bağlanmak için
kullanõlõr. Bu sõnõflar sayesinde istenilen türdeki veri kaynağõna kolayca bağlantõ
kurulabilir, veri çekilebilir ve gerekli güncelleme işlemleri yapõlabilir. ADO.NET
nesne modeli, aşağõdaki veri sağlayõcõ sõnõflarõnõ içerir:
! SQL Server .NET veri sağlayõcõsõ
! OLE DB .NET veri sağlayõcõsõ
! Diğer .NET veri sağlayõcõlarõ
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
ADO.NET Veri Sağlayõcõlarõ
.NET veri sağlayõcõlarõ, ADO.NET mimarisinin veritabanõ ile uygulama (Windows, Web) veya XML Web Servisi arasõnda bağlantõ kurmak için her tür alt
yapõyõ barõndõran çekirdek bileşendir. Tüm veri sağlayõcõlarõ, System.Data isim
alanõ içinde tanõmlanmõştõr.
.NET Framework 1.0 sürümü ile birlikte SQL Server .NET ve OLE DB .NET
veri sağlayõcõ sõnõflarõ gelmiştir.
! SQL Server .NET: SQL Server 7.0 ve SQL Server 2000
veritabanlarõna hõzlõ bağlantõ sağlar. SQL Server bağlantõ nesneleri
System.Data.SqlClient isim alanõnda bulunur.
! OLE DB .NET: SQL Server 6.5 ve daha öncesi sürümlerine, Oracle,
Sybase, DB2/400 ve Microsoft Access veritabanlarõna bağlantõ kurmayõ
sağlar. OLE DB bağlantõ nesneleri System.Data.OleDb isim alanõnda
bulunur.
.NET Framework 1.1 sürümü ile birlikte SQL Server .NET ve OLE DB .NET
veri sağlayõcõlarõna Oracle .NET ve ODBC .NET veri sağlayõcõlarõ da eklenmiştir.
! ORACLE .NET: Oracle veritabanlarõna bağlantõ için tasarlanmõş veri
sağlayõcõsõdõr. Oracle bağlantõ nesneleri System.Data.OracleClient
isim alanõnda bulunur.
System.Data.OracleClient isim alanõnõ kullanmak için, projeye
System.Data.OracleClient.dll referansõ eklenmelidir.
50
Modül 2:
! ODBC .NET: Diğer veritabanlarõnõ destekleyen genel bir veri sağlayõcõdõr. ODBC bağlantõ nesneleri System.Data.ODBC isim alanõnda bulunur.
Öğrenim ve kullanõm kolaylõğõ olmasõ amacõyla ADO.NET veri sağlayõcõlarõn
isimlendirilmesinde genelleştirmeye gidilmiştir. SQL Server .NET veri
sağlayõcõlarõnõn sõnõf isimleri Sql ön eki ile, OLE DB .NET veri sağlayõcõlarõnõn
sõnõf isimleri ise OleDb ön eki ile başlar. Bu genellemeye SqlConnection ve
OleDbConnection örnekleri verilebilir.
Geliştirme Ortamõnõ Tanõmak
Her veri sağlayõcõsõ içinde birçok bağlantõ nesnesi bulunur:
! Connection
! Command
! DataReader
! DataAdapter
51
52
Modül 2:
! XxxConnection: Veri kaynağõna bağlantõ için kullanõlan sõnõftõr.
! XxxCommand: Veri kaynağõ üzerinde sorgu çalõştõrmak için kullanõlõr.
Veri kaynağõndan dönen kayõtlar XxxDataReader veya DataSet
kullanõlarak veri bağlantõlõ kontrollere aktarõlõr.
! XxxDataReader: Çevrimiçi bağlantõlarda sadece veri okumak için
kullanõlan sõnõftõr.
! XxxDataAdapter: Çevrimdõşõ bağlantõlarda kullanõlan veri işleme
nesnesidir.
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
Modül Özeti
1. Veri depolama yöntemleri nelerdir?
2. Bağlantõlõ ve bağlantõsõz veri ortamlarõ nelerdir?
3. Veri erişim yöntemleri nelerdir?
4. ADO.NET veri sağlayõcõlarõ nelerdir?
53
54
Modül 2:
Lab 2: Veri Merkezli Uygulamalar ve
ADO.NET’e Giriş
Uygulama 1: Yeni bağlantõ oluşturmak
Bu uygulamada Server Explorer’õ kullanarak Çağrõ Merkezi uygulamasõ için
yeni bir bağlantõ oluşturulur.
Çağrõ Merkezi Uygulamasõ İçin Yeni Bağlantõ
Oluşturmak
RESİM 2.1.
1. Visual Studio .Net’i kullanarak Çağrõ Merkezi uygulamasõnõ açmak.
! File menüsündeki Open alt menüsü içinden Project komutunu tõklayõn.
Geliştirme Ortamõnõ Tanõmak
55
! Look in açõlan kutusundan C:\Proje\ CagriMerkezi klasörünü
seçin.
! Açõlan Open Project penceresinden CagriMerkezi.sln dosyasõnõ
seçerek Open düğmesini tõklayõn.
2. Uygulamaya CagriMerkezi veritabanõnõ eklemek.
! Proje ismi sağ tõklayõn.
! Açõlan menüden Add alt menüsündeki Add Existing Item komutunu
verin.
! Açõlan pencere üzerindeki Look in açõlan kutusundan CD
Sürücüsü\Veritabanõ klasörünü seçin.
! Açõlan Add Existing Item penceresinden CagriMerkezi.mdb
veritabanõnõ seçerek Open düğmesini tõklayõn.
3. CagriMerkezi uygulamasõ için yeni bağlantõ oluşturmak.
! Server Explorer penceresi üzerinde sağ tõklayõn. Açõlan menüden
Add Connection komutunu verin.
! Açõlan Data Link Properties penceresinin Provider sekmesini tõklayõn.
! Provider sekmesinden Microsoft.Jet.OLEDB.4.0 Provider seçeneğini işaretleyerek Next düğmesini tõklayõn.
RESİM 2.2.
! Açõlan Connection sekmesinin görüntüsünü resimdeki gibi
düzenleyerek OK düğmesini tõklayõn.
56
Modül 2:
Modül 3: Veri Kaynaklarõna
Bağlanmak
Veriyi yöneten uygulamalar, bu verilerin bulunduğu kaynağa bağlanma ihtiyacõ
duyar. Visual Basic .NET ile veri kaynağõna bağlanmak için, kaynağõn tipine ve
yapõsõna göre farklõ nesneler ve farklõ veri sağlayõcõlarõ kullanõlõr.
Bu modülün sonunda;
! Farklõ veritabanlarõna göre veri sağlayõcõlarõ seçebilecek,
! Bağlantõ cümlesi oluşturabilecek,
! Farklõ veritabanlarõ için Connection nesnelerini yönetebileceksiniz.
60
Konu 1: Veri Sağlayõcõ Seçmek
Modül 3:
Veri Kaynaklarõna Bağlanmak
61
Veri Sağlayõcõ Nedir?
ADO.NET mimarisi, uygulama ile veritabanõ arasõnda bağlantõ kurmak ve kurulan bağlantõ üzerinden kayõtlarõ almak, değiştirmek ve silmek için veri
sağlayõcõlarõnõ kullanõr. Farklõ veritabanlarõ için farklõ veri sağlayõcõlarõ kullanõlõr.
Uygun veri sağlayõcõ seçiminde en önemli kriter “Hangi sağlayõcõ en iyi performansõ verir?” sorusunun cevabõdõr. Çünkü SQL Server, Oracle, Access gibi
veritabanlarõna farklõ veri sağlayõcõlarõ ile erişilebilir.
Microsoft .NET Framework, veritabanlarõ ile bağlantõ kurmak için farklõ veri
sağlayõcõlarõnõ destekler.
! SQL Server .NET
! OLEDB .NET
! ODBC .NET
62
Modül 3:
Veri Sağlayõcõ Sõnõflarõ
.NET Framework içindeki veri sağlayõcõlarõ, System.Data.dll içindeki
System.Data isim alanõnda yer alõr. Tablo 3.1’de hangi sağlayõcõ isim alanõ ile
hangi veritabanõna bağlanõlabileceği gösterilmektedir.
63
Veri Kaynaklarõna Bağlanmak
TABLO 3.1: Veritabanlarõ ve Veri Sağlayõcõ İsim Alanlarõ
Veritabanõ
Veri Sağlayõcõsõ İsim Alanõ
Sql Server 7.0 ve sonraki sürümler
System.Data.SqlClient
Sql Server 6.5 ve önceki sürümler
System.Data.OleDb
Microsoft Access veritabanõ
System.Data.OleDb
Oracle Server
System.Data.OracleClient
Diğer veritabanlarõ(Oracle, Sybase,DB2/400)
System.Data.OleDb
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.
Tablo 3.2: Veri Sağlayõcõ Sõnõf İsimleri
Sõnõf
Açõklama
XXXConnection
Bağlantõ açmak ve kapatmak için kullanõlan sõnõftõr.
XXXCommand
Veritabanõ üzerinde Stored Procedure (Saklõ Yordamlar) veya
SQL cümleleri çalõştõrmak için kullanõlan sõnõftõr.
XXXDataReader
Veritabanõndan sadece okunur ve ileri hareketli kayõtlar çekmek için kullanõlan sõnõftõr.
XXXDataAdapter
Veritabanõndan çekilen verileri DataSet içine veya
DataSet’e çevrimdõşõ eklenmiş verileri veritabanõna aktarmak için kullanõlan sõnõftõr.
64
Modül 3:
System.Data.SqlClient isim alanõ içinden çevrimiçi bağlantõlar geliştirmek
için SqlConnection, SqlCommand, SqlDataReader sõnõflarõ kullanõlõr.
! SqlConnection; MS SQL Server üzerinde bağlantõ açmak ve kapatmak için kullanõlan sõnõftõr.
! SqlCommand; MS SQL Server üzerinde Stored Procedure (Saklõ Yordamlar) veya SQL cümleleri çalõştõrmak için kullanõlan sõnõftõr.
! SqlDataReader; MS SQL Server üzerinde SqlCommand ile çalõştõrõlan
SELECT sorgularõnõn sonuçlarõnõ geri döndürmek için kullanõlan sõnõftõr.
System.Data.SqlClient isim alanõ içinden çevrimdõşõ bağlantõlar geliştirmek
için SqlConnection, SqlDataAdapter, DataSet sõnõflarõ kullanõlõr.
! SqlConnection; MS SQL Server üzerinde bağlantõ açmak ve kapatmak için kullanõlan sõnõftõr.
! SqlDataAdapter; MS SQL Server’dan çekilen verileri DataSet içine ve
DataSet‘e çevrimdõşõ eklenmiş verileri MS SQL Server’a aktarmak için
kullanõlan sõnõftõr.
! DataSet; SQLDataAdapter nesnesinden gelen kayõtlarõ çevrimdõşõ
depolamak ve yönetmek için kullanõlan sõnõftõr. DataSet tüm veri sağlayõcõ sõnõflar için ortaktõr.
DataSet, System.Data isim alanõ içinde yer alõr.
System.Data.OleDb isim alanõ içinden çevrimiçi bağlantõlar geliştirmek için
OleDbConnection, OleDbCommand, OleDbDataReader sõnõflarõ kullanõlõr.
! OleDbConnection; Access veya diğer veritabanlarõ üzerinde bağlantõ
açmak ve kapatmak için kullanõlan sõnõftõr.
Veri Kaynaklarõna Bağlanmak
65
! OleDbCommand; Access veya diğer veritabanlarõ üzerinde Stored
Procedure (Saklõ Yordamlar) veya SQL cümleleri çalõştõrmak için
kullanõlan sõnõftõr.
! OleDbDataReader; Access veya diğer veritabanlarõ üzerinde
OleDbCommand ile çalõştõrõlan SELECT sorgularõn sonuçlarõnõ geri döndürmek için kullanõlan sõnõftõr.
System.Data.OleDb isim alanõ içinden çevrimdõşõ bağlantõlar geliştirmek için
OleDbConnection ve OleDbDataAdapter sõnõflarõ kullanõlõr.
! OleDbConnection; Access veya diğer veritabanlarõ üzerinde bağlantõ
açmak ve kapatmak için kullanõlan sõnõftõr.
! OleDbDataAdapter; Access veya diğer veritabanlarõndan çekilen verileri DataSet içine ve DataSet‘e çevrimdõşõ eklenmiş verileri ilgili
veritabanõna aktarmak için kullanõlan sõnõftõr.
66
Konu 2: Bağlantõ Oluşturmak
Modül 3:
67
Veri Kaynaklarõna Bağlanmak
Bağlantõ Cümlesi (Connection String)
Oluşturmak
Bağlantõ cümlesi, veri kaynağõna bağlanmak için gerekli bilgileri tutar. Bu
cümle, veri kaynağõna bağlantõ kurmak için gerekli bağlantõ parametrelerin
birleşiminden oluşur. Bu parametrelerin listesi Tablo 3.3’te gösterilmiştir.
Tablo 3.3: Bağlantõ Cümlesinin Parametreleri
Parametre
Provider
Tanõmõ
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
Connect Timeout
Veritabanõ bağlantõ için beklenmesi gereken maksimum saniye sayõsõdõr. Varsayõlan değer 15 saniyedir.
Initial Catalog
Veritabanõ adõ
Data Source
SQL Server adõ, veya MS Access veritabanõ için dosya
adõ
Password (pwd)
SQL Server login (giriş) parolasõ
User Id (uid)
SQL Server login (giriş) adõ
Integrated Security
veya Trusted
Connection
SQL sunucusuna Windows hesabõ ile bağlantõ yapõla-
Persist Security Info
Varsayõlan değeri False olur. Bu durumda güvenlik
cağõnõ belirtir. True, False veya SSPI girilebilir.
SSPI, True ile eş anlamlõdõr ve bu durumda Windows
hesabõ kullanõlõr.
için hassas bilgileri geri döndürmez. True olduğunda
ise güvenlik risk taşõmaya başlar.
68
Modül 3:
Tablo 3.3: Bağlantõ Cümlesinin Parametreleri
Parametre
Tanõmõ
WorkstationID (wid)
Workstation veya client (istemci) adõnõ belirtir.
Packet Size
Client (istemci) - server (sunucu) arasõ veri transferinde kullanõlan paketlerin boyutunu belirtir.
Mode
Veritabanõnõ Read-only (Sadece okunur) ya da Write
(Yazõlabilir) modunu belirtir. SQL Server bağlantõlarõnda kullanõlmaz.
Provider parametresinin Access, SQL Server ve Oracle veritabanlarõna göre
alacağõ değerler Tablo 3.4’te gösterilmiştir
Tablo 3.4: Bağlantõ cümlesinin parametreleri
Tür
Açõklama
SQLOLEDB
SQL Server için Microsoft OLE DB Provider
MSDAORA
ORACLE için Microsoft OLE DB Provider
Microsoft.Jet.OLEDB.4.0
Microsoft Jet için OLE DB Provider
Veri Kaynaklarõna Bağlanmak
69
Bağlantõ Cümlesini (Connection String)
Kullanmak
Yeni bağlantõ oluşturmak ve yönetmek için OleDbConnection, SqlConnection
gibi XXXConnection sõnõflarõ kullanõlõr. Veri kaynağõna bağlanmak için oluşturulan bağlantõ cümlesi, XXXConnection sõnõfõnõn ConnectionString özelliğine
atanõr.
Örnekte SQL Server veritabanõ için bağlantõ cümlesi oluşturulmuştur. London
isimli sunucuda bulunan Northwind veritabanõna, sa kullanõcõ ismi ve 2389
parolasõ ile bağlanõlõyor. Eğer veritabanõ sunucusundan 60 saniye içinde cevap
alõnamazsa bağlantõ iptal ediliyor.
Dim cnNorthwind as New _
System.Data.SqlClient.SqlConnection()
cnNorthwind.ConnectionString = _
"User ID=sa;" & _
"Password=2389;" & _
"Initial Catalog=Northwind;" & _
"Data Source=London;" & _
"Connection TimeOut=60;"
Örnekte Microsoft Access veritabanõ için bağlantõ cümlesi oluşturulmuştur.
OleDb bağlantõsõ yapõldõğõ için Provider özelliğinin Microsoft.Jet.
OleDB.4.0 olarak belirtilmesi gerekir. Bağlantõnõn yapõlacağõ Northwind
veritabanõnõn local makinede C:\Samples dizini altõnda bulunduğu belirtiliyor.
70
Modül 3:
Dim cnNorthwind as New _
System.Data.OleDb.OleDbConnection()
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.
Dim cnNorthwind as New _
System.Data.OleDb.OleDbConnection()
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
Bağlantõ Cümlesi(Connection String) Örnekleri
71
72
Modül 3:
Ms Access ile OLEDB Bağlantõ Cümleleri
Tablo 3.5’te OLEDB ile Access’e bağlanmak için gerekli, örnek bağlantõ cümleleri gösterilmektedir.
Tablo 3.5: Ms Access ile OLEDB Bağlantõ Cümleleri
Access’e bağlantõ
"Provider=Microsoft.Jet.OLEDB.4.0; Data
Source=DB_Name.mdb; "
Access’e çalõşma grubu dosyasõ üzerinden Bağlantõ
"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=Db
_Name.mdb; Jet OLEDB:System Database=Db
_Name.mdw"
Access’e parola korumalõ
bağlantõ
"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=Db
_Name.mdb; Jet OLEDB:Database Password=sifreniz"
Network’teki Access’e bağlantõ
"Provider=Microsoft.Jet.OLEDB.4.0; Data
Source=\\Server_Name\Share_Name\Share_Path\Db
_Name.mdb"
Remote Server(Uzak Server)
üzerindeki bir Access’e bağlantõ
"Provider=MS Remote; Remote Server=http://YourRemote-Server-IP; Remote Provider=Microsoft.Jet.OLEDB.4.0; Data
Source=Db_Name.mdb"
73
Veri Kaynaklarõna Bağlanmak
SQL Server ile ODBC Bağlantõ Cümleleri
Tablo 3.6’da ODBC ile SQL Server’a bağlanmak için gerekli örnek bağlantõ
cümleleri gösterilmektedir.
Tablo 3.6: SQL Server ile ODBC Bağlantõ Cümleleri
SQL Server sunucusuna
SQL Authentication ile
bağlanmak
"Driver={SQL Server};Server=
Server_Name;Database=Db_Name;Uid=Username;Pwd=
sifreniz;"
SQL Server sunucusuna
Windows Authentication
ile bağlanmak
"Driver={SQL Server}; Server= Server_Name; Database=DB _Name;Trusted_Connection=yes;"
74
Modül 3:
SQL Server ile OLEDB Bağlantõ Cümleleri
Tablo 3.7’de OLEDB ile SQL Server’a bağlanmak için gerekli örnek bağlantõ
cümleleri gösterilmektedir.
Tablo 3.7: SQL Server ile OLEDB Bağlantõ Cümleleri
SQL Server sunucusuna SQL Authentication ile bağlanmak
"Provider=SQLOLEDB;Data Source=
Server_Name;Initial Catalog=Db_Name;User
Id= Username;Password=sifreniz;"
SQL Server sunucusuna Windows
Authentication ile bağlanmak
"Provider=SQLOLEDB;Data Source=
Server_Name;Initial Catalog=DB_Name;Integrated Security=SSPI;"
75
Veri Kaynaklarõna Bağlanmak
SQL Server ile SQL Server Bağlantõ Cümleleri
Tablo 3.8’de SQLClient ile SQL Server’a bağlanmak için gerekli örnek bağlantõ
cümleleri gösterilmektedir.
Tablo 3.8: SQL Server ile SQL Server Bağlantõ Cümleleri
SQL Server sunucusuna SQL
Authentication ile bağlanmak
"Data Source=_Server_Name;Initial Catalog=Db
_Name;User Id= Username;Password=sifreniz;"
SQL Server sunucusuna SQL
Authentication ile bağlanmak
"Server= Server_Name;Database=Db_Name;User ID=
Username;Password=sifreniz;Trusted_Connection
=False”
SQL Server sunucusuna Windows Authentication ile bağlanmak
"Data Source= Server_Name;Initial Catalog=Db_Name;Integrated Security=SSPI;”
SQL Server sunucusuna SQL
Authentication ile bağlanmak
"Server=Server_Name;Database=Db_Name;
Trusted_Connection=True;"
Bağlantõ cümle parametrelerinin benzer eşdeğerleri vardõr. Bu eşdeğerler hem OLEDB
hem de SQLClient veri sağlayõcõlarda kullanõlabilir. Tablo 3.9’da bu eşdeğerler gösterilmektedir.
Tablo 2.7: OleDb ve Sql Server Parametre Eşdeğerleri
OLEDB ve SqlServer Parametreleri
Eşdeğerleri
Data Source
Server
User ID
UID
Password
PWD
Initial Catalog
Database
76
Konu 3: Bağlantõ Yönetimi
Modül 3:
Veri Kaynaklarõna Bağlanmak
77
Bağlantõyõ Açmak ve Kapatmak
Bağlantõ cümlesini oluşturduktan sonra, bağlantõyõ açmak ve kapatmak için
Connection sõnõfõnõn iki önemli metodu kullanõlõr.
! 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 Collector” 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 neden olur.
Bağlantõ nesnesinin Dispose metodu da bağlantõyõ kapatmak için kullanõlabilir.
Örnekte Northwind.mdb isimli Access veritabanõ üzerinde, Open ve Close metotlarõnõn kullanõmõ gösterilmektedir.
78
Modül 3:
cnNorthwind.ConnectionString = _
"Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:\Samples\Northwind.mdb;"
‘Bağlantõyõ açmak
cnNorthwind.Open()
‘Veritabanõ işlemleri bu arada gerçekleştirillir.
‘Bağlantõyõ kapatmak
cnNorthwind.Close()
Open metodu ile veri kaynağõ açõlõrken, çeşitli çalõşma zamanõ hatalarõndan dolayõ 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şlemleri 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.
Dim cnNorthwind As System.Data.SqlClient.SqlConnection
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
Catch XcpInvOp As InvalidOperationException
' İlk önce bu tipte hata yakalanõr.
MessageBox.Show("Önce veritabanõ bağlantõsõnõ kapatõn")
Catch Xcp As Exception
' Diğer hatadan farklõ bir tipte hata burda yakalanõr.
MessageBox.Show(Xcp.ToString())
Finally
cnNorthwind.Close()
cnNorthwind.Dispose()
End Try
80
Modül 3:
Bağlantõ Durumlarõnõ Kontrol Etmek
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.
Tablo 3.10: Connection Nesnesinin State Özelliğinin Değerleri
İsim
Açõklama
Değeri
Broken
Yalnõzca, açõk bir bağlantõnõn kopup tekrar bağlanõldõğõ durum
16
Closed
Bağlantõ kapalõ
0
Connecting
Veri kaynağõna bağlanma aşamasõnda
2
Executing
Bağlantõ üzerinden bir komutu çalõştõrõlõyor
4
Fetching
Bağlantõ üzerinden veri çekiliyor
8
Open
Bağlantõ açõk
1
Private Sub ConnectionAc(ByVal con As OleDb.OleDbConnection)
' Connection, sadece kapalõ ise açõlacak
If con.State = ConnectionState.Closed Then
con.Open()
End If
End Sub
Bağlantõ nesnelerinin durumu değiştiği zaman StateChange olayõ tetiklenir. Bu
olay ile bağlantõnõn hangi durumlarda açõlõp kapandõğõ öğrenilebilir.
81
Veri Kaynaklarõna Bağlanmak
Bağlantõnõn eski ve yeni durumlarõ StateChangeEventArgs parametresi ile
öğrenilir. Tablo 3.11’de bu parametrenin CurrentState ve OriginalState
özellikleri görülmektedir.
Tablo 3.11: StateChangeEventArgs Parametresinin Özellikleri
Özellik
Açõklama
CurrentState
Bağlantõnõn yeni durumu hakkõnda bilgi verir.
OriginalState
Bağlantõnõn değişmeden önceki durumu hakkõnda bilgi verir.
Public Sub ConnectionOlustur()
Dim conn As New System.Data.OleDb.OleDbConnection
' Bağlantõ ayarlarõ yapõlõr.
' ...
' Bağlantõnõn StateChange olayõ gerçekleştiği zaman
' DurumRapor yordamõnõn çağõrõlmasõ ayarlanõr
AddHandler conn.StateChange, AddressOf DurumRapor
End Sub
Public Sub DurumRapor(ByVal sender As Object, _
ByVal e As StateChangeEventArgs)
MessageBox.Show("Bağlantõ " & _
e.OriginalState.ToString & " durumundan " & _
e.CurrentState.ToString & " durumu olarak değişti.")
End Sub
82
Modül 3:
Modül Özeti
1. Veri sağlayõcõlar ne işe yarar? SQL Server 6.5 veritabanõna bağlanmak
için hangi veri sağlayõcõnõn kullanõlmasõ gerekir?
2. Connection nesnelerinin kullanõlmasõ için gereken temel özellik
hangisidir?
3. Bağlantõ açõkken tekrar açõlmaya çalõşõldõğõnda ne olur? Bu durum nasõl
engellenir?
4. Try Catch bloğu ne için kullanõlõr? Finally bloğunda hangi kodlar
yazõlõr?
5. Bağlantõ durumu Connection nesnesinin hangi özelliği ile anlaşõlõr?
Durum değiştiği zaman hangi olay tetiklenir?
83
Veri Kaynaklarõna Bağlanmak
Lab 1: Bağlantõ Oluşturmak
Bu labda, kullanõcõnõ girdiği değerlere göre Connection String oluşturulur. Bu
bağlantõ cümlesi ile yeni bir Connection nesnesi oluşturarak, bağlantõnõn durumu incelenir.
Bu lab tamamlandõktan sonra:
! Farklõ veritabanlarõna göre bağlantõ cümlesi oluşturabilecek,
! Veritabanõna bağlantõ açõp kapayabilecek,
! Bağlantõlarõn State özelliği ile durumunu gözlemleyebileceksiniz.
Kontrollerin Eklenmesi
VeriTabaniBaglantisi isminde yeni bir Windows projesi açõn.
Form üzerine, tablodaki kontrolleri ekleyin belirtilen özelliklerini ayarlayõn.
Kontrol – Kontrol İsmi
Özellik
Değer
TextBox – txtVeriTabani
Text
TextBox – txtSunucu
Text
TextBox – txtKullaniciAdi
Text
TextBox – txtParola
Text
TextBox – txtTimeOut
Text
Label – lblConnectionString
Text
Label – lblConnectionState
Text
Closed
GroupBox
Text
Bağlantõ İşlemleri:
ComboBox – ComboBox1
DropDownStyle
DropDownList
84
Modül 3:
Kontrol – Kontrol İsmi
Özellik
Değer
Button – Button1
Text
Connection String Oluştur
Button – Button2
Text
Connection Oluştur
Button – Button3
Text
Connection Aç
Button – Button4
Text
Connection Kapat
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.
Private ConnectionString As String
Private Provider As String
Private Database As String
Private Server As String
Private KullaniciAdi As String
Private Parola As String
Private TimeOut As String
' Sql veritabanõna bağlanmak için
Private sqlCon As SqlClient.SqlConnection
' Access veritabanõna bağlanmak için
Private oleDbCon As OleDb.OleDbConnection
2. Formun Load anõnda, ComboBox kontrolüne veritabanõ seçeneklerini
ekleyin.
Private Sub Form1_Load(ByVal sender As System.Object, ByVal
e As System.EventArgs) Handles MyBase.Load
ComboBox1.Items.Add("Microsoft Access")
ComboBox1.Items.Add("Microsoft SQL Server 2000")
Veri Kaynaklarõna Bağlanmak
85
ComboBox1.Items.Add("Microsoft SQL Server 6.5")
' Varsayilan olarak Sql Server 2000 seçili olur
ComboBox1.SelectedIndex = 1
End Sub
3. ComboBox kontrolünden veritabanõ seçildiği zaman, Provider ismini
değiştirin. Seçilen veritabanõ Access ise, kullanõcõ adõ, parola, sunucu
ve timeout TextBox kontrollerini pasif duruma getirin.
Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
ComboBox1.SelectedIndexChanged
' Farkli Veritabani seçildigi zaman tetiklenir.
Select Case ComboBox1.SelectedIndex
Case 0
Provider = "Microsoft.Jet.OleDB.4.0"
EnableTextBoxes(False)
Case 1
Provider = ""
EnableTextBoxes(True)
Case 2
Provider = "SQLOLEDB"
EnableTextBoxes(True)
End Select
End Sub
Private Sub EnableTextBoxes(ByVal SQLVeriTabaniSecili As
Boolean)
txtKullaniciAdi.Enabled = SQLVeriTabaniSecili
txtParola.Enabled = SQLVeriTabaniSecili
txtTimeOut.Enabled = SQLVeriTabaniSecili
txtSunucu.Enabled = SQLVeriTabaniSecili
' Access veritabani seçili ise
If Not SQLVeriTabaniSecili Then
txtKullaniciAdi.Text = ""
txtParola.Text = ""
txtTimeOut.Text = ""
txtSunucu.Text = ""
End If
End Sub
4. Connection String oluşturma düğmesi tõklandõğõ zaman, girilen değerleri alõn ve bağlantõ cümlesi oluşturun.
86
Modül 3:
Private Sub Button1_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles Button1.Click
ConnectionString = ""
' Access Veritabani seçili ise
If ComboBox1.SelectedIndex = 0 Then
Database = txtVeritabani.Text
ConnectionString = "Provider= " & Provider & ";Data
Source= " & Database
Else
KullaniciAdi = txtKullaniciAdi.Text
Parola = txtParola.Text
TimeOut = txtTimeOut.Text
Server = txtSunucu.Text
Database = txtVeritabani.Text
If Provider <> "" Then
ConnectionString = "Provider=" & Provider & ";"
End If
ConnectionString &= "Data Source=" & Server
ConnectionString &= ";Initial Catalog=" & Database
ConnectionString &= ";User ID=" & KullaniciAdi
ConnectionString &= ";Password=" & Parola
ConnectionString &= ";Connection TimeOut=" & TimeOut
End If
lblConnectionString.Text = ConnectionString
End Sub
5. Bağlantõ cümlesi oluşturulduktan sonra, bu cümleyi kullanarak
Connection nesnesi oluşturun. Burada dikkat edilmesi gereken nokta,
kullanõcõnõn seçtiği veritabanõ tipine göre farklõ bağlantõ nesnesi
oluşturulmasõdõr.
Private Sub Button2_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles Button2.Click
' Access veritabani seçili ise
If ComboBox1.SelectedIndex = 0 Then
oleDbCon = New _
OleDb.OleDbConnection(ConnectionString)
AddHandler oleDbCon.StateChange, _
AddressOf DurumDegisti
Else
sqlCon = New _
SqlClient.SqlConnection(ConnectionString)
Veri Kaynaklarõna Bağlanmak
87
AddHandler sqlCon.StateChange, _
AddressOf DurumDegisti
End If
End Sub
' Bağlantõ durumu değiştiği zaman, DurumDegisti
' yordamõndaki kodlar çalõşõr.
Private Sub DurumDegisti(ByVal sender As Object, ByVal e As
System.Data.StateChangeEventArgs)
' Bağlantõnõn durumu kullanõcõya bildirilir.
lblConnectionState.Text = e.CurrentState.ToString
End Sub
6. Bağlantõ nesnesi oluşturulduktan sonra, Connection Aç düğmesi
tõklandõğõnda bağlantõyõ Open metodu ile açõn. Ancak kullanõcõnõn bazõ
değerleri yanlõş girmesi durumu göz önüne alõnarak Try Catch bloklarõ
kullanõlmalõdõr.
Private Sub Button3_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles Button3.Click
If Not oleDbCon Is Nothing Then
' OleDB baglantisi olusturulduysa
Try
oleDbCon.Open()
Catch ex As InvalidOperationException
MsgBox(ex.Message)
Catch ex As OleDb.OleDbException
MsgBox(ex.Message)
End Try
Else
' Sql baglantisi olusturulduysa
Try
sqlCon.Open()
Catch ex As InvalidOperationException
MsgBox(ex.Message)
Catch ex As SqlClient.SqlException
MsgBox(ex.Message)
End Try
End If
End Sub
7. Connection Kapat düğmesi tõklandõğõnda oluşturulan bağlantõyõ bularak
kapatõn.
Private Sub Button4_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles Button4.Click
If Not oleDbCon Is Nothing Then
88
Modül 3:
' OleDB baglantisi olusturulduysa
oleDbCon.Close()
Else
' Sql baglantisi olusturulduysa
sqlCon.Close()
End If
End Sub
Modül 4: Bağlantõlõ (Connected)
Veritabanõ İşlemleri
Bu modülde ADO.NET ile bağlantõlõ veritabanõ işlemlerin nasõl yapõldõğõnõ
öğreneceksiniz.
Bu modülün sonunda;
! Bağlantõlõ veri ortamlarõyla çalõşmayõ öğrenecek,
! Command oluşturabilecek,
! Command ile geriye tek değer veya kayõt kümesi döndürebilecek,
! Command ile INSERT, UPDATE ve DELETE sorgularõnõ çalõştõrabileceksiniz
92
Modül 4:
Konu 1: Bağlantõlõ Veri Ortamlarõyla
Çalõşmak
Bağlantõlõ (Connected) Veritabanõ İşlemleri
93
Bağlantõlõ Uygulamalar İçin Veritabanõ Mimarisi
Bağlantõlõ veri ortamlarõ, uygulamalarõn veri kaynağõna sürekli bağlõ kaldõğõ ortamlardõ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:
Bağlantõlõ veri ortamlarõ içinde kullanõlan sõnõflar Tablo 4.1’de belirtilmiştir.
Tablo 4.1. Bağlantõlõ Veri Ortamõ Sõnõflarõ
Sõnõf
Açõklama
XXXConnection
Bağlantõ açmak ve kapatmak için kullanõlan nesnedir.
XXXCommand
Veritabanõ üzerinde Stored Procedure (Saklõ Yordam) veya
SQL cümleleri çalõştõrmak için kullanõlan nesnedir.
XXXDataReader
Veritabanõndan sadece okunur ve ileri hareketli kayõtlar çekmek için kullanõlan nesnedir. Kayõtlar XXXCommand nesnesinin ExecuteReader metodu ile XXXDataReader içine
aktarõlõr.
Bağlantõlõ (Connected) Veritabanõ İşlemleri
Konu 2: Command ile Çalõşmak
95
96
Modül 4:
Command Nedir?
Command, veritabanõ üzerinde Stored Procedure (Saklõ Yordam) ve sorgu çalõş-
tõrmak için kullanõlõr. Command nesneleri ile veritabanõ tablolarõnda; sorgu, ekleme, silme ve güncelleme işlemleri yapõlabilir.
Tablo 4.2’de hangi veri sağlayõcõ için hangi Command nesnesinin kullanõldõğõ
gösterilmektedir.
Tablo 4.2. Command Nesneleri
Nesne
Veri Sağlayõcõlarõ
System.Data.SqlClient.SqlCommand
SQL Server .NET Veri Sağlayõcõsõ
System.Data.OleDb.OleDbCommand
OLE DB .NET Veri Sağlayõcõsõ
System.Data.OleDb.ODBCCommand
ODBC .NET Veri Sağlayõcõsõ
Veritabanõ üzerinde Stored Procedure ve sorgu çalõştõrmak için Command
nesnelerinin belirli özelliklerini kullanmak gerekir. Command nesnelerinin bu özellikleri aşağõda belirtilmiştir.
Bağlantõlõ (Connected) Veritabanõ İşlemleri
97
! Name: Command nesnesinin kod içindeki ismidir. Bu isim Command
nesnesine başvurmak için kullanõlõr.
! Connection: Command nesnesinin hangi Connection üzerinde
çalõşacağõnõ belirler.
! CommandType: Çalõştõrõlacak komutun türünü belirtir. Text, Stored
Procedure ve TableDirect olmak üzere üç değeri vardõr.
TableDirect SQL Server tarafõndan desteklenmez.
! CommandText: Stored Procedure adõnõ veya sorgu cümlesini tutar.
! Parameters: Command içinde çalõştõrõlacak Stored Procedure veya
sorgu cümlesine, dõşardan değer almak ve dõşarõya değer göndermek
için kullanõlõr. Her bir Command nesnesi için bir veya birden çok parametre tanõmlanabilir.
98
Modül 4:
Command özelliklerine değer girildikten sonra, Command’õ çalõştõrmak için Tablo
4.3’teki metotlardan uygun olan seçilir.
Tablo 4.3: Command Metotlarõ
Command Metodu
Açõklama
ExecuteScalar
Çalõştõrõlan Command nesnesinden geriye tek değer döndürmek için kullanõlõr.
ExecuteReader
Çalõştõrõlan Command nesnesinden geriye kayõt kümesi döndürmek için kullanõlõr.
ExecuteNonQuery
Command nesnesi üzerinde veri güncelleme, değiştirme ve
silme işlemleri yapmak için kullanõlõr. Bu işlemin sonucunda
etkilenen kayõt sayõsõ geriye döndürür.
ExecuteXmlReader
Çalõştõrõlan Command nesnesinden geriye XML döndürmek
için kullanõlõr. Sadece SQL Server 7.0 ve sonraki versiyonlarõ için kullanõlõr.
Bağlantõlõ (Connected) Veritabanõ İşlemleri
99
Command Oluşturmak
Command, kod içinden veya ToolBox üzerinden oluşturulabilir. Bu yöntemler ile
kullanõlan veritabanõna göre, OleDbCommand veya SqlCommand nesneleri
oluşturulur.
Örnekte Access veritabanõna bağlanmak için, OleDbCommand sõnõfõ tanõmlanmõş ve bu Command sõnõfõnõn gerekli özelliklerine değer atanmõştõr.
‘Access Veritabanõna bağlanmak için Command tanõmlanõr.
Dim cmd As New OleDbCommand
‘Command Sõnõfõnõn CommandText özelliğine universiteler
‘tablosunun tüm kayõtlarõnõ getirecek sorgu cümlesi yazõlõr.
cmd.CommandText = "select * from universiteler"
‘Command Sõnõfõnõn Connection özelliğine aktif connection
‘aktarõlõr
cmd.Connection = Conn
‘Command Sõnõfõna, sorgu cümlesi yazõlacağõnõ belirler.
cmd.CommandType = CommandType.Text
ToolBox üzerinden Command nesnesi oluşturmak için belirtilen adõmlarõ takip
edin.
1. Veri kaynağõna bağlantõ kurmak için Connection tanõmlanõr.
2. ToolBox içinden Data paneli seçilir.
3. Data panelindeki OleDbCommand veya SqlCommand nesnesi form üzerine sürüklenir.
4. Eklenen Command nesnesinin özellikleri Tablo 4.4’e göre ayarlanõr.
100
Modül 4:
Tablo 4.4: Command Özellikleri
Ö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 varolan Connection nesnesine bağlanõlabilir.
CommandType
Command nesnesinin tipini belirler. Çalõştõrõlacak Command’a
göre Text, StoredProcedure ve TableDirect seçilir.
Text: SQL Cümlesi
StoredProcedure: Kayõtlõ Yordam
TableDirect: Tablo kayõtlarõ
TableDirect sadece OleDbCommand nesnesi tarafõndan
kullanõlõr.
CommandText
Command nesnesinin çalõştõrõlacak komutudur. Seçilen
CommandType’a göre CommandText belirlenir.
Text: Çalõştõrõlacak SQL cümlesi.
StoredProcedure: Çalõştõrõlacak Stored Procedure adõ.
TableDirect: Veritabanõndaki tablo adõ
Parameters
Command nesnesinin CommandText komutuna dõşardan değer
almak veya komuttan geriye değer döndürmek için kullanõlõr.
Parameters özelliği Collection olduğu için bir veya birden
çok değer alabilir veya gönderebilir.
101
Bağlantõlõ (Connected) Veritabanõ İşlemleri
Parametre Kullanmak
Stored Procedure ve SQL cümleleri parametre alabilir veya gönderebilir. Ayrõca
Stored Procedure geriye tek değer bile döndürebilir.
Stored Procedure ve SQL cümlelerinin parametre değerlerini saklamak için,
XXXCommand nesnesinin Parameters özelliği kullanõlõr. Aynõ zamanda bu özellik
XXXParameters nesnesinin koleksiyonudur.
Command nesnesi çalõştõrõlmadan önce, komuttaki her giriş parametresi için bir
değer girilmelidir. Ayrõca Command nesnesi çalõştõrõldõktan sonra, sonuç
parametrelerinin değerleri geriye döndürülebilir.
Command nesnesine parametre eklemek için aşağõdaki yöntemler kullanõlõr.
! XxxParameter nesneleri oluşturulur ve Command
Parameters koleksiyonuna bu nesneler eklenir.
nesnesinin
! Properties penceresi kullanõlarak Command nesnesinin Parameters
özelliğine tasarõm aşamasõnda parametreler eklenir.
XXXParameter nesnesini kullanarak, parametre eklemek için aşağõdaki adõm-
lar takip edilir.
1. Yeni bir OleDbParameter veya SqlParameter nesnesi oluşturulur.
2. Eklenen Parameter nesnesinin özellikleri Tablo 4.5’e göre ayarlanõr.
102
Modül 4:
Tablo 4.5: XxxParameter Özellikleri
Ö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 maksimum boyutu.
Direction
Parametrenin türü.
ParameterDirection değerlerinden biri
ile belirtilir. Bu özelliğin alabileceği değerler:
ParameterDirection.Input (varsayõlan değer)
ParameterDirection.InputOutput
ParameterDirection.Output
ParameterDirection.ReturnValue
3. XxxParameter nesnelerini Command nesnesine eklemek için, Command
nesnesinin Parameters koleksiyonunu içindeki Add metodu kullanõlõr.
Eğer bu komut sonuç döndürecek bir Stored Procedure çağõrõyorsa,
herhangi bir parametre eklemeden önce ParameterDirection.
ReturnValue parametresini eklenmelidir. Parametrelerin eklenme
sõrasõ önemli değildir.
Bağlantõlõ (Connected) Veritabanõ İşlemleri
103
Tablo 4.6’da Direction özelliğinin değerleri listelenmiştir.
Tablo 4.6 Direction Özelliğinin Enumeratörleri
Enumeratör
Özellik
Input
Girdi parametresidir. Varsayõlan değerdir.
Output
Çõktõ parametresidir.
InputOutput
Girdi ve çõktõ parametresi olarak kullanõlõr.
ReturnValue
Bir fonksiyon sonucunu geri döndürmek için kullanõlõr.
Örnekte EmployeeLogin isminde bir Stored Procedure için, paramUser ve
paramPass isminde iki OleDbParameter tanõmlanmõş ve bu parametreler
Command nesnesinin Parameters koleksiyonuna eklenmiştir.
Dim paramUser As New OleDbParameter("@userName", _
OleDbType.Char, 50)
paramUser.Direction = ParameterDirection.Input
Dim paramPass As New OleDbParameter("@userPass", _
OleDbType.Char, 20)
paramPass.Direction = ParameterDirection.Input
cmd.Parameters.Add(paramUser)
cmd.Parameters.Add(paramPass)
ToolBox kontrollerini kullanarak parametre eklemek için, aşağõdaki adõmlar takip edilir.
104
Modül 4:
1. Toolbox üzerinden OleDbCommand veya SqlCommand nesnesi seçilir ve
forma eklenir.
2. Properties penceresinden, bu Command nesnesinin Connection,
CommandType ve CommandText özelliklerine değerler atanõr.
3. CommandText özelliğine değer girildikten sonra, ekrana çõkan “Bu komut nesnesi için parametre eklemek ister misiniz?” anlamõndaki ileti
kutusuna olumlu yanõt verilir.
4. Visual Studio .NET ortamõ Command nesnesi için parametre oluşturacak
kodlarõ otomatik olarak ekler.
Bağlantõlõ (Connected) Veritabanõ İşlemleri
105
Konu 3: Command ile Geriye Değer
Döndürmek
Çalõştõrõlan Stored Procedure ya da SQL cümlesinden geriye tek değer
döndürülebilir. Bu tür durumlar için DataSet yerine Command nesnesi
kullanõlmalõdõr.
Command ile geriye tek değer döndüren senaryolara, aşağõdaki örnekler
verilebilir.
! Stok tablosundaki toplam stok miktarõnõ geriye döndürmek için
! Ürün tablosundaki toplam kayõt sayõsõnõ geriye döndürmek için
! Ürün kategorisine göre toplam ürün sayõsõnõ geriye döndürmek için
OleDbCommand veya SqlCommand nesnesi ile geriye değer döndürmek için,
ExecuteScalar metodu kullanõlõr.
Örnekte
nesnesinin
ExecuteScalar
metodu
Universiteler tablosundaki toplam kayõt sayõsõ geri döndürülür.
OleDbCommand
ile
Dim conn As New OleDbConnection("provider = _
Microsoft.JET.OLEDB.4.0; Data source=..\universiteler.mdb")
Dim cmd As New OleDbCommand("select count(*) from _
universiteler", conn)
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 tablosundaki stok miktarõ SqlCommand nesnesi ile geriye döndürülür.
Dim sql As String = "SELECT StokMiktari FROM Urun " & _
"WHERE UrunID = @UrunID"
Dim cmUrun As New SqlCommand(sql, cnAlisveris)
Dim prmID As SqlParameter = cmUrun.Parameters.Add( _
New SqlParameter("@UrunID", SqlDbType.Int, 4))
cmUrun.Parameters("@UrunID").Value = 42
cnAlisveris.Open()
Dim adet As Integer = _
CType(cmUrun.ExecuteScalar(), Integer)
cnAlisveris.Close()
MessageBox.Show("Quantity in stock: " & adet.ToString())
Bağlantõlõ (Connected) Veritabanõ İşlemleri
107
Konu 4: Command ile Geriye Kayõt
Döndürmek
Çalõştõrõlan Stored Procedure ya da SQL cümlesi, geriye birden çok değer
veya kayõt kümesi döndürülebilir. Bu tür durumlar için DataAdapter veya
DataReader nesneleri kullanõlõr. Bu nesnelerin genel farkõ, DataReader bağlantõlõ, DataAdapter bağlantõsõz veri ortamlarõ için kullanõlõr.
DataReader nesnesinin kullanõldõğõ senaryolara, aşağõdaki örnekler verilebilir.
! Tablodan tek kayõt döndürmek.(Musteri tablosundan MusteriID’ye
göre kayõt döndürmek)
! Sadece okunur sonuçlar döndürmek. (Web Form üzerinde aranan
ürünlerin, sonuçlarõnõ döndürmek )
OleDbCommand veya SqlCommand nesnesi ile geriye kayõt döndürmek için,
ExecuteReader
metodu kullanõlõr. ExecuteReader ile dönen kayõtlar
DataReader nesnesine aktarõlõr.
DataReader Özellik ve Metotlarõ
DataReader dönen kayõtlar üzerinde işlem yapmayõ sağlayan metot ve özellik-
lere sahiptir. DataReader nesnesinin bu özellik ve metotlarõ aşağõda işlemleri
yapar.
! Kayõt kümesi içindeki kayõtlarõ tek tek okur.
! Kaydõn belirli bir kolonunu veya tüm kolonlarõnõ okur.
! Kolonlarõn içinde değer olup olmadõğõnõ kontrol eder.
108
Modül 4:
! Kolonlarõn şema bilgilerini okur. (ColumnName, ColumnOrdinal,
ColumnSize,
NumericPrecision,
NumericScale,
Datatype,
ProviderType, Islong, AllowDBNull)
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
DataReader nesnesinin metotlarõ Tablo 4.7’de gösterilmiştir.
Tablo 4.7: DataReader Metotlarõ
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.
GetChar
Belirli bir kolonun değerini char olarak geri döndürür.
GetChars
Belirli bir kolonun değerini karakter dizisi olarak geri döndürür.
GetDataTypeName
Belirli bir kolonun veri türünü verir.
GetDateTime
Belirli bir kolonun değerini DateTime olarak geri döndürür.
GetDecimal
Belirli bir kolonun değerini Decimal olarak geri döndürür.
GetDouble
Belirli bir kolonun değerini Double olarak geri döndürür.
GetFieldType
Belirli bir kolonun veri türünü geri döndürür.
GetFloat
Belirli bir kolonun değerini Float olarak geri döndürür.
GetGuid
Belirli bir kolonun değerini Globally-unique identifier (GUID)
olarak geri döndürür.
GetInt16
Belirli bir kolonun değerini 16-bit tamsayõ (Short) olarak
GetInt32
Belirli bir kolonun değerini 32-bit tamsayõ(Integer) olarak
GetInt64
Belirli bir kolonun değerini 64-bit tamsayõ(Long) olarak
geri döndürür.
geri döndürür.
geri döndürür.
GetName
Belirli bir kolonun ismini geri döndürür.
110
Modül 4:
Tablo 4.7: DataReader Metotlarõ
Metot
Açõklama
GetOrdinal
Belirli bir kolonun sõra numarasõnõ geri döndürür.
GetSchemaTable
DataReader nesnesinin şema bilgilerini gösterir. Tablo
hakkõndaki detay bilgilerini gösterir.
GetString
Belirli bir kolonun değerini string olarak geri döndürür.
GetTimeSpan
Belirli bir kolonun değerini TimeSpan nesnesi olarak geri
döndürür.
GetValue
Belirli bir kolonun değerini geri döndürür.
GetValues
Belirli bir kaydõn tüm kolon değerlerini geri döndürür.
NextResult
Komut metninde birden fazla SELECT ifade varsa, sonuçlar
bu metot kullanõlarak farklõ veri kümeleri gibi alõnabilir.
Read
DataReader nesnesinde okunacak kayõt olduğu sürece
okuma yapar. Kayõt varsa True, yoksa False değeri geri
döndürür.
DataReader bağlantõlõ veri ortamlarõnda kullanõldõğõ için, veri kaynağõna sürekli
bağlõdõr. Bundan dolayõ veri alõş işlemi bittikten sonra Connection ya da
DataReader nesnesi kapatõlarak, belleğin daha etkin kullanõlmasõ sağlanõr.
Bağlantõlõ (Connected) Veritabanõ İşlemleri
111
DataReader nesnesinin özellikleri Tablo 4.8’de gösterilmiştir.
Tablo 4.8 DataReader Özellikleri
Ö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:
DataReader kullanarak kayõt çekmek için aşağõdaki adõmlarõ takip edin.
1. Bağlanõlacak veritabanõna göre Connection nesnesi eklenir.
2. Bağlanõlacak veritabanõna göre OleDbCommand veya SqlCommand nesnesi eklenir ve gerekli özellikleri ayarlanõr.
3. Veritabanõ bağlantõsõ açõlõr.
4. DataReader tanõmlanõr. Command nesnesinin ExecuteReader metodu
ile çağrõlan kayõtlar DataReader nesnesine atanõr.
5. DataReader nesnesinin Read metodu False oluncaya kadar, kayõtlar
döngü ile okunur ve form kontrollerine aktarõlõr.
6. DataReader kapatõlõr.
Örnekte Urun tablosundaki tüm ürünler, OleDbDataReader ile form üzerindeki
ListBox kontrolüne eklenir.
Dim cmUrun As New OleDbCommand( _
"SELECT UrunAdi, StokMiktari " & _
"FROM Urun", cnAlisveris)
cnAlisveris.Open()
Dim rdrUrun As OleDbDataReader
rdrUrun = cmUrun.ExecuteReader( _
CommandBehavior.CloseConnection)
Do While rdrUrun.Read()
ListBox1.Items.Add(rdrUrun.GetString(0) & _
vbTab & rdrUrun.GetInt16(1))
Loop
rdrUrun.Close()
Bağlantõlõ (Connected) Veritabanõ İşlemleri
113
Konu 5: Command ile Kayõt
Döndürmeyen Sorgular Çalõştõrmak
Command ile veritabanõ yapõsõnda değişiklik yapõlabilir (tablo, View ve Stored
Procedure oluşturmak, değiştirmek ve silmek), güvenlik seçenekleri
ayarlanabilir (tablo ve View izinleri) ve veritabanõ içindeki veri değiştirilebilir (kayõt ekleme, silme ve güncelleme). OleDbCommand veya SqlCommand nesnesi ile
bu tür işlemlerin yapõlabilmesi için, ExecuteNonQuery metodu kullanõlõr.
ExecuteNonQuery metodu ile Select hariç SQL (Structured Query Language)
ve T-SQL (Transact- Structured Query Language) komutlarõ kullanõlõr.
SQL "Structured Query Language" (Yapõlandõrõlmõş Sorgulama Dili) veritabanõ
sorgu dilidir. SQL ile veritabanõna kayõt ekleme, silme, varolan kaydõ düzenleme ve kayõt sorgulama işlemleri yapõlabilir. SQL standart bir veritabanõ sorgu
dilidir ve Oracle, db2, Sybase, Informix, Microsoft SQL Server, MS Access gibi
veritabanõ yönetim sistemlerinin temelini oluşturur. En sõk kullanõlan SQL
komutlarõ SELECT, INSERT, UPDATE ve DELETE komutlarõdõr.
SQL Server’õn sorgulama ve programlama diline T-SQL denir. Transact-SQL
ile ilişkisel veritabanõ sistemi yönetilebilir. Transact–SQL komutlarõ kullanõm
amaçlarõna göre üç genel kategoriye ayrõlõr:
!
SQL Veri İşleme Dili (Data Manipulation Language-DML): SQL Veri İşleme Dili; veri girmek, değiştirmek, silmek ve verileri almak için kullanõlõr.
En sõk kullanõlan DML komutlarõ ve kullanõm amaçlarõ Tablo 4.9’da gösterilmiştir.
114
Modül 4:
Tablo 4.9 DML Komutlarõ
DML Komutu
Açõklama
SELECT
Veri seçmek
DELETE
Veri silmek
UPDATE
Veri güncellemek
INSERT
Veri girmek
! SQL Veri Tanõmlama Dili (Data Definition Language-DDL): SQL Veri
Tanõmlama Dili; veritabanõ nesnelerini yaratmak, silmek ve bazõ temel
özelliklerinin düzenlemek için kullanõlõr. En sõk kullanõlan DDL komutlarõ
ve kullanõm amaçlarõ Tablo 4.10’da gösterilmiştir.
Tablo 4.10 DDL Komutlarõ
DDL Komutu
Açõklama
CREATE
Yeni bir veritabanõ nesnesi yaratmak. Örnek CREATE TABLE,
CREATE TRIGGER
ALTER
Veritabanõ nesnelerinde değişiklik yapmak. Örnek ALTER TABLE,
ALTER TRIGGER
DROP
Veritabanõ nesnelerini silmek. Örnek DELETE TABLE, DELETE
TRIGGER
! SQL Veri Kontrol Dili (Data Control Language-DCL): SQL Veri Kontrol Dili; bir veritabanõ kullanõcõsõ veya rolü ile ilgili izinlerin düzenlenmesini sağlar. Tablo 4.11 DCL komutlarõnõ ve fonksiyonlarõnõ göstermektedir.
Tablo 4.11 DCL Komutlarõ
DCL Komutu
Açõklama
GRANT
Kullanõcõya yetki vermek
DENY
Kullanõcõ, grup veya rolü herhangi bir eylem için engeller.
REVOKE
Daha atanmõş olan yetki veya engeli kaldõrõr.
ExecuteNonQuery metodu ile DDL ve DCL komutlarõ çalõştõrmak için aşağõdaki
adõmlarõ takip edin:
1. Bağlanõlacak veritabanõna göre Connection nesnesi eklenir.
2. Bağlanõlacak veritabanõna göre OleDbCommand veya SqlCommand nesnesi eklenir ve gerekli özellikleri ayarlanõr.
3. Veritabanõ bağlantõsõ açõlõr.
4. Command nesnesinin ExecuteNonQuery metodu kullanõlõr.
5. Veritabanõ bağlantõsõ kapatõlõr.
115
Bağlantõlõ (Connected) Veritabanõ İşlemleri
Örnekte SqlCommand nesnesinin ExecuteNonQuery metodu çalõştõrõlarak, Urun
isminde tablo oluşturulmaktadõr.
Dim cmUrunTabloOlustur As New SqlCommand( _
"CREATE TABLE Urun
(UrunID int, UrunAdi
" & _
"varchar(50), " & _
"StokMiktari int) ", connAlisveris)
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
ExecuteNonQuery metodu ile INSERT, UPDATE ve DELETE sorgularõ çalõştõrõlabi-
lir.
Örnekte ExecuteNonQuery metodu çalõştõrõlarak, Urun tablosuna yeni kayõt eklenmiştir.
Dim cmd As New SqlCommand("INSERT INTO Urun " & _
"(UrunID,UrunAdi,StokMiktari) VALUES (@UrunID, " & _
"@UrunAdi,@StokMiktari)", connAlisveris)
cmd.Parameters.Add("@UrunID", 1)
cmd.Parameters.Add("@UrunAdi", "DVD")
cmd.Parameters.Add("@StokMiktari", 15)
Try
connAlisveris.Open()
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:
Örnekte ExecuteNonQuery metodu çalõştõrõlarak, Urun tablosunda kayõt
güncellenmiştir.
Dim cmd As New SqlCommand("Update Urun " & _
"Set StokMiktari = @StokMiktari " & _
"Where UrunID = @UrunID", connAlisveris)
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
Örnekte ExecuteNonQuery metodu çalõştõrõlarak, Urun tablosundan kayõt silinmiştir.
Dim cmd As New SqlCommand("Delete Urun " & _
"Where UrunID = @UrunID", connAlisveris)
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
Modül Özeti
1. Bağlantõlõ veri ortamõ hangi .NET nesneleri ile gerçekleştirilir?
2. Command nesnesinin kaç farklõ çalõştõrõlma biçimi vardõr? Açõklayõn.
3. Command nesnesinin Parameters özelliği ne için kullanõlõr?
4. DataReader nesnesinin çalõşma modelini bir örnekle açõklayõn.
5. Kaç farklõ SQL sorgu türü vardõr?
117
118
Modül 4:
Lab 1: Veritabanõ İşlemleri
Bu uygulamada, veritabanõndaki Personel tablosu üzerinde kayõt işlemleri gerçekleştirilir. Personel kayõtlarõnõn okunup TextBox kontrollerine doldurulmasõ,
yeni personel kaydõnõn eklenmesi, bir personelin bilgilerinin güncellenmesi
veya silinmesi işlemleri yapõlõr.
Bu lab tamamlandõktan sonra;
! Access veritabanõna bağlantõ oluşturabilecek,
! Command nesnesinin ExecuteNonQuery metodu ile INSERT, DELETE
sorgusu çalõştõrabilecek,
! Sorgulara parametre ekleyebilecek,
! Command nesnesinin
oluşturabilecek,
ExecuteReader
metodu
ile
DataReader
! DataReader nesnesi ile kayõt okuyabileceksiniz.
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.
119
Bağlantõlõ (Connected) Veritabanõ İşlemleri
Alan Adõ
Veri Türü
Numara
AutoNumber
Ad
Text
Soyad
Text
DogumTarihi
Date/Time
Adres
Text
Sehir
Text
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 yerden 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:
Public connStr As String =
"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=
C:\Samples\kisi.mdb"
Bu aşamadan sonra kodlar, formun kod tarafõna yazõlacaktõr.
ExecuteNonQuery Metodu
2. Veritabanõna yeni bir personel kaydõ eklemek için gereken kodlarõ bir
yordam altõnda yazõn.
Public Sub Kaydet()
Dim conn As New OleDbConnection
conn.ConnectionString = Module1.connStr
Dim comm As New OleDbCommand
comm.Connection = conn
comm.CommandType = CommandType.Text
comm.CommandText = "INSERT INTO
Personel(Ad,Soyad,DogumTarihi,Adres,Sehir)
values(@ad,@soyad,@tarih,@adres,@sehir)"
comm.Parameters.Add("@ad", txtAd.Text)
comm.Parameters.Add("@soyad", txtSoyad.Text)
comm.Parameters.Add("@tarih", txtDTarihi.Text)
comm.Parameters.Add("@adres", txtAdres.Text)
comm.Parameters.Add("@sehir", txtSehir.Text)
Try
conn.Open()
comm.ExecuteNonQuery()
Catch 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.
Public Sub Sil(ByVal ID As Integer)
Dim conn As New OleDbConnection
conn.ConnectionString = Module1.connStr
Bağlantõlõ (Connected) Veritabanõ İşlemleri
121
Dim comm As New OleDbCommand
comm.Connection = conn
comm.CommandType = CommandType.Text
comm.CommandText = "Delete from Personel Where
Numara=@No"
comm.Parameters.Add("@No", ID)
Try
conn.Open()
comm.ExecuteNonQuery()
Catch ex As Exception
MessageBox.Show(ex.Message)
Finally
conn.Close()
End Try
End Sub
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.
Public Sub IDDoldur()
cbNo.Items.Clear()
Dim conn As New OleDbConnection
conn.ConnectionString = Module1.connStr
Dim comm As New OleDbCommand
comm.Connection = conn
comm.CommandType = CommandType.Text
comm.CommandText = "Select * from Personel"
Dim dr As OleDbDataReader
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:
5. ComboBox kontrolünden seçilen personel numarasõna göre formdaki
kontrollerin doldurulmasõnõ sağlayan kodlarõ yazõn.
Public Sub IDyeGoreFormDoldur(ByVal ID As Integer)
Dim conn As New OleDbConnection
conn.ConnectionString = Module1.connStr
Dim comm As New OleDbCommand
comm.Connection = conn
comm.CommandType = CommandType.Text
comm.CommandText = _
"Select * from Personel Where Numara=@No"
comm.Parameters.Add("@No", ID)
Dim dr As OleDbDataReader
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
Form Kontrolleri İşlemleri
6. Formdaki TextBox kontrollerinin değerlerini sõfõrlayan kodlarõ yazõn.
Public Sub Temizle()
Dim kontrol As New Control
For Each kontrol In Me.Controls
If TypeOf kontrol Is TextBox Then
kontrol.Text = ""
End If
Next
txtAd.Focus()
End Sub
Bağlantõlõ (Connected) Veritabanõ İşlemleri
123
7. Kayõt eklenmeden önce, tüm değerlerin doğru girilmesini kontrol eden
kodlarõ yazõn.
Public Function Kontrol() As Boolean
If txtAd.Text = "" Then
MessageBox.Show("Adõ Giriniz")
txtAd.Focus()
Return False
ElseIf txtSoyad.Text = "" Then
MessageBox.Show("Soyadõ Giriniz")
txtSoyad.Focus()
Return False
ElseIf txtDTarihi.Text = "" Then
MessageBox.Show("Doğum Tarihini Giriniz")
txtDTarihi.Focus()
Return False
ElseIf IsDate(txtDTarihi.Text) = False Then
MessageBox.Show("Hatalõ Tarih")
txtDTarihi.Focus()
txtDTarihi.SelectAll()
Return False
ElseIf txtAdres.Text = "" Then
MessageBox.Show("Adresi Giriniz")
txtAdres.Focus()
Return False
ElseIf txtSehir.Text = "" Then
MessageBox.Show("Şehiri Giriniz")
txtSehir.Focus()
Return False
Else
Return True
End If
End Function
Yordamlarõn Formda Kullanõlmasõ
8. btnKaydet düğmesinin Click olayõna Kaydet ve Kontrol yordamlarõnõ kullanarak kaydetme işlemlerini yazõn.
Private Sub btnKaydet_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
btnKaydet.Click
If Me.Kontrol = True Then
Me.Kaydet()
btnYeni.Enabled = True
btnKaydet.Enabled = False
124
Modül 4:
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 hazõrlayan Temizle yordamõnõ kullanõn.
Private Sub btnYeni_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles btnYeni.Click
Me.Temizle()
btnYeni.Enabled = False
btnKaydet.Enabled = True
btnIptal.Enabled = True
cbNo.SelectedIndex = -1
End Sub
10. btnIptal düğmesine basõldõğõ zaman kontrolleri temizleyen ve ilk kayõta dönen kodlarõ yazõn.
Private Sub btnIptal_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
btnIptal.Click
Me.Temizle()
btnYeni.Enabled = True
btnKaydet.Enabled = False
btnIptal.Enabled = False
cbNo.SelectedIndex = 0
End Sub
11. btnSil düğmesine basõldõğõ zaman kayõt silme işlemleri gerçekleştiren
yordamõ kullanõn.
Private Sub btnSil_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles btnSil.Click
If MessageBox.Show(cbNo.SelectedItem & _
" nolu kaydõ silmek istiyor musunuz?", _
Me.Text, MessageBoxButtons.YesNo, _
MessageBoxIcon.Question, _
MessageBoxDefaultButton.Button2) = _
DialogResult.Yes Then
Me.Sil(cbNo.SelectedItem)
Me.IDDoldur()
cbNo.SelectedIndex = cbNo.Items.Count - 1
End If
End Sub
Bağlantõlõ (Connected) Veritabanõ İşlemleri
125
12. Formun Load olayõnda ComboBox kontrolünü personel numaralarõ ile
dolduran yordamõ kullanõn.
Private Sub frmPersonel_Load(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
MyBase.Load
Me.IDDoldur()
cbNo.SelectedIndex = 0
End Sub
13. ComboBox kontrolünde bir personel numarasõ seçildiğinde, bu personele ait bilgileri forma yükleyen kodlarõ yazõn.
Private Sub cbNo_SelectedIndexChanged(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
cbNo.SelectedIndexChanged
Me.IDyeGoreFormDoldur(cbNo.SelectedItem)
End Sub
Modül 5: Bağlantõsõz (Disconnected)
Veritabanõ İşlemleri
Bağlantõsõz veri ortamlarõ, uygulamalarõn veritabanõndan bağõmsõz çalõştõğõ ortamlardõr. Veritabanõ sunucusunun uzak olmasõ, veri işlemlerinin uzun sürmesi
ve mobil çalõşma ihtiyacõ, bağlantõsõz veri ortamlarõna olan ihtiyacõ artõrmõştõr.
Bu modül tamamlandõktan sonra;
! Bağlantõsõz veritabanõ mimarisini öğrenecek,
! DataAdapter nesnesinin yapõsõnõ tanõyacak,
! DataSet nesne modelini öğrenecek,
! DataTable nesne modelini öğrenecek,
! Veri arama ve sõralama işlemlerini öğreneceksiniz.
130
Modül 5:
Konu 1: Disconnected Uygulamalar
İçin Veritabanõ Mimarisi
Bağlantõsõz veri ortamõ, uygulamanõn veri kaynağõna sürekli bağlõ kalmadõğõ
veri ortamõdõr. Bu modelde, veri kaynağõnõn istenen bölümü çekilerek belleğe
alõnõr. Veri üzerinde gerekli işlemler gerçekleştirildikten sonra, veri kaynağõna
aktarõlarak güncelleme yapõlõr.
Bağlantõsõz (Disconnected) Veritabanõ İşlemleri
131
Bağlantõsõz veri ortamlarõ içinde kullanõlan sõnõflar Tablo 5.1’de belirtilmiştir.
Tablo 5.1. Bağlantõsõz Veri Ortamõ Sõnõflarõ
Sõnõf
Açõklama
XXXDataAdapter
Connection, Command ve DataReader sõnõflarõnõ kullanarak, 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 çekmek 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:
Konu 2: DataSet ve DataTable
Oluşturmak
Veri kaynağõndan DataAdapter ile çekilen verilerin çekirdek belleğe atõlan kopyasõ 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 çevrimdõşõ ç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
DataSet Nesne Modeli
DataSet, sanal bir veritabanõ yapõsõnõ temsil eder. DataTable nesnelerinden
oluşur. Bu tablolar arasõnda ilişkiler tanõmlanabilir. DataSet’i oluşturan nesneler, DataTable, DataColumn, DataRow ve DataRelation nesneleridir.
134
Modül 5:
! DataTable: Veritabanõ tablolarõnõ temsil eder. DataColumn, DataRow
nesnelerinden oluşur. Primary Key alanõ tanõmlanabilir.
! DataColumn: DataTable nesnelerini oluşturmak için gereken kolonlarõ
temsil eder.
Bağlantõsõz (Disconnected) Veritabanõ İşlemleri
135
! DataRow: DataTable nesneleri için veri satõrlarõnõ temsil eder.
! DataRelationship: Tablolar arasõndaki ilişkileri temsil eder.
! DataView: DataTable nesneleri üzerinde filtreleme, veri güncellemeleri işlemleri yapmak için kullanõlõr.
Örnekte ds isminde yeni bir DataSet, New anahtar sözcüğü tanõmlanmaktadõr.
Tanõmlamada DataSet’e parametre olarak girilen YeniDataSet değeri,
DataSet nesnesinin DataSetName argümanõdõr. Eğer hiçbir isim verilmezse
varsayõlan olarak NewDataSet ismi verilir.
Dim ds As New DataSet(“YeniDataSet”)
DataSet, diğer bir DataSet nesnesinden kopyalanarak oluşturulabilir. DataSet
kopyalamak için iki yöntem kullanõlõr. Birinci yöntem Copy metodu ile diğer bir
DataSet nesnesinin, veri ve ilişkileri (şema bilgileri) kopyalanarak yeni bir
DataSet oluşturmaktõr. İkinci yöntem Clone metodu ile diğer bir DataSet
nesnesinin şema bilgilerini kopyalanarak, yeni bir DataSet oluşturmaktõr. Bu
yöntem şablon kopyalamak için kullanõlõr.
Örnekte ds ismindeki DataSet nesnesinin tüm tablo, ilişki ve verileri dsCopy ismindeki DatasSet nesnesinin içine aktarõlmõştõr.
Dim dsCopy As DataSet
dsCopy = ds.Copy()
Örnekte ds ismindeki DataSet nesnesinin tüm tablo ve ilişkileri, dsClone
ismindeki DataSet nesnesinin içine aktarõlmõştõr.
Dim dsClone As DataSet
dsClone = ds.Clone()
136
Modül 5:
Örnekte Stok veritabanõnõ içindeki tüm kitaplar, DataAdapter nesnesi ile
DataSet’e aktarõlmõştõr.
Dim conn As New OleDbConnection("provider = “ & _
“microsoft.jet.oledb.4.0;
data source=../stok.mdb")
Dim da As New OleDbDataAdapter("select * from “ & _
“kitaplar", conn)
Dim ds As New DataSet("set")
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.
Dim dtKitaplar As New DataTable("kitaplar")
Oluşturulan tabloyu DataSet içine eklemek için DataSet nesnesinin Tables
koleksiyonu kullanõlõr.
Ds.Tables.Add(dtKitaplar)
DataTable nesnesinin içine kolon eklenebilir. Örnekte dtKitaplar ismindeki
DataTable nesnesinin içine, yeniId isminde yeni bir kolon eklenmektedir. Yeni
kolon eklemek için, DataTable nesnesinin Columns koleksiyonu kullanõlõr.
Dim colKitapId As DataColumn =
dtKitaplar.Columns.Add("yeniId", GetType(System.Int32))
Ö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.
Dim colUcret As New _
DataColumn("Ucret", GetType(System.Decimal))
Dim colKdv As New _
DataColumn("KDV", GetType(System.Decimal))
colKdv.Expression = "Ucret * 0.17"
Dim colTutar As New _
DataColumn("Tutar", GetType(System.Decimal))
colTutar.Expression = "Ucret + KDV"
Bağlantõsõz (Disconnected) Veritabanõ İşlemleri
137
Konu 3 : DataAdapter ile Kayõtlarõ
Dataset’e Doldurmak
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 nesnesine aktarõlõr. DataSet içindeki veriler DataGrid ile ekranda gösterilir.
Dim conn As New OleDbConnection ("provider = " & _
"microsoft.jet.oledb.4.0; data source=C:\Stok.mdb")
Dim da As New OleDbDataAdapter("select * from kitaplar", _
conn)
Dim ds As New DataSet
da.Fill(ds, "kitaplar")
DataGrid1.DataSource = ds.Tables("kitaplar")
DataAdapter ile veri çekmek için DataAdapter nesnesinin başlangõç fonksiyo-
nuna, SELECT sorgu ve bağlantõ nesnesi parametre olarak gönderilir.
Dim da As New OleDbDataAdapter("select * from " & _
"kitaplar", conn)
138
Modül 5:
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 nesnesinin beraber kullanõmõ gösterilmektedir.
Dim conn As New OleDbConnection (" provider = " & _
"microsoft.jet.oledb.4.0; data source=C:\Stok.mdb")
Dim cmd As New OleDbCommand("select * from kitaplar")
cmd.CommandType = CommandType.Text
cmd.Connection = conn
Dim da As New OleDbDataAdapter(cmd)
Dim ds As New DataSet
da.Fill(ds, "kitaplar")
DataGrid1.DataSource = ds.Tables("kitaplar")
DataAdapter nesnesinin Fill metodu veri kaynağõndaki veriyi DataSet veya
DataTable nesnesini doldurmak için kullanõlõr. Örnekte da isimli DataAdapter
ile çekilen veriler, Kitaplar tablosuna doldurulmaktadõr.
da.Fill(ds, "kitaplar")
Bir DataSet içinde birden fazla tablo bulunabilir. Bu durumda DataAdapter
nesnesinin Fill metodunu birden çok kez çağrõlõr.
Fill metodu ile belirli kayõt aralõğõ DataSet içine aktarõlabilir. Örnekte da isimli
DataAdapter ile çekilen ilk altõ kayõt Kitaplar tablosuna aktarõlõr.
da.Fill(ds, 0, 5, "kitaplar")
DataSet üzerinde yapõlan değişiklikleri veri kaynağõna aktarmak için,
DataAdapter sõnõfõnõn Update metodu kullanõlõr. DataAdapter nesnesinin
DeleteCommand, UpdateCommand ve InsertCommand nesneleri içinde tutulan
sorgular ile güncelleme işlemi gerçekleştirilir. Örnekte Siparisler tablosundaki tüm değişiklikler veri kaynağõna aktarõlmaktadõr.
da.Update(ds, "siparisler")
Bağlantõsõz (Disconnected) Veritabanõ İşlemleri
139
Konu4: DataSet Nesnesini
Kontrollere Bağlamak
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 İçindeki Veriyi Windows Kontrollerine
Bağlamak
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 kontroller 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
ComboBox ve ListBox gibi kontrollere veri bağlamak için DataSource ve
DataMember özelliği kullanõlõr. DataSouce özelliği DataSet içindeki tablo ismini,
DisplayMember ise tablo kolonunu belirtir.
Örnekte, ComboBox ve ListBox kontrolünün DataSource ve DisplayMember
özellikleri kullanõlmaktadõr.
ComboBox1.DataSource = ds.Tables("kitaplar")
ComboBox1.DisplayMember = _
ds.Tables("kitaplar").Columns("kitap_baslik").ToString
ListBox1.DataSource = ds.Tables("kitaplar")
ListBox1.DisplayMember = _
ds.Tables("kitaplar").Columns("kitap_baslik").ToString
TreeView kontrolüne veri bağlamak için, TreeNode nesnesinin Text özelliği
kullanõlõr.
TreeView1.Nodes(0).Text = _
ds.Tables("kitaplar").Rows(1).Item("kitap_baslik")
Örnekte DataSet nesnesinden gelen veriler ListView ve CheckedListBox
kontrollerine aktarõlmõştõr.
Dim count as Integer
Count = ds.Tables("kitaplar").Columns.Count - 1
For i As Integer = 0 To count
ListView1.Items.Add(ds.Tables("kitaplar").Rows(i)._
Item("kitap_baslik"))
Next
For i As Integer = 0 To count
CheckedListBox1.Items.Add(ds.Tables("kitaplar"). _
Rows(i).Item("kitap_baslik"))
Next
142
Modül 5:
DataSet İçindeki Veriyi DataGrid’e Bağlamak
DataGrid, veriyi satõrlar ve sütunlar halinde görüntüler. DataGrid ile ilişkisiz
DataSet tablolarõ kolay bir şekilde görüntülenebilir. Bu görüntü Excel tablola-
rõna benzer.
DataGrid ilişkili DataSet tablolarõ da gösterebilir. Bu durumda istenilen tabloya
DataGrid üzerindeki gezinti köprülerinden erişilebilir.
DataSet tablolarõnõ DataGrid kontrolüne bağlamak için iki yöntem kullanõlõr. Bu
yöntemler grafiksel ve programlama yöntemleridir.
Grafiksel yöntem ile bağlantõ sağlamak için aşağõdaki adõmlarõ takip edin.
1. Araç kutusu üzerindeki DataGrid kontrolünü form üzerine sürükleyin.
2. DataGrid kontrolünün DataSource özelliğini, önceden oluşturulmuş
DataSet nesnesine bağlayõn.
3. DataGrid kontrolünün DataMember özelliğini, DataSet tablolarõnõn herhangi biri ile bağlayõn.
Programlama yöntemi ile bağlantõ sağlamak için DataGrid nesnesinin
DataSource özelliği kullanõlõr. Örnekte, DataSet içindeki Kitaplar tablosu
DataGrid kontrolüne bağlanõr.
DataGrid1.DataSource = ds.Tables("Kitaplar")
Bağlantõsõz (Disconnected) Veritabanõ İşlemleri
143
Konu : 5 DataTable Üzerindeki Veriyi
Düzenlemek
DataTable,
veritabanõ tablolarõnõ temsil eder. DataColumn, DataRow
nesnelerinden oluşur. DataSet içinde yeni bir DataTable oluşturduktan sonra,
veritabanõ üzerinde işlem yapõyormuş gibi veri üzerinde düzenlemeler yapõlabilir. DataTable, bu çevrimdõşõ düzenlemeleri kabul veya iptal etme olanağõ sunar.
DataTable nesnesine, yeni bir satõr eklemek için DataRow nesnesi kullanõlõr.
DataTable nesnesinin NewRow metodu ile oluşturulan yeni satõr, DataRow
nesnesinin değişkenine atanõr. Örnekte, dtKitaplar tablosuna drNew isminde
yeni bir kolon eklenmiştir.
Dim drNew As DataRow = dtKitaplar.NewRow()
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:
Kolanlara bilgi girildikten sonra, tanõmlanan DataRow nesnesi DataTable
nesnesinin Rows koleksiyonuna eklenir. Örnekte drNew nesnesi, dtKitaplar
nesnesinin Rows koleksiyonuna eklenir.
dtKitaplar.Rows.Add(drNew)
DataTable nesnesine DataRow kullanmadan kayõt eklenebilir. Örnekte
dtKitaplar ismindeki DataTable nesnesine bu yöntem ile kayõt eklenmiştir.
dtKitaplar.Rows.Add(New Object() {“975-8725-14-9”, “Tamer
Şahiner”})
Bağlantõsõz (Disconnected) Veritabanõ İşlemleri
145
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üzenlemek için Items koleksiyonu kullanõlõr. EndEdit metodu ile, askõya alõnan olaylar 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üncelleme işlemi yapõlmõştõr.
Dim drNew As DataRow = dtKitaplar.Rows(3)
drNew.BeginEdit()
drNew("kitap_baslik") = "yeni hayat"
drNew("kitap_yazar") = "can dündar"
drNew.EndEdit()
DataRow ile DataTable içindeki belirli bir satõr silinebilir. Örnekte, DataTable
içindeki dördüncü kayõt silinmiştir.
Dim drSil As DataRow = dtKitaplar.Rows(3)
dtKitaplar.Rows.Remove(drSil)
DataRow nesnesinin Delete metodu kullanõlarak aktif kayõt silinebilir.
DrSil.Delete()
146
Modül 5:
Windows Form ile Kayõt Üzerinde Hareket
Sağlamak
Verileri düzenlemeden önce, hangi veri üzerinde düzenleme yapõlacağõnõn tespit edilmesi gerekir. Windows Form uygulamalarõ, veri içinde hareket sağlanan
nesneler ile verilerin bağlõ olduğu katmanõ yönetebilir. DataSet, DataTable
veya DataView ile kayõtlar üzerinde hareket sağlayan nesneye
CurrencyManager denir.
çoklu veri kaynağõ
CurrencyManager nesnesi içerebilir.
DataSet
içinde
tutulabildiği
için,
birden
fazla
Belirli bir satõra gidebilmek için, CurrencyManager nesnesinin Position özelliği kullanõlõr.
Örnekte dtKitaplar tablosunun kayõtlarõ arasõnda ilk, son, önceki ve sonraki
satõra hareket sağlanmõştõr.
Private cmKitaplar As CurrencyManager
Private Sub Form1_Load() Handles Form1.Load
txtKitapAdi.DataBindings.Add("Text", dtKitaplar, _
"kitap_baslik")
cmKitaplar = CType(Me.BindingContext(dtKitaplar), _
CurrencyManager)
cmKitaplar.Position = 0
End Sub
Private Sub btnMoveNext()
If cmKitaplar.Position <> cmKitaplar.Count - 1 Then
Bağlantõsõz (Disconnected) Veritabanõ İşlemleri
cmKitaplar.Position += 1
End If
End Sub
Private Sub btnMoveFirst()
cmKitaplar.Position = 0
End Sub
Private Sub btnMovePrevious()
If cmKitaplar.Position <> 0 Then
cmKitaplar.Position -= 1
End If
End Sub
Private Sub btnMoveLast()
cmKitaplar.Position = cmKitaplar.Count - 1
End Sub
147
148
Modül 5:
Lab 1: Bağlantõsõz Veritabanõ
İşlemleri
Bu uygulamada, veritabanõndaki Personel tablosu üzerinde kayõt işlemleri gerçekleştirilir. Personel kayõtlarõnõn okunup DataGrid kontrolüne doldurulmasõ,
kayõtlar arasõnda gezinti, yeni personel kaydõnõn eklenmesi, bir personelin
bilgilerinin güncellenmesi veya silinmesi işlemleri yapõlõr.
Bu lab tamamlandõktan sonra;
! Access veritabanõna bağlantõ oluşturabilecek,
! DataGrid kontrolüne kayõt doldurabilecek,
! DataGrid kontrolünü biçimlendirebilecek,
! Kayõtlar arasõnda dolaşabilecek,
! Kayõt ekleme, güncelleme ve silme işlemlerini DataSet içinde
gerçekleştirebilecek,
! DataSet içindeki değişiklikleri veritabanõna kaydedebileceksiniz.
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.
149
Bağlantõsõz (Disconnected) Veritabanõ İşlemleri
Alan Adõ
Veri Türü
Numara
AutoNumber
Ad
Text
Soyad
Text
DogumTarihi
Date/Time
Adres
Text
Sehir
Text
Kontrollerin Eklenmesi
Baglantõsõz_Personel isminde yeni bir Windows projesi açõn.
Form üzerine, tablodaki kontrolleri ekleyin belirtilen özelliklerini ayarlayõn.
Kontrol – Kontrol İsmi
Özellik
Değer
DataGrid – dgPersonel
ReadOnly
True
TextBox – txtAd
BorderStyle
FixedSingle
TextBox – txtSoyad
BorderStyle
FixedSingle
TextBox – txtDogumTarihi
BorderStyle
FixedSingle
TextBox – txtSehir
BorderStyle
FixedSingle
TextBox – txtAdres
BorderStyle
FixedSingle
Multiline
True
ScrollBars
Vertical
Button – btnYeni
Text
Yeni
Button – btnIptal
Text
İptal
Button – btnKaydet
Text
Kaydet
Button – btnSil
Text
Sil
Button – btnVDoldur
Text
Veritabanindan Getir
Button – btnVKaydet
Text
Veritabanina Kaydet
Button – btnCikis
Text
Çõkõs
150
Modül 5:
RESİM 5.1.
Bağlantõ Cümlesinin Oluşturulmasõ
Personel tablosu üzerinde işlem yapõlmasõ için veritabanõ bağlantõsõnõn kurulmasõ gerekir. Bu bağlantõ için gereken Connection String cümlesini Server
Explorer’õ kullanarak oluşturun.
Baglantõsõz_Personel uygulamasõ için yeni bağlantõ oluşturmak.
1. Server Explorer penceresi üzerinde sağ tõklayõn. Açõlan menüden Add
Connection komutunu tõklayõn.
2. Açõlan Data Link Properties penceresinin Provider sekmesini tõklayõn.
3. Provider sekmesinden Microsoft.Jet.OLEDB.4.0 Provider seçeneğini
işaretleyin ve Next düğmesini tõklayõn.
RESİM 5.2.
4. Açõlan Connection sekmesinin görüntüsünü resimdeki gibi düzenleyerek OK düğmesini tõklayõn.
Bağlantõnõn Oluşturulmasõ
Kisi veritabanõna bağlantõ sağlamak için OleDbConnection oluşturun.
151
Bağlantõsõz (Disconnected) Veritabanõ İşlemleri
1. Araç kutusu üzerindeki OleDbConnection kontrolünü form üzerine sürükleyin.
2. OleDbConnection kontrolünün ConnectionString
oluşturduğunuz bağlantõ cümlesini seçin.
özelliği
için
DataAdapter Nesnesinin Oluşturulmasõ
Personel tablosunu DataSet içine aktarmak için OleDbDataAdapter oluştu-
run.
1. Araç kutusu üzerindeki OleDbDataAdapter kontrolünü form üzerine
sürükleyin.
2. Karşõnõza çõkan Data Adapter Configuration Wizard penceresi üzerinde
Next düğmesini tõklayarak bir sonraki adõma geçin.
3. Choose Your Data Connection penceresi üzerinde, oluşturduğunuz
bağlantõ cümlesini seçin ve Next düğmesini tõklayarak, bir sonraki
adõma geçin.
4. Choose a Query Type penceresinde Use Sql statements seçeneğini
işaretleyin ve Next düğmesini tõklayarak bir sonraki adõma geçin.
5. Generate the Sql statements penceresindeki metin kutusuna SELECT
Numara,
Ad,
Soyad,
DogumTarihi,
Adres,
Sehir
FROM
Personel yazõn ve Next düğmesini tõklayarak bir sonraki adõma geçin.
6. Finish düğmesini tõklayarak Data Adapter Configuration Wizard sihirbazõnõ sonlandõrõn.
DataSet Nesnesinin Oluşturulmasõ
Personel kayõtlarõ ile çevrimdõşõ çalõşmak için DataSet oluşturun.
1. da üzerinde sağ tõklayõn.
2. Açõlan kõsayol menüsünden Generate DataSet menüsünü tõklayõn.
3. Choose a Dataset menüsünden New seçeneğini işaretleyin ve metin
kutusuna ds yazõn.
4. OK düğmesini tõklayõn
DataSet İçindeki Verinin DataGrid Kontrolüne
Bağlanmasõ
Personel tablosunu DataGrid kontrolüne bağlayõn.
1. dgPersonel isimli DataGrid nesnesinin DataSource özelliğine ds1
isimli DataSet nesnesini seçin.
2. dgPersonel isimli DataGrid nesnesinin DataMember özelliğine
Personel tablosunu seçin.
152
Modül 5:
DataSet İçindeki Verinin TextBox Kontrollerine
Bağlanmasõ
Personel tablosu içindeki Ad, Soyad, DTarihi, Adres ve Sehir kolonlarõnõ sõrayla txtAd, txtSoyad, txtDogumTarihi, txtAdres ve txtSehir metin
kutularõna bağlayõn.
1. txtAd metin kutusunun DataBindings koleksiyonun Text özelliğine Ad
kolonunu seçin.
2. txtSoyad, txtDogumTarihi, txtAdres ve txtSehir metin kutularõnõ
sõrayla Soyad, DTarihi, Adres ve Sehir kolonlarõna bağlayõn.
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
2. btnDKaydet kontrolünün Click olayõna DataSet kontrolündeki tüm
değişiklikleri veritabanõna kaydeden kodu yazõn.
Try
conn.Open()
da.Update(Ds1, "Personel")
Catch ex As Exception
MessageBox.Show(ex.Message)
Finally
conn.Close()
End Try
3. btnYeni kontrolünün Click olayõna DataSet tablosu için yeni satõr
oluşturan kodu yazõn.
BindingContext(Ds1, "Personel").EndCurrentEdit()
BindingContext(Ds1, "Personel").AddNew()
4. btnIptal kontrolünün Click olayõna DataSet tablosu içinde eklenen
yeni satõrõ iptal eden kodu yazõn.
BindingContext(Ds1, "Personel").CancelCurrentEdit()
Bağlantõsõz (Disconnected) Veritabanõ İşlemleri
153
5. btnKaydet kontrolünün Click olayõna DataSet tablosuna yeni kayõt
ekleyen kodu yazõn.
BindingContext(Ds1, "Personel").EndCurrentEdit()
6. btnSil kontrolünün Click olayõna DataSet tablosundan aktif kaydõ silen kodu yazõn.
BindingContext(Ds1, "Personel").RemoveAt(BindingContext(Ds1,
"Personel").Position)
7. btnIlk kontrolünün Click olayõna ilk kayda giden kodu yazõn.
BindingContext(Ds1, "Personel").Position = 0
8. btnOnceki kontrolünün Click olayõna önceki kayda giden kodu yazõn.
BindingContext(Ds1, "Personel").Position -= 1
9. btnSonraki kontrolünün Click olayõna sonraki kayda giden kodu yazõn.
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:
Konu 6: Veri Arama ve Sõralama
DataSet içinde veri arama ve sõralama işlemleri yapmak için, DataTable ve
DataView sõnõfõnõn arama ve sõralama metotlarõ kullanõlõr.
DataTable sõnõfõnõn Find metodu, birincil anahtar değerine göre arama
yapõlmasõnõ sağlar. Select metodu ise, belirli bir arama kriterine göre arama
yapõlmasõnõ sağlar. Select metodu ile geriye satõr koleksiyonlarõ döndürülür.
Örnekte DataTable sõnõfõnõn Find metodu ile kitap barkod numarasõna göre
arama yapõlõr. Bu aramanõn sonucunda yazar adõ geriye döndürülür.
Dim conn As New OleDbConnection("provider =" & _
“microsoft.jet.oledb.4.0;data source=c:\Proje\stok.mdb")
Dim da As New OleDbDataAdapter("select * from" & _
"kitaplar", conn)
Dim tbl As New DataTable
da.Fill(tbl)
tbl.PrimaryKey = _
New DataColumn(){tbl.Columns("kitap_ISBN")}
Dim row As DataRow = tbl.Rows.Find("975-12-53-3")
If row Is Nothing Then
MessageBox.Show("Kayõt Bulunamadõ!")
Else
MessageBox.Show(row("kitap_yazar"))
End If
Bağlantõsõz (Disconnected) Veritabanõ İşlemleri
155
Örnekte Tbl ismindeki DataTable nesnesine, DataAdapter nesnesinden gelen kayõtlar doldurulur. Tbl tablosunun Kitap_ISBN kolonu birincil anahtar olarak atanõr. Row isminde yeni bir DataRow tanõmlanõr. DataTable nesnesinin
Find metoduna kitabõn barkod numarasõ girilir ve sonuç Row değişkenine
aktarõlõr. Son olarak Row değişkeni içindeki sonuç ekrana yazõlõr.
Arama işlemlerinde özel karakter kullanõlabilir. Örneğin yazar ismi ‘E’ harfi ile
başlayan kayõtlarõ sorgulamak için aşağõdaki komut kullanõlõr.
Select * from kitaplar Where kitap_yazar Like 'E%'
DataTable sõnõfõnõn Select metodu ile DataRow nesnelerinden oluşan bir
koleksiyon geri döndürür. Select metodu aslõnda orijinal DataSet içindeki
satõrlarõ işaret eden işaretçiler kümesi olarak da algõlanabilir. Veri kopyalama
yapmaz, ancak değişimleri görüntüler.
Örnekte, DataTable sõnõfõnõn Select metodu kullanõlarak kitap fiyatõ sekizden
farklõ kayõtlar gösterilmektedir. Bu kayõtlar kitap isimlerine göre sõralanmõştõr.
Dim selRows As DataRow() = tbl.Select("kitap_fiyat <> 8", _
"kitap_baslik ASC", DataViewRowState.CurrentRows)
Dim row As DataRow
For Each row In selRows
MessageBox.Show("kitap: " & _
row("kitap_baslik", DataRowVersion.Original))
Next
Select metodunun dört farklõ kullanõmõ vardõr. Bu kullanõmlar aşağõda listelen-
miştir.
public DataRow() Select()
public DataRow() Select(filterExpression as string)
public DataRow() Select(filterExpression as string, _
sort as string)
public DataRow() Select(filterExpression as string, _
sort as string, _
recordStates
as DataViewRowState)
Select metodunun filterExpression, Sort ve recordStates isminde üç parametresi bulunur.
filterExpression, filtreleme yapõlacak ifadeyi içerir.
"Country = ‘Turkey' AND City <> 'Ankara'"
156
Modül 5:
Sort, sonuçlarõn hangi sõrada görüntüleneceğini belirtir.
“City DESC”
Veriler artan ve azalan olmak üzere iki şekilde sõralanabilir. Sõralanacak kolonun sonuna; azalan sõralama için DESC, artan sõralama için ASC anahtar sözcüğü 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
DataView Özellik ve Metotlarõ
ADO.NET ile veri kaynağõndan alõnan bilgileri sõralamak ve filtrelemek için
DataView nesnesi kullanõlõr. DataView nesnesi ile DataTable nesneleri üzerinde arama veya sõralama işlemleri yapõlabilir. DataView, diğer kontrollere
bağlanabilen bir nesnedir.
DataView nesnesi oluşturmak için iki yöntem kullanõlõr. Bu yöntemler grafiksel
ve programlama yöntemleridir.
Grafiksel yöntem ile bağlantõ sağlamak için aşağõdaki adõmlarõ takip edin:
1. Araç kutusu üzerindeki DataView kontrolünü form üzerine sürükleyin.
2. DataView kontrolünün Table özelliği ile kullanõlacak DataTable’õ seçin.
3. DataView kontrolünün Sort özelliğine, sõralanacak kolon bilgilerini girin.
4. DataView kontrolünün RowFilter özelliğine arama sorgusunu girin.
158
Modül 5:
Programlama yöntemi ile DataView kullanõmõ aşağõda gösterilmektedir. Örnekte fiyatõ 8 YTL’den büyük kayõtlar gösterilmektedir. Bu kayõtlar yazar adõna
göre sõralanarak gösterilir.
Dim dvProducts As New DataView(ds.Tables("kitaplar"))
dvProducts.Sort = "kitap_yazar"
dvProducts.RowFilter = "kitap_fiyat > 8"
DataGrid1.DataSource = dvProducts
DataView sõnõfõnõn Sort özelliğine, sõralanacak kolonun adõ girilir. RowFilter
özelliğine ise arama veya filtreleme sorgusu girilir.
Örnekte, Sipariş Numarasõ 10300’den büyük kayõtlar sorgulanmaktadõr:
dv.RowFilter = ("SiparisID >10300")
Örnekte, Sipariş
sorgulanmaktadõr:
Tarihi
08/25/1996
tarihinden
büyük
olan
kayõtlar
dv.RowFilter = ("SiparisTarihi >#08/25/1996#")
Örnekte, müşteri adõ “V” ile başlayan kayõtlar sorgulanmaktadõr:
dv.RowFilter = ("MusteriAdi like 'V*'")
Örnekte, müşteri adõ “V” ile başlayan veya Sipariş Numarasõ 10300’den büyük
kayõtlar sorgulanmaktadõr:
dv.RowFilter = ("MusteriADi like 'V*' Or SiparisID >10300")
Bağlantõsõz (Disconnected) Veritabanõ İşlemleri
Modül Özeti
1. Bağlantõsõz veri ortamõ hangi .NET nesneleri ile gerçekleştirilir?
2. DataSet nedir? DataSet hangi nesnelerden oluşur?
3. DataTable nedir? Hangi durumlarda kullanõlõr?
4. DataColumn nedir? Hangi durumlarda kullanõlõr?
5. DataView nedir? Hangi durumlarda kullanõlõr?
159
160
Modül 5:
Lab 2: Çoklu Tablolarla Çalõşmak
Bu uygulamada aynõ form üzerinde üç farklõ DataTable ile çalõşõlacaktõr. Bu uygulama ile Bolum tablosundaki kayõtlarõn açõlan kutuya doldurulmasõ, seçilen
bölüme göre öğrencilerin DataGrid’e doldurulmasõ ve seçilen öğrenciye göre
ders bilgilerinin DataGrid kontrolüne doldurulmasõ gerçekleştirilir. Form üzerindeki filtreleme işlemleri DataView kontrolü ile sağlanõr.
Personel kayõtlarõnõn okunup DataGrid kontrolüne doldurulmasõ, kayõtlar arasõnda gezinti, yeni personel kaydõnõn eklenmesi, bir personelin bilgilerinin
güncellenmesi veya silinmesi işlemleri yapõlõr.
Bu lab tamamlandõktan sonra;
! Access veritabanõna bağlantõ oluşturabilecek,
! DataSet üzerinde birden fazla DataTable ile çalõşabilecek,
! DataView ile filtreleme işlemleri yapabilecek,
! DataGrid kontrolüne kayõt doldurabileceksiniz.
161
Bağlantõsõz (Disconnected) Veritabanõ İşlemleri
Veritabanõnõn Projeye Eklenmesi
Bu uygulamada kullanõlacak Course veritabanõ oluşturun.
1. Microsoft Access ile Dershane isminde bir veritabanõ oluşturun.
2. Veritabanõn tablolarõnõ aşağõdaki diyagrama göre oluşturun.
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.
Bağlantõ Cümlesinin Oluşturulmasõ
Dershane veritabanõ üzerinde işlem yapõlmasõ için bağlantõ kurulmasõ gerekir.
Bu bağlantõ için gerekli Connection String ifadesini Server Explorer’õ kullanarak
oluşturun.
162
Modül 5:
Dershane uygulamasõ için yeni bağlantõ oluşturmak:
1. Server Explorer penceresi üzerinde sağ tõklayõn. Açõlan menüden Add
Connection komutunu tõklayõn.
2. Açõlan Data Link Properties penceresinin Provider sekmesini tõklayõn.
3. Provider sekmesinden Microsoft.Jet.OLEDB.4.0 Provider seçeneğini
işaretleyin ve Next düğmesini tõklayõn.
RESİM 5.5.
4. Açõlan Connection sekmesinin görüntüsünü resimdeki gibi düzenleyerek
OK düğmesini tõklayõn.
Bağlantõnõn Oluşturulmasõ
Dershane veritabanõna bağlantõ sağlamak için OleDbConnection oluşturun.
1. Araç kutusu üzerindeki OleDbConnection kontrolünü form üzerine sürükleyin.
2. OleDbConnection kontrolünün ConnectionString
oluşturduğunuz bağlantõ cümlesini seçin.
özelliği
için
DataAdapter Nesnesinin Oluşturulmasõ
Bolum tablosunu DataSet içine aktarmak için OleDbDataAdapter oluşturun.
1. Araç kutusu üzerindeki OleDbDataAdapter kontrolünü form üzerine
sürükleyin.
2. Karşõnõza çõkan Data Adapter Configuration Wizard penceresi üzerinde
Next düğmesini tõklayarak bir sonraki adõma geçin.
3. Choose Your Data Connection penceresi üzerinde, oluşturduğunuz
bağlantõ cümlesini seçin ve Next düğmesini tõklayarak bir sonraki
adõma geçin.
Bağlantõsõz (Disconnected) Veritabanõ İşlemleri
163
4. Choose a Query Type penceresinden Use Sql statements seçeneğini
işaretleyin ve Next düğmesini tõklayarak bir sonraki adõma geçin.
5. Generate the Sql statements penceresindeki metin kutusuna SELECT
Bolum, BolumID FROM Bolum yazõn ve Next düğmesini tõklayarak bir
sonraki adõma geçin.
6. Finish düğmesini tõklayarak Data Adapter Configuration Wizard sihirbazõnõ sonlandõrõn.
7. Eklediğiniz OleDbDataAdapter kontrolünün ismini daBolum olarak
değiştirin.
Ogrenci tablosunu DataSet içine aktarmak için OleDbDataAdapter oluşturun.
1. Araç kutusu üzerindeki OleDbDataAdapter kontrolünü form üzerine
sürükleyin.
2. Karşõnõza çõkan Data Adapter Configuration Wizard penceresi üzerinde
Next düğmesini tõklayarak bir sonraki adõma geçin.
3. Choose Your Data Connection penceresi üzerinde, oluşturduğunuz
bağlantõ cümlesini seçin ve Next düğmesini tõklayarak bir sonraki
adõma geçin.
4. Choose a Query Type penceresinden Use Sql statements seçeneğini
işaretleyin ve Next düğmesini tõklayarak bir sonraki adõma geçin.
5. Generate the Sql statements penceresindeki metin kutusuna SELECT
OgrenciID, Ad, Soyad, Adres, BolumID, Sehir FROM Ogrenci
yazõn ve Next düğmesini tõklayarak bir sonraki adõma geçin.
6. Finish düğmesini tõklayarak Data Adapter Configuration Wizard sihirbazõnõ sonlandõrõn.
7. Eklediğiniz OleDbDataAdapter kontrolünün ismini daOgrenci olarak
değiştirin.
Kurs
ve OgrenciDersKayit tablolarõnõ DataSet içine aktarmak için
OleDbDataAdapter oluşturun.
1. Araç kutusu üzerindeki OleDbDataAdapter kontrolünü form üzerine
sürükleyin.
2. Karşõnõza çõkan Data Adapter Configuration Wizard penceresi üzerinde
Next düğmesini tõklayarak bir sonraki adõma geçin.
3. Choose Your Data Connection penceresi üzerinde, oluşturduğunuz
bağlantõ cümlesini seçin ve Next düğmesini tõklayarak bir sonraki
adõma geçin.
4. Choose a Query Type penceresinden Use Sql statements seçeneğini
işaretleyin ve Next düğmesini tõklayarak bir sonraki adõma geçin.
5. Generate the Sql statements penceresindeki metin kutusuna SELECT
OgrenciDersKayit.OgrenciID, Kurs.KursAdi, OgrenciDersKayit.
KursBasTarihi, Kurs.Kredi, Kurs.KursNo FROM (Kurs INNER
164
Modül 5:
JOIN OgrenciDersKayit ON Kurs.KursNo = OgrenciDersKayit.
KursNo) yazõn ve Next düğmesini tõklayarak bir sonraki adõma geçin.
6. Finish düğmesini tõklayarak Data Adapter Configuration Wizard sihirbazõnõ sonlandõrõn.
7. Eklediğiniz OleDbDataAdapter kontrolünün ismini daKurs olarak
değiştirin.
DataSet Nesnesinin Oluşturulmasõ
Bolum, Ogrenci ve Kurs tablolarõ ile çevrimdõşõ çalõşmak için DataSet oluştu-
run.
1. daBolum üzerinde sağ tõklayõn.
2. Açõlan kõsayol menüsünden Generate DataSet menüsünü tõklayõn.
3. Choose a Dataset menüsünden New seçeneğini işaretleyin ve metin
kutusuna ds yazõn.
4. OK düğmesini tõklayõn.
5. daOgrenci üzerinde sağ tõklayõn.
6. Açõlan kõsayol menüsünden Generate DataSet menüsünü tõklayõn.
7. Choose a Dataset menüsünden Existing seçeneğini işaretleyin ve açõlan kutudan Dershane.ds seçeneğini işaretleyin.
8. OK düğmesini tõklayõn.
9. daKurs üzerinde sağ tõklayõn.
10. Açõlan kõsayol menüsünden Generate DataSet menüsünü tõklayõn.
11. Choose a Dataset menüsünden Existing seçeneğini işaretleyin ve açõlan kutudan Dershane.ds seçeneğini işaretleyin.
12. OK düğmesini tõklayõn.
DataView Nesnesinin Oluşturulmasõ
DataTable nesneleri üzerinde filtreleme işlemleri yapmak için DataView
oluşturun.
Ogrenci tablosunu filtrelemek için aşağõdaki adõmlarõ takip edin.
1. Araç kutusu üzerindeki DataView kontrolünü form üzerine sürükleyin.
2. Eklediğiniz DataView kontrolünün ismini dvOgrenci olarak değiştirin.
3. DataView kontrolünün Table özelliği için Ogrenci tablosunu seçin.
Kurs tablosunu filtrelemek için aşağõdaki adõmlarõ takip edin.
1. Araç kutusu üzerindeki DataView kontrolünü form üzerine sürükleyin.
2. Eklediğiniz DataView kontrolünün ismini dvKurs olarak değiştirin.
3. DataView kontrolünün Table özelliği için Kurs tablosunu seçin.
Bağlantõsõz (Disconnected) Veritabanõ İşlemleri
165
DataSet İçindeki Verinin ComboBox Kontrolüne
Bağlanmasõ
Bolum tablosunu cbBolum isimli açõlan kutuya bağlayõn.
1. cbBolum isimli açõlan kutunun DataSource özelliğine Bolum tablosunu
seçin.
2. cbBolum isimli açõlan kutunun DisplayMember özelliğine Bolum kolonunu seçin.
3. cbBolum isimli açõlan kutunun ValueMember özelliğine BolumID kolonunu seçin.
Kodlarõn Yazõlmasõ
1. Form kontrolünün Load olayõna kayõtlarõ DataSet tablolarõna dolduran kodlarõ 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
2. btnListele kontrolünün Click olayõna dvOgrenci kontrolünü
DataGrid kontrolüne bağlayan kodu yazõn.
dvOgrenci.RowFilter = "BolumID='" & _
cbBolum.SelectedValue & "'"
dgOgrenci.DataSource = dvOgrenci
3. dgOgrenci kontrolünün CurrentCellChanged olayõna dvKurs kontrolünü DataGrid kontrolüne bağlayan kodu yazõn.
dvKurs.RowFilter = "OgrenciID='" & _
dgOgrenci.Item(dgOgrenci.CurrentRowIndex, 0) & "' "
dgKurs.DataSource = dvKurs
Modül 6: ASP.NET’e Giriş
ASP.NET, Web sunucusu üzerinde çalõşan ve .NET altyapõsõnõ kullanan geliştirme platformudur. ASP.NET Web Form nesneleri, dinamik Web uygulamalarõ
geliştirmeyi kolaylaştõrõr.
Bu modülü tamamladõktan sonra;
! ASP.NET çalõşma modelini öğrenecek,
! ASP.NET teknolojisinin .NET Framework çatõsõndaki yerini öğrenecek,
! IIS Web sunucusunun yapõsõnõ öğrenecek ve yönetebileceksiniz.
170
Modül 6:
Konu 1: ASP.NET Nedir?
ASP.NET teknolojisinden önce, Web üzerinde dinamik sayfalarla çalõşabilmek
için ASP teknolojisi kullanõlõrdõ. ASP teknolojisi, .NET çatõsõ ile yeni özelliklere
eklendi.
ASP.NET ile Web uygulamasõ geliştirmek, Windows Form tabanlõ uygulama
geliştirmeye oldukça benzer. Web Server tarafõnda çalõşan, HTML kodlarõnõ ve
ASP kontrollerini içeren, temel ASP .NET bileşenine Web Form denir. Bir Web
uygulamasõnda birden fazla Web Form bulunabilir.
ASP.NET sayfalarõ ile yazõlan kodlar sunucu tarafõnda çalõşõr; istemci tarafõnda
çeşitli işlemleri gerçekleştirebilmek içinse Script adõ verilen kodlar kullanõlõr.
Web uygulamasõnõn güvenliği ise yine sunucu tarafõnda çalõşan .NET bileşenleri ile sağlanõr.
ASP.NET Web Formlarõ sunucu taraflõ kodlarõ çalõştõrdõğõ için, kullanõcõ tarafõndaki tarayõcõya ve işletim sistemine bağlõ değildir. Dolayõsõyla ASP.NET ile yazõlan uygulamalar, Internet erişimi olan herhangi bir aygõtta çalõşabilir.
ASP.NET’e Giriş
171
Konu 2: ASP Tarihçesi
HTML (HyperText Markup Language) Web sayfasõ hazõrlamak için kullanõlan
temel Web programlama dilidir.
HTML, kullanõcõ ile sunucu arasõnda dinamik veri alõşverişi sağlamaz. HTML’in
bu açõğõnõ kapatmak için ilk olarak CGI arabirimi (Common Gateway Interface)
geliştirilmiştir. CGI arabirimi C dilinde hazõrlanan kodlar ile çalõştõrõlõr. CGI
arabiriminin dezavantajõ, en ufak bir değişiklikte tüm kaynak kodun yeniden
derlenmesidir. Bu durum zaman ve kaynak kullanõmõnõ olumsuz yönde artõrõr.
CGI arabirimininden sonra, sunucu ile haberleşen ilk dil olan PERL(Practical
Extraction and Reporting Language) geliştirilmiştir. Bu dil C ve C++ ile yazõlan
script’ler içerir. PERL, CGI’õn yeniden derlenme dezavantajõnõ ortadan
kaldõrmõştõr. PERL halen aktif olarak kullanõlmaktadõr.
Microsoft NT teknolojisini ile birlikte Internet Information Server (IIS) sunucusunu geliştirmiştir. IIS, Windows NT 3.51 ile gelen Web sunucusudur. IIS
sunucusunun Windows NT 3.51 ile gelen ilk sürümü CGI arabirimini destekler.
Microsoft IIS sunucusunu geliştirdikten sonra, Internet Server Application Programming Interface (ISAPI) arabirimini geliştirmiştir. Microsoft ilk defa ISAPI ile
birlikte ASP teknolojisini duyurmuştur. ASP teknolojisi, IIS ve ISAPI alt yapõsõnõ
birleştirir. ASP, statik HTML sayfalarõ içinde, dinamik veri alõşverişi için Microsoft
tarafõndan geliştirilmiştir
172
Modül 6:
Konu 3: ASP.NET Uygulama Mimarisi
ASP.NET, multi-tier (çok katmanlõ) veri erişim modelini kullanõr. Bu veri erişim
modeli İstemci,İş ve Veri katmanlarõndan oluşur.
İstemci Katmanõ (Presentation Tier)
Bu katman, kullanõcõ ile diğer katmanlarõn iletişimini sağlar. Bu katmanda, kullanõcõ arayüzünü oluşturan bileşenler bulunur. HTML ve Sunucu kontroller, Web
Formlar ve kullanõcõ tanõmlõ kontroller (User Controls) bu katman içinde yer alõr.
İş katmanõ (Business Logic Tier)
Bu katman uygulama ile veritabanõ arasõnda iletişimi sağlar. Bu katmanda iş
servisleri ve kurallarõnõ içeren bileşenler bulunur. XML Web servisleri, COM ve
COM+ nesneleri bu katman içinde yer alõr
Veri Katmanõ (Data Tier)
Veri katmanõdõr. Bu katmanda veriyi saklamak için gerekli araçlar bulunur. İlişkisel veritabanlarõ, e-mail alanlarõ, mesaj kuyruklarõ ve dizin servisleri bu katman
içinde yer alõr. Web uygulamalarda, ASP.NET ile veri kaynağõna erişim için
ADO.NET kullanõlõr.
ASP.NET’e Giriş
173
Konu 4: ASP.NET Çalõşma Modeli
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:
Tür Yönetimi (Type Management)
Güvenli olmayan bilgilere ve başlatõlmamõş değişkenlere izin vermez Bu yönetim, ASP.NET’i ASP’den tamamen ayõran bir özelliktir.
ASP.NET’e Giriş
175
JIT Derleme (JIT Compilation)
ASP.NET Web sayfalarõ, kullanõlan dilin editöründe derlenerek MSIL (Microsoft
Intermediate Language) diline çevrilir. MSIL kodu çalõşma zamanõnda, JIT ile
“native code” adõ verilen dile çevrilir.
176
Modül 6:
Hafõza Yönetimi (Memory Management)
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
Exception Yöneticisi (Exception Manager)
CLR, ASP.NET uygulamalarõ için yapõsal hata yakalama altyapõsõ sunar.
ASP.NET uygulamalarõnda Try...Catch...Finally bloklarõ kullanõlarak
,hata yakalama altyapõsõ kolayca devreye sokulur.
ASP.NET uygulamalarõn konfigürasyon ayarlarõ, XML dosyalarõ içinde saklanõr.
Bu dosyalar kolayca okunur ve yazõlabilir. Her Web uygulamasõnõn kendisine
ait bir konfigürasyon dosyasõ vardõr. ASP.NET uygulamalarõnõn konfigürasyon
dosyalarõ web.config dir.
Sunucuya ait konfigürasyon ayarlarõ ise machine.config içinde saklanõr. Her
Web sunucusunda tek machine.config dosyasõ bulunur.
Visual Studio .NET, Web uygulamalarõnõn performansõnõ artõrmak ve güvenliğini sağlamak için pek çok servis sunar.
178
Modül 6:
Bir ASP.NET uygulamasõnõ oluşturan bileşenler aşağõdaki gibidir:
! Web Formlar: Web uygulamasõ için kullanõcõ arayüzü sağlar.
! Code-behind sayfalar: Web Formlarõn sunucu tarafõnda çalõşan
kodlarõnõ içerir.
! Konfigürasyon dosyalarõ: Web uygulama ve sunucu ayarlarõnõn tutulduğu XML dosyalarõdõr.
! global.asax dosyalarõ: Web uygulamasõnõn genel olaylarõnõ içerir.
Örneğin Web uygulamasõnõn başlatõlmasõ veya durdurulmasõ.
global.asax dosyasõ ASP deki global.asa dosyasõnõn gelişmiş versiyonudur.
ASP.NET’e Giriş
179
! XML Web Servis bağlantõlarõ: Web uygulamasõnõn, XML Web servisi
üzerinden veri alõşverişini sağlar.
! Veritabanõ bağlantõlarõ: Web uygulamasõ ile veri kaynağõ arasõnda veri
alõşverişini sağlar.
! Caching (Ön Belleğe Alma): Uygulamanõn ilk çalõştõğõ anda ön belleğe atõlmasõnõ sağlar. Bu durum uygulamanõn bellekten çalõşmasõnõ
sağlayarak performansõ artõrõr.
180
Modül 6:
Konu 5: ASP.NET’in .NET Çatõsõndaki
Yeri
Microsoft .NET platformu, geniş çaplõ Web uygulamalarõ geliştirebilmek için gerekli her türlü araç ve teknolojiye sahiptir. Dilden bağõmsõz çalõşabilme, eski teknolojiden yeni teknolojilere kolayca geçiş imkanõ sağlar. Tamamen nesne yönelimli programlamayõ destekleyen bir platform olan Visual Studio .NET, Web uygulamalarõnda da nesne yönelimli programlama modelini destekler.
RESİM 6.1.
Resim 6.1’de belirtildiği gibi en üst katman, kullanõcõ ve program arayüzlerini
gösterir. Bu arayüzler Windows Form, Web Form, Web Service ve uygulama
servislerinden oluşabilir. Orta katmanda .NET Framework sõnõflarõ, alt katmanda ise CLR bulunur.
ASP.NET’e Giriş
181
Konu 6: .NET Framework’ün
ASP.NET’teki Avantajlarõ
.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 uygulama 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 bulunur.
! 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 formlar 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:
Konu 7: ASP.NET ile Uygulama
Geliştirmek
ASP.NET ile geliştirilen uygulamalarõn; Internet, Extranet veya Intranet üzerinde çalõşabilmesi için Web sunucularõna ihtiyaç duyulur. IIS (Internet Information Services) Windows işletim sistemleri için geliştirilmiş Web sunucusudur.
ASP.NET’e Giriş
183
IIS Nedir?
IIS (Internet Information Services), Windows sistemler için Web tabanlõ uygulama geliştirme ve yayõnlama amacõyla kullanõlan Web sunucusudur.
184
IIS Kurulumu ve Yönetimi
Modül 6:
ASP.NET’e Giriş
185
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 Services (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õ geliştirilemez.
.NET Framework kurulmadan önce IIS sunucusunun kurulmuş olmasõna dikkat
edilmelidir. Aksi halde ASP.NET dosyalarõ, ilgili kütüphane dosyalarõ ile düzgün bir şekilde kullanõlamaz. Eğer IIS kurulmadan .NET Framework kurulmaya çalõşõlõrsa, uyarõ
mesajõ ile karşõlaşõlõr. Bu uyarõ mesajõ önemsenmeden kuruluma devam edilebilir.
Framework kurulumu tamamlandõktan sonra IIS kurulmalõdõr. Ancak IIS yüklendikten
sonra, sistemin ASP.NET sayfalarõ ile uyum içinde çalõşabilmesi için Visual Studio
.NET komut satõrõnda aspnet_regiis.exe -I komutu çalõştõrõlmalõdõr.
186
Modül 6:
RESİM 6.2: IIS kurulumu.
ASP.NET’e Giriş
187
IIS Yönetimi
IIS yönetimi, Internet Information Services (IIS) Manager ile gerçekleştirilir.
IIS Manager’õ açmak için aşağõdaki adõmlar takip edilir:
1. Bilgisayarõm (My Computer) simgesi sağ tõklanõr. Açõlan kõsayol
menüsünden Yönet (Manage) komutu seçilir. Açõlan Computer Manager
penceresinin Services and Applications menüsünden Internet Information
Services (IIS) seçilir.
2. Denetim Masasõ (Control Panel) içinden Administrative Tools simgesi seçilir. Açõlan pencereden Internet Information Services Manager seçilir.
IIS içinde aşağõdaki alt klasörler bulunur:
! Application Pools
! Web Sites
! Web Service Extensions
188
Modül 6:
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 ifadesi, sistemde IIS sunucusunun çalõştõracağõ uygulamalarõn yer bilgisini tutar.
RESİM 6.3: IIS yönetimi.
ASP.NET Web uygulamalarõ wwwroot klasörü altõnda tutulur. Bu klasör altõnda
tutulan klasörlerin diğerlerinden farkõ Virtual Directory (sanal klasör) olmalarõdõr.
.NET ile açõlan her yeni Web uygulamasõ için, wwwroot altõnda yeni bir Virtual
Directory oluşturulur.
ASP.NET’e Giriş
189
Visual Studio .NET kullanmadan yeni bir Virtual Directory oluşturmak için Default Web Site sağ tõklanõr. Çõkan menüden New alt menüsü işaretlenir ve Virtual Directory seçilir. Virtual Directory Creation Wizard ile yeni bir Virtual Directory oluşturulur.
190
Modül 6:
.NET Framework Kurulumu
ASP.NET ile uygulama geliştirmek için .NET Framework’ün kurulu olmasõ gerekir. Framework’ün, SDK olarak isimlendirilen 130MB’lõk full versiyonu ve yalnõ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 Framework 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. Windows 2000 işletim sisteminde minimum SP2 yapõlandõrmasõ gereklidir.
ASP.NET’e Giriş
Modül Özeti
1. ASP nedir?
2. ASP çalõşma modelini açõklayõn.
3. ASP .Net uygulamasõnõ oluşturan bileşenler nelerdir?
4. IIS nedir?
191
192
Modül 6:
Lab 1: Web Tabanlõ Uygulamalarõn
Yayõnlanmasõ
Bu uygulamada IIS (Internet Information Services) kurulumu öğreneceksiniz.
Aynõ zamanda IIS ile Web tabanlõ uygulamalarõn yayõnlanmasõnõ öğreneceksiniz.
IIS (Internet Information Services) Kurulmasõ
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 Services (IIS) seçeneğini işaretleyin.
4. Next düğmesini tõklayarak kurulumu başlatõn.
Uygulama Yayõnlamak
Default.htm ismindeki HTML sayfayõ IIS üzerinden yayõnlayõn.
1. C:\Inetpub\wwwroot klasörüne gidin.
2. wwwroot penceresi içinden Dosya menüsünü tõklayõn.
3. Dosya menüsü içinden Yeni alt menüsünü tõklayõn.
4. Yeni alt menüsü içinden Metin Belgesi komutunu vererek Yeni Metin
Belgesi oluşturun.
193
ASP.NET’e Giriş
5. Oluşturduğunuz metin belgesi içine aşağõdaki HTML (Hyper Text
Markup Language) kodlarõnõ ekleyin ve dosyayõ kaydedin.
<html>
<head>
<title>HTMLPage1</title>
</head>
<body>
<p>Hoş Geldiniz.</p>
</body>
</html>
6. Metin belgesinin ismini Default.htm olarak değiştirin.
7. Internet Explorer açõn ve aşağõdaki adreslerden herhangi birini adres
çubuğuna yazõn.
a. http://localhost
b. http://127.0.0.1
c. http://MakinaAdõ
d. http://IpNumarasõ
localhost: Lokal makine adõ.
127.0.0.1 : Lokal IP numarasõ.
MakinaAdõ: Ağ içindeki bilgisayar adõ.
IpNumarasõ: Ağ içindeki Ip Numarasõ.
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
ASP.NET ile uygulama geliştirirken kullanõlan temel bileşenler Web Formlar ve
Web kontrolleridir. Web Form, IIS tarafõndan çalõştõrõlan HTML kod ve kontrollerin birleşiminden oluşur. Bu formlara eklenen kontroller, sunucu veya istemci
taraflõ çalõşabilirler.
Bu modül tamamlandõktan sonra;
! Web Form yapõsõnõ ve bileşenlerini öğrenecek,
! Sunucu ve istemci taraflõ kontrollerin farklarõnõ öğrenecek,
! Web kontrollerini tanõyacak,
! ViewState ve PostBack kavramlarõnõ öğreneceksiniz.
198
Modül 7:
Konu 1: Web Form Bileşenleri
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 sunucu 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 programcõsõna ve Web tasarõmcõsõna ayrõ kaynaklar sunarak bağõmsõz çalõşma ortamõ 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 kodlarõ bulunur.
ASP.NET Web Form ve Kontrolleri ile Çalõşmak
Web Formlarõn genel özellikleri aşağõdaki gibidir.
! @Page Özelliği
! Body Özelliği
! Form Özelliği
199
200
Modül 7:
Page Özelliği
Tüm sayfa içinde tanõmlanacak fonksiyonlarõn değerlerini içerir. <@Page> etiketi
ile gösterilir ve her .aspx uzantõlõ dosyada bulunmasõ gerekir.
<@Page> etiketinde, sayfanõn yapõsõ ile ilgili özellikler bulunur.
Language
Sayfa içinde kullanõlacak dil seçeneğini bildirilir. ASP.NET uygulamalarõnda genellikle VB ve C# dilleri tercih edilir.
<”@Page Language=”vb”
…”>
<”@Page Language=”c#”
…”>
CodeBehind
Web formlarõn, Visual Basic .NET veya C# uzantõlõ kod dosyasõnõ belirtir.
<@Page CodeBehind=”WebForm1.aspx.vb” …>
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 konumunda kalõr. Bu özellik Internet Explorer 5.5 ve üstü tarayõcõlar tarafõndan
desteklenir.
<@Page Language=”vb” CodeBehind=”WebForm1.aspx.vb” _
SmartNavigation=”True” >
ASP.NET Web Form ve Kontrolleri ile Çalõşmak
201
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 üzerinde 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.
<@Page EnableViewState=”True” …>
Ayrõca kontrol düzeyinde EnableViewState özelliği kullanõlabilir. Bu durumda,
Page yönerge satõrõnda belirtilen değer geçersiz olur.
<asp:Button … EnableViewState=”false“ …>
202
Modül 7:
Body Özelliği
Web sayfasõnõn ana bölümüdür.
<body> etiketi ile web formun gövdesi oluşturulur. Kullanõlan her kontrol
<body> ... </body> etiketleri arasõnda bulunmalõdõr.
body etiketi içinde PageLayout(ms_positioning) özelliği tanõmlanabilir.
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õralanõ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 alabilir:
! Post: İsim ve değer bilgilerini, HTML bilgisinin üst bilgisine yazarak
gönderir.
<form method=”Post” …>
! Get İsim ve değer bilgilerini, sayfa adõnõn sonuna ekleyerek gönderir.
<form method=”Get” …>
Id
Formun isim bilgisini verir. CodeBehind sayfasõ içinde, forma işlem yaptõrmak
için kullanõlõr.
<form id=”deneme” …>
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.
<form
runat=”server” …>
204
Modül 7:
Konu 2: Server (Sunucu) Kontroller
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 kontrolleri 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.
<asp:Button id=”Buton1” runat=”server” Text=”Tõklayõnõz” />
Örnekte istemci tarafõnda çalõşan HTML Button kontrolü gösterilmektedir.
<INPUT type=”button” value=”Bu Bir Html Button” >
Bu kontrolün sunucu tarafõnda çalõşmasõ için, kontrole runat özelliği eklenmelidir. Böylece kontrol HTML server kontrolü haline getirilir.
<INPUT type=”button” id=”button1”
value=”Bu Bir Html Button”
>
runat=”server” _
ASP.NET Web Form ve Kontrolleri ile Çalõşmak
205
Konu 3: Kontrollerin Sõnõflandõrõlmasõ
ASP.NET Web kontrolleri dört grupta listelenir:
1. Standart Kontroller (ListBox, Button, CheckBox, Table vs.)
2. Doğrulama Kontrolleri (RequiredFieldValidator, RangeValidator,
CompareValidator,
RegularExpressionValidator,
CustomValidator, ValidationSummary)
3. Zengin Kontroller (Calendar, Adrotator)
4. İlişkisel Liste Tabanlõ Kontroller (DataGrid, DataList, Repeater)
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.
<asp:TextBox runat=”server” id=”giris” Text=”Hoş Geldiniz”>
</asp:TextBox>
Bu kontrollerin avantajlarõ aşağõdaki gibidir:
! Benzer kontrollere düzenli biçimde isimler verilir.
! Tüm kontroller aynõ genel özelliklere sahiptir.
! Tarayõcõ için özel kodlar kendiliğinden üretilir.
Bu grupta bulunan kontrollerin tümü id, text, backcolor, runat özelliklerine
sahiptir. Ancak CheckBox kontrolünün Checked ve ListBox kontrolünün
SelectedItem özellikleri vardõr.
206
Modül 7:
Tablo 7.1’de Html ve Standart sunucu kontroller gösterilmektedir.
Tablo 7.1: Standart Kontroller
Web kontrol
Html Kontrol
<asp:Button>
<input type=submit>
<asp:CheckBox>
<input type=checkbox>
<asp:HyperLink>
<a href=”...”> </a>
<asp:image>
<img src=”..”>
<asp:imageButton>
<input type=image>
<asp:LinkButton>
Yok
<asp:Label>
<span> </span>
<asp:ListBox>
<select size=”5”> </select>
<asp:Panel>
<div> </div>
<asp:TextBox>
<input type=text>
<asp:RadioButton>
<input type=radiobutton>
<asp:DropDownList>
<select> </select>
<asp:Table>
<table> </table>
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 saylarõ üzerinde Takvim göstermek için kullanõlõr.
İlişkisel Liste Tabanlõ Kontroller
Bu kontroller, veritabanõndan çekilen kayõtlarõn gösterilmesini sağlar. DataList,
DataGrid ve Repeater kontrolleri bu grupta yer alõr.
ASP.NET Web Form ve Kontrolleri ile Çalõşmak
207
Konu 4: Standart Kontroller
Label
Label, kullanõcõya bilgi vermek için kullanõlõr.
<asp:Label runat="server" Text="Label Control" FontItalic="true" />
Bu kontrol, Internet Explorer tarayõcõsõnda şu şekilde gösterilir:
<span style="font-style:italic;">Label Control</span>
TextBox
TextBox, kullanõcõnõn bilgi girişini sağlar. En sõk kullanõlan giriş .kontrolüdür.
<asp:TextBox id="userName" type="text" runat="server">
Bu kontrol, Internet Explorer tarayõcõsõnda şu şekilde gösterilir.
<input name="userName" id="userName" type="text" />
Web kontroller, WebControl sõnõfõndan türemişlerdir. Bu yüzden Web kontroller
BackColor, BorderColor, Enabled, Font, Height, Width özelliklerine sahiptir.
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:
Örnekte, Dugme1 isimli düğme tõklandõğõnda, Label kontrolüne mesaj yazõlõr.
<asp:Button id="Dugme1" runat="server" Text="Tõklayõnõz"
OnClick="Dugme1_Click" runat="server"/>
<span id="Message" runat="server" />
Sub Dugme1_Click(Sender As Object, e As EventArgs)
Message.InnerHtml="Beni Tõkladõn."
End Sub
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.
Sub Check_Clicked(Sender As Object, e As EventArgs)
If checkbox1.Checked Then
Message.InnerHtml="Seçili"
Else
Message.InnerHtml="Seçili Değil"
End If
End Sub
<asp:CheckBox id="checkbox1" runat="server"
AutoPostBack="True"
Text="Üye Olmak İster misiniz?"
TextAlign="Right"
OnCheckedChanged="Check_Clicked"/>
<br>
<span id="Message" runat="server" />
ASP.NET Web Form ve Kontrolleri ile Çalõşmak
209
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.
Sub BtnOnay_Clicked(Sender As Object, e As EventArgs)
If Radio1.Checked Then
Message.InnerHtml = "Seçiminiz" + Radio1.Text
ElseIf Radio2.Checked
Message.InnerHtml = " Seçiminiz " + Radio2.Text
ElseIf Radio3.Checked
Message.InnerHtml = " Seçiminiz " + Radio3.Text
End If
End Sub
<h4>Beğendiğiniz müzik türünü seçiniz:</h4>
<asp:RadioButton id=Radio1 Text="Pop" Checked="True'
GroupName="muzik" runat="server"/>
<br>
<asp:RadioButton id=Radio2 Text="Jazz"
GroupName="muzik" runat="server"/>
210
Modül 7:
<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.
<asp:HyperLink id="hyperlink1" runat="server"
ImageUrl="image1.gif"
NavigateUrl="http://www.bilgeadam.com"
Text="Bilge Adam BTA"
Target="_blank"/>
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.
Tablo 7.2: Target Özelliğinin Değerleri
Target Özelliği
Açõklama
_blank
Yeni sayfa
_self
Aynõ sayfa içinde
_search
Arama sayfasõ görünümünde
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.
<asp:Image id="Image1" runat="server"
AlternateText="Logomuz"
ImageAlign="left"
ImageUrl="logo.gif"/>
ImageButton
ImageButton resimli düğme kontrolüdür.
ASP.NET Web Form ve Kontrolleri ile Çalõşmak
211
Örnekte, ImageButton kullanõmõ gösterilmektedir.
Sub ImageButton_Click(Source As object, e As _
ImageClickEventArgs)
Message.InnerHtml="Resimli Düğme kontrolünü Tõkladõnõz" _
& "Koordinatlar: (" & e.X.ToString() & ", " & _
e.Y.ToString() & ")"
End Sub
<asp:ImageButton id="imagebutton1" runat="server"
AlternateText="Resimli Düğme Kontrolü"
ImageAlign="right"
ImageUrl="image1.gif"
OnClick="ImageButton_Click"/>
<br><br>
<span id="Message" runat="server"/>
ImageButton kontrolünün ImageClickEventArgs argüman nesnesi kullana-
rak, kontrolün bulunduğu yerin koordinat değerleri alõnabilir.
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.
Sub LinkButton1_Click(sender As Object, e As EventArgs)
Label1.Text="Link Button’a tõkladõnõz"
End Sub
<asp:LinkButton Text="Mesajõ Görmek İçin Tõklayõnõz."
Font-Name="Verdana" Font-Size="14pt"
onclick="LinkButton1_Click" runat="server"/>
<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 zamanõnda öğe eklenebilir.
Örnekte, DropDownList kontrolüne tasarõm zamanõnda öğe eklenmektedir.
Sub Button_Click(sender As Object, e As EventArgs)
Label1.Text = "Konuştuğunuz Dil " &
dropdownlist1.SelectedItem.Text & "."
End Sub
<asp:DropDownList id="dropdownlist1" runat="server">
<asp:ListItem>Türkçe</asp:ListItem>
<asp:ListItem>İngilizce</asp:ListItem>
<asp:ListItem>Almanca</asp:ListItem>
<asp:ListItem>İtalyanca</asp:ListItem>
</asp:DropDownList>
<asp:Button id="Button1" Text="Submit"
OnClick="Button_Click" runat="server"/>
<asp:label id="Label1" runat="server"/>
ListItem etiketi içindeki değerler, DropDownList öğelerini temsil eder.
Örnekte, DropDownList kontrolüne çalõşma zamanõnda öğe eklenmektedir.
<asp:DropDownList id="DropDownList1" style="Z-INDEX: 101;
LEFT: 128px; POSITION: absolute; TOP: 160px"
runat="server" Width="152px"/>
ASP.NET Web Form ve Kontrolleri ile Çalõşmak
213
Sub Page_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
Dim i As Integer
For i = 0 To 5
DropDownList1.Items.Add(i.ToString)
Next
End Sub
Çalõşma zamanõnda eleman eklemek için, Items koleksiyonunun Add metodu
kullanõlõr.
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.
Sub SubmitBtn_Click(ByVal sender As Object,_
ByVal e As EventArgs)
Dim item As ListItem
Message.Text = ""
For Each item In ListBox1.Items
If item.Selected = True Then
Message.Text += item.Text + " "
End If
Next
End Sub
<asp:ListBox id=ListBox1 Rows=4
SelectionMode="Multiple" Width="100px" runat="server">
<asp:ListItem>Türkçe</asp:ListItem>
<asp:ListItem>İngilizce</asp:ListItem>
<asp:ListItem>Almanca</asp:ListItem>
<asp:ListItem>İtalyanca</asp:ListItem>
</asp:ListBox>
<br>
<asp:button Text="Submit" OnClick="SubmitBtn_Click"
runat="server" />
<br>
<asp:Label id="Message" runat="server"/>
214
Modül 7:
Panel
Panel, diğer kontrolleri gruplandõrmak için kullanõlõr.
Örnekte, panel kullanõmõ gösterilmektedir.
Sub Button1_Click(sender As Object, e As EventArgs)
' Label kontrolü oluşturalõm
Dim label As Label
label = new Label()
label.Text = "Etiket"
label.ID = "Label1"
Panel1.Controls.Add(label)
Panel1.Visible = true
End Sub
<asp:Panel id="Panel1" runat="server"
BackColor="blue"
Height="150px"
Width="200px"
Visible=false>
Panel1
<p>
</asp:Panel>
<asp:Button id="Button1" onClick="Button1_Click"
Text="Panel’i Göster" runat="server"/>
Panel1 isimli panel kontrolü başlangõçta gösterilmemektedir Button1 düğmesi
tõklanõnca, panel kontrolünün içine Label kontrolü eklenir ve görünür hale.
getirilir. BackImageUrl özelliği ile panele arka plan resmi verilir.
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.
Sub Page_Load(Sender As Object, e As EventArgs)
' Satõr ve Sütun Oluşumu
Dim nrows As Integer = 3
Dim ncells As Integer = 2
Dim i As Integer
ASP.NET Web Form ve Kontrolleri ile Çalõşmak
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
<asp:Table id="Table1" GridLines="Both"
HorizontalAlign="Center" Font-Name="Verdana"
Font-Size="8pt" CellPadding=15 CellSpacing=0
Runat="server"/>
215
216
Modül 7:
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 kontrolleri geliştirildi. 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. Tablo 7.3’te doğrulama kontrolleri listelenmiştir.
Tablo 7.3: Doğrulama Kontrolleri
Validation Kontrolleri
Görevi
RequiredFieldValidator
Bir kontrol içine değer girilip girilmediğini
kontrol eder. Veri girilmesi zorunlu alanlarda
kullanõlõr.
CompareValidator
Kontrol içine girilen değeri, sabit değerle veya
başka bir kontrole girilen değerle karşõlaştõrõr.
RangeValidator
Kontrol içine girilen değerin, İki sabit değer
arasõnda olmasõnõ sağlar.
RegularExpressionValidator
Bir kontrol içine girilen değerin istenilen
formatta girilmesini sağlar.
CustomValidator
Özel doğrulama kontrolü yazmayõ sağlar.
ValidationSummary
Sayfada kullanõlan tüm Validation kontrollerin,
doğrulama hatalarõnõ özet olarak görüntüler.
ASP.NET Web Form ve Kontrolleri ile Çalõşmak
217
Doğrulama kontrollerinin ortak özellikleri aşağõdaki gibidir:
! ControlToValidate: Hangi kontrolün doğrulanacağõnõ belirtir.
! ErrorMessage: Geçerli giriş yapõlmamõşsa görüntülenecek hata mesajõnõ verir.
! Text: ErrorMessage ve Text özelliği birlikte kullanõlabilir. Bu durumunda Text özelliğindeki mesaj görüntülenir. Doğrulama kontrollerin
ErrorMessage özelliğine girilen tüm mesajlar ValidationSummary
içinde listelenir.
! Display: Validation kontrolün nasõl görüntüleneceği bilgisini tutar.
Static, Dynamic ve None değerlerini alõr.
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õrmak 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õlacaksa 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ğrulama 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>
219
ASP.NET Web Form ve Kontrolleri ile Çalõşmak
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>
Tablo 7.4: Kontrol Karakterleri
Karakter
Tanõmõ
a
Bir harf kullanõmõnõ zorunlu kõlar.
1
1 sayõsõ kullanõlmak zorunda.
?
0 veya 1 öğe olmak zorunda.
*
0’dan n’e kadar bir değer.
+
1’den n’e kadar bir değer.
[0-n]
0’dan n’e kadar sayõ değer dizisi.
{n}
N ile belirtilen değer uzunluğunda olmalõ.
|
Farklõ geçerli dizinler.
220
Modül 7:
Tablo 7.4: Kontrol Karakterleri
Karakter
Tanõmõ
\
Bir komut karakterini devam ettiren karakter.
\w
Bir karakter olmak zorunda.
\d
Bir rakam olmak zorunda.
\.
Bir nokta olmak zorunda.
Örnekte ValidationExpression özelliğine girilen özel karakterler ile e-mail
formatõ oluşturulmaktadõr.
ValidationExpression=
"\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*">
\w+ : En az bir karakter içeren metin anlamõna gelir.
([-+.]) : -, +, . karakterlerinden herhangi biri anlamõna gelir.
* : 0’dan n’e kadar bir değer girilmesi gerektiği anlamõna gelir.
@ : @ işaretinin kullanõlmasõ gerektiğini belirtir.
Örnekte ValidationExpression özelliğine girilen özel karakterler ile e-mail
formatõ oluşturulmaktadõr.
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.
Tablo 7.5: CustomValidator Kontrolünün Özellikleri
Özellik
Açõklama
ClientValidationFunction
İstemci fonksiyon ismini belirtir.
ControlToValidate
Doğrulama yapõlacak kontrolü belirler.
Display
Text özelliğine girilen hata mesajõnõn nasõl
EnableClientScript
İstemci script’leri aktif hale getirir. Varsayõlan de-
görüntüleneceği belirtir.
ğer True’dur.
Enabled
Sunucu ve istemci taraflõ script’leri aktif hale getirir. Varsayõlan değer True’dur.
ErrorMessage
Kontrol hata mesajõnõ gösterir.
IsValid
Kontrol işlemi başarõ ile sonuçlanmõşsa True, değilse False değerini döndürür.
Text
Kontrol hata mesajõnõ gösterir. ErrorMessage
ve Text özelliği birlikte kullanõlabilir. Bu durumunda Text özelliğindeki mesaj görüntülenir.
ASP.NET Web Form ve Kontrolleri ile Çalõşmak
221
ServerValidate olayõ ve OnServerValidate metodu ile sunucu taraflõ
kontroller tetiklenir.
Örnekte, sunucu taraflõ metot oluşturulmaktadõr:
Sub CustomValidator_SunucuKontrol _
(s as Object, e as ServerValidateEventArgs)
‘...
End Sub
ServerValidateEventArgs parametresinin iki özelliği vardõr:
! 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:
<form id="Form1" method="post" runat="server">
<asp:Button id="Button1" style="Z-INDEX: 101; LEFT:
200px; POSITION: absolute; TOP: 96px" runat="server"
Text="gonder" onClick=”gonder_OnClick”>
</asp:Button>
<asp:CustomValidator id="CustomValidator1"
style="Z-INDEX: 102; LEFT: 312px; POSITION: absolute;
TOP: 64px" runat="server"
ErrorMessage="çift rakam giriniz."
ControlToValidate="txtcustom" Display="Static"
OnServerValidate="ServerKontrol">
</asp:CustomValidator>
<asp:TextBox id="txtmessage" style="Z-INDEX: 103;
LEFT: 200px; POSITION: absolute; TOP: 152px"
runat="server">
</asp:TextBox>
<asp:TextBox id="txtcustom" style="Z-INDEX: 104;
LEFT: 144px; POSITION: absolute; TOP: 64px"
runat="server">
</asp:TextBox>
</form>
222
Modül 7:
CustomValidator kontrolünün VB.NET kodlarõ aşağõdaki gibidir:
Sub ServerKontrol(ByVal source As Object, _
ByVal args As ServerValidateEventArgs)
Dim num As Integer = Integer.Parse(args.Value)
If args.Value = ((num Mod 2) = 0) Then
args.IsValid = True
Else
args.IsValid = False
End If
End Sub
Sub gonder_OnClick(ByVal sender As Object, _
ByVal e As EventArgs)
If Page.IsValid Then
txtmessage.Text = "Sayfada Hata Yok."
Else
txtmessage.Text = "Sayfa Hatalõ!"
End If
End Sub
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>
ile ValidationSummary kontrolünün görüntüsü
değiştirilebilir. DisplayMode, BulletList, List ve SingleParagraph değerlerini alõr. ShowMessageBox, hata listesinin mesaj kutusu içinde görüntülenmesini
sağlar.
DisplayMode
özelliği
ASP.NET Web Form ve Kontrolleri ile Çalõşmak
223
Konu 6: Zengin Kontroller
AdRotator
AdRotator, Web sayfalarõ üzerinde reklam yayõnõ yapmak için kullanõlõr. Reklam için kullanõlan banner nesneleri XML dosya içine kaydedilir.
Örnekte, AdRotator kullanõmõ için gerekli XML dosya (Ads.Xml) gösterilmektedir:
<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:
! Ad: Her bir banner nesnesini temsil eder.
! ImageUrl: Banner içinde görüntülenecek resim dosyasõnõ belirtir.
NavigateUrl: Gidilecek sayfanõn adres bilgisini belirtir.
! AlternateText: Resme alternatif metin göstermek için kullanõlõr.
! Impression: Banner resimlerinin uygulama süresini belirtir.
! Keyword:.Banner nesneleri arasõnda filtreleme oluşturacak kategori
adõnõ belirler.
dRotator kontrolünün AdvertisementFile özelliği, reklam bilgilerinin bulunduğu XML dosyayõ içerir. KeywordFilter özelliği ise reklamlarõn filtrelenerek
görüntülenmesini sağlar.
Calendar
Calendar, Web saylarõ üzerinde takvim göstermek için kullanõlõr.
Örnekte, Calendar kullanõmõ gösterilmektedir:
<asp:Calendar
id=”takvim” runat=”server”/>
Calendar kontrolüne ait özellikler Tablo 7.6’da listelenmiştir.
Tablo 7.6: Calendar Kontrolünün Özellikleri
Özellik
Açõklama
CellPadding
Hücreler ve kenarlõklarõ arasõndaki boşluk değerini tutar.
CellSpacing
Hücreler arasõndaki boşluk değerini tutar.
DayNameFormat
Gün isimlerinin görüntülenme biçimini tutar.
FirstLetter, FirstTwoLetters, Full ve Short değerleri vardõr. Varsayõlan Short değeridir.
FirstDayOfWeek
Haftanõn ilk gününü belirtir.
NextPrevFormat
Next ve Previous linklerinin biçimini ayarlar. CustomText,
FullMonth, ShortMonth değerleri alõr. Varsayõlan
CustomText değeridir.
SelectedDate
Seçilen gün bilgisini tutar. Varsayõlan değer günün tarihidir.
SelectionMode
Calendar nesnesinin seçim modunu belirler. Day,
DayWeek, DayWeekMonth ve None değerleri alõr. Varsayõlan seçenek Day değeridir.
ShowDayHeader
Gün isimlerini kolonlarõn üzerinde görüntüler.
ShowGridLines
Günleri hücreler içinde görüntüler.
ShowNextPrevMonth
Önceki ve sonraki ay linklerinin görüntülenmesini sağlar.
ShowTitle
Takvim başlõğõnõ görüntüler.
TitleFormat
Başlõk yazõsõnõn biçimini belirtir.
Örnekte Calendar kullanõmõ gösterilmektedir:
ASP.NET Web Form ve Kontrolleri ile Çalõşmak
225
<asp:Calendar id="Calendar1" style="Z-INDEX: 105; LEFT:
160px; POSITION: absolute; TOP: 248px"
runat="server" CellSpacing="2" Width="240px"
Height="152px" BorderStyle="Groove" DayNameFormat="Full"
NextPrevFormat="FullMonth">
<DayStyle Font-Bold="True" HorizontalAlign="Center"
BorderStyle="None" BorderColor="Transparent"
VerticalAlign="Top" BackColor="LightCyan">
</DayStyle>
<DayHeaderStyle Font-Underline="True" Font-Italic="True"
HorizontalAlign="Right" BorderWidth="3px"
ForeColor="DarkBlue" BorderStyle="Groove"
BorderColor="#C0FFFF" VerticalAlign="Top"
BackColor="#FFC0FF">
</DayHeaderStyle>
<WeekendDayStyle BackColor="Salmon"></WeekendDayStyle>
</asp:Calendar>
226
Modül 7:
Konu 7: AutoPostBack Özelliği
AutoPostBack özelliği, herhangi bir sunucu kontrolünün Web sunucuya
otomatik olarak bilgi göndermesini sağlar. Web formu doldurduktan sonra
sunucuya göndermek için genellikle Button kontrolü kullanõlõr.
AutoPostBack özelliği, DropDownList, ListBox, CheckBox, CheckBoxList,
RadioButton, RadioButtonList, TextBox ve Button kontrolünde bulunur.
Bu özelliğin True olmasõ, seçim yapõldõğõnda veya TextBox kontrolüne yeni bir
değer girildiğinde sayfanõn yeniden yüklenmesi anlamõna gelir.
Örnekte AutoPostBack kullanõmõ gösterilmektedir:
<%@ Page Language="VB" Debug="true" %>
<html>
<head></head>
<body>
<form runat="server">
Bilgiğiniz Yabancõ Dili Seçiniz:<br/><br/>
<asp:listbox id="lstDiller" runat="server" rows="3"
AutoPostBack="true"
onSelectedIndexChanged="secimGoster"/>
<br><br>
<asp:Label id=lblMesaj runat="server" /> <br/><br/>
</form>
</body>
</html>
<script language=vb runat="server">
ASP.NET Web Form ve Kontrolleri ile Çalõşmak
227
Sub Page_Load(source As Object, e As EventArgs)
If Not Page.IsPostBack Then
lstFlowers.Items.Add(New ListItem("İngilizce"))
lstFlowers.Items.Add(New ListItem("Almanca"))
lstFlowers.Items.Add(New ListItem("Fransõzca"))
lstFlowers.SelectedIndex=0
End If
End Sub
Sub showSelection(source As Object, e As EventArgs)
lblMesaj.Text="Seçtiğiniz Dil " + _
lstDiller.SelectedItem.Text
End Sub
</script>
AutoPostBack özelliğinin gereksiz yere kullanõlmasõ performansõ olumsuz
yönde etkiler.
228
Modül 7:
Konu 8: ViewState
ViewState, kullanõcõ ve sunucu arasõnda taşõnan verilerin gizli bir alanda
şifrelenerek saklanmasõnõ sağlar. Forma ait tüm kontrollerin değerleri şifrelenir
ve VIEWSTATE değişkende saklanõr. Form sunucuya gönderildikten sonra bir
hata oluşmasõ halinde kullanõcõdan tekrar aynõ verilerin girilmesi istenmez.
Çünkü kullanõcõnõn girmiş olduğu değerler bu gizli değişkende saklanõr ve sayfa
açõlõnca tekrar kullanõcõya sunulur.
Örnekte ViewState kullanõmõ gösterilmektedir:
<input type="hidden" name="__VIEWSTATE"
value="dDwtMTY5NzI1NjkxNzs7Po5lYTu9gAdJkhGyy1Rw1gGcc+ia" />
ASP.NET Web Form ve Kontrolleri ile Çalõşmak
Modül Özeti
1. Web form bileşenlerini açõklayõn.
2. Standart kontroller nelerdir? Açõklayõn.
3. Doğrulama kontrolleri nelerdir? Açõklayõn.
4. Zengin kontroller nelerdir? Açõklayõn.
5. AutoPostBack nedir?
6. ViewState özelliğini açõklayõn.
229
230
Modül 7:
Lab 1: E-Ticaret Uygulamasõ
Geliştirmek
Bu uygulamada, e-ticaret uygulamasõnõn Web formlarõ tasarlanacaktõr. E-ticaret uygulamasõ içinde müşterilerinin kendi kayõtlarõnõ yapabilmesi için UyeKayit
formu tasarlanacaktõr. Kayõt olan müşterilerin ürün satõn alabilmesi için sisteme
giriş yapmalarõ gerekir. Kayõtlõ müşterilerin sisteme girişi UyeGiris formu ile
sağlanõr. Her iki form içinde standart ve doğrulama kontrolleri kullanõlacaktõr.
Ayrõca kullanõcõyõ yönlendirmek için Giris, Kayõt ve Satis isminde 3 ayrõ
Web form tasarlanacaktõr.
Bu lab tamamlandõktan sonra;
! Access veritabanõna bağlantõ oluşturabilecek,
! Web Formlarõ tanõyacak,
! Standart Kontrolleri kullanabilecek,
! Doğrulama kontrollerini kullanabileceksiniz.
Veritabanõnõn Projeye Eklenmesi
Bu uygulamada kullanõlacak Course veritabanõ oluşturun.
1. Microsoft Access ile KitapDb isminde bir veritabanõ oluşturun.
2. Veritabanõn tablolarõnõ aşağõdaki diyagrama göre oluşturun.
231
ASP.NET Web Form ve Kontrolleri ile Çalõşmak
RESİM 7.1.
3. Veritabanõ içinde EnCokSatanlar isminde sorgu oluşturun.
4. Sorgunun içine aşağõdaki Select cümlesini ekleyin.
SELECT Kitap.KitapAdi, Kitap.Ucret, Kitap.KitapID
FROM Kitap INNER JOIN Siparis ON
Kitap.KitapID=Siparis.KitapID
GROUP BY Kitap.KitapAdi, Kitap.Ucret, Kitap.KitapID
ORDER BY Count(Siparis.Adet) DESC;
Web Formlarõn Eklenmesi
AspEticaret isminde yeni bir ASP.NET Web Application projesi açõn.
UyeKayit Formunun Eklenmesi
ASPEticaret projesine UyeKayõt isminde yeni bir Web form ekleyin.
Form üzerine, tablodaki kontrolleri ekleyin belirtilen özelliklerini ayarlayõn.
Kontrol – Kontrol İsmi
Özellik
Değer
TextBox – txtSifre
TextMode
Password
TextBox – txtSifreDogrula
TextMode
Password
RequiredFieldValidator –
rfvAd
ControlToValidate
txtAd
ErrorMessage
Adõ boş
geçemezsiniz
Text
*
ControlToValidate
txtSoyad
TextBox – txtAd
TextBox – txtSoyad
TextBox – txtEmail
RequiredFieldValidator –
rfvSoyad
232
Modül 7:
Kontrol – Kontrol İsmi
RequiredFieldValidator –
rfvEmail
RequiredFieldValidator –
rfvSifre
RequiredFieldValidator –
rfvSifre2
RegularExpressionValidator
– revEmail
CompareValidator–
cvSifreDogrula
Özellik
Değer
ErrorMessage
Soyadõ boş
geçemezsiniz
Text
*
ControlToValidate
txtEmail
ErrorMessage
E-maili boş
geçemezsiniz
Text
*
ControlToValidate
txtSifre
ErrorMessage
Şifreyi
giriniz.
Text
*
ControlToValidate
txtSifreDogrula
ErrorMessage
Doğrulama
şifresini
giriniz
Text
*
ControlToValidate
txtEmail
ErrorMessage
Hatalõ Email
Text
*
Validation
Expression
\w+([+.]\w+)*@\w+([.]\w+)*\.\w+([.]\w+)*
ControlToCompare
txtSifre
ControlToValidate
txtSifre2
ErrorMessage
Şifreler
uyumsuz
Text
*
Text
Kaydet
ValidationSummary – vsHata
Button – btnKaydet
ASP.NET Web Form ve Kontrolleri ile Çalõşmak
233
RESİM 7.2.
UyeKayit Web formunun HTML kodlarõ aşağõdaki gibi olacaktõr:
<%@ Register TagPrefix="uc1" TagName="yan" Src="yan.ascx" %>
<%@ Page Language="vb" AutoEventWireup="false"
Codebehind="UyeKayit.aspx.vb"
Inherits="AspEticaret.UyeKayit" %>
<%@ Register TagPrefix="uc1" TagName="kategori"
Src="kategori.ascx" %>
<%@ Register TagPrefix="uc1" TagName="Ust" Src="Ust.ascx" %>
<%@ Register TagPrefix="uc1" TagName="Alt" Src="Alt.ascx" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0
Transitional//EN">
<HTML>
<HEAD>
<title>UyeKayit</title>
<meta content="Microsoft Visual Studio .NET 7.1"
name="GENERATOR">
<meta content="Visual Basic .NET 7.1"
name="CODE_LANGUAGE">
<meta content="JavaScript"
name="vs_defaultClientScript">
<meta
content="http://schemas.microsoft.com/intellisense/ie5"
name="vs_targetSchema">
</HEAD>
<body bgColor="#f0fff0">
<form id="Form1" method="post" runat="server">
<TABLE id="Table1" cellSpacing="0" cellPadding="0"
width="700" align="center" border="0">
<TR>
<TD bgColor="#99ccff" colSpan="3"><uc1:ust
id="Ust1" runat="server"></uc1:ust></TD>
</TR>
<TR>
234
Modül 7:
<TD vAlign="top" width="150"><uc1:kategori
id="Kategori1" runat="server"></uc1:kategori></TD>
<TD width="400" height="100%">
<P>
<TABLE id="Table2" cellSpacing="0"
cellPadding="0" width="300" align="center" border="0">
<TR>
colSpan="2">
<TD style="HEIGHT: 48px"
<P align="center"><FONT
face="Tahoma" size="2"><STRONG>Üyelik
Bilgileri</STRONG></FONT></P>
</TD>
</TR>
<TR>
<TD style="WIDTH: 100px"><FONT
face="Tahoma" size="2">Ad*</FONT></TD>
<TD><asp:textbox id="txtAd"
runat="server"
Width="176px"></asp:textbox><asp:requiredfieldvalidator
id="rfvAd" runat="server" ControlToValidate="txtAd"
ErrorMessage="Adõ boş
geçemezsiniz">*</asp:requiredfieldvalidator><FONT
face="Tahoma" size="2"></FONT></TD>
</TR>
<TR>
<TD style="WIDTH: 100px"><FONT
face="Tahoma" size="2">Soyad*</FONT></TD>
<TD><asp:textbox id="txtSoyad"
runat="server"
Width="176px"></asp:textbox><asp:requiredfieldvalidator
id="rfvSoyad" runat="server" ControlToValidate="txtSoyad"
ErrorMessage="Soyadõ boş
geçemezsiniz.">*</asp:requiredfieldvalidator><FONT
face="Tahoma" size="2"></FONT></TD>
</TR>
<TR>
<TD style="WIDTH: 100px"><FONT
face="Tahoma" size="2">E-Mail*</FONT></TD>
<TD><asp:textbox id="txtEmail"
runat="server"
Width="176px"></asp:textbox><asp:requiredfieldvalidator
id="rfvEmail" runat="server" ControlToValidate="txtEmail"
ErrorMessage="E-maili boş geçemezsiniz. "
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>
UyeGiris Formunun Eklenmesi
ASPEticaret projesine UyeGiris isminde yeni bir Web form ekleyin.
Form üzerine, tablodaki kontrolleri ekleyin belirtilen özelliklerini ayarlayõn.
Kontrol – Kontrol İsmi
Özellik
Değer
TextBox – txtSifre
TextMode
Password
Text
*
Button – btnGiris
Text
Giriş
Label – lblMesaj
Text
TextBox – txtEmail
RESİM 7.3.
UyeGiris Web formunun HTML kodlarõ aşağõdaki gibi olacaktõr:
237
ASP.NET Web Form ve Kontrolleri ile Çalõşmak
<%@ Register TagPrefix="uc1" TagName="kategori"
Src="kategori.ascx" %>
<%@ Register TagPrefix="uc1" TagName="Ust" Src="Ust.ascx" %>
<%@ Register TagPrefix="uc1" TagName="Alt" Src="Alt.ascx" %>
<%@ Register TagPrefix="uc1" TagName="yan" Src="yan.ascx" %>
<%@ Page Language="vb" AutoEventWireup="false"
Codebehind="UyeGiris.aspx.vb"
Inherits="AspEticaret.UyeGiris" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0
Transitional//EN">
<HTML>
<HEAD>
<title>UyeGiris</title>
<meta name="GENERATOR" content="Microsoft Visual
Studio .NET 7.1">
<meta name="CODE_LANGUAGE" content="Visual Basic .NET
7.1">
<meta name="vs_defaultClientScript"
content="JavaScript">
<meta name="vs_targetSchema"
content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body bgColor="#f0fff0">
<form id="Form1" method="post" runat="server">
<TABLE id="Table1" cellSpacing="0" cellPadding="0"
width="700" align="center" border="0">
<TR>
<TD bgColor="#99ccff" colSpan="3">
<uc1:Ust id="Ust1"
runat="server"></uc1:Ust></TD>
</TR>
<TR>
<TD width="150" vAlign="top">
<uc1:kategori id="Kategori1"
runat="server"></uc1:kategori></TD>
<TD width="400" vAlign="top">
<P>
<TABLE id="Table2" cellSpacing="0"
cellPadding="0" width="200" align="center" border="0">
<TR>
<TD style="HEIGHT: 63px"
colSpan="2">
<P align="center"><STRONG><FONT
face="Verdana" size="2"><BR>
Giriş</FONT></STRONG></P>
</TD>
</TR>
Üye
238
Modül 7:
<TR>
<TD style="WIDTH: 66px">EMail&nbsp;</TD>
<TD>
<asp:TextBox id="txtEmail"
runat="server" Width="128px"></asp:TextBox></TD>
</TR>
<TR>
<TD style="WIDTH: 66px; HEIGHT:
11px">Sifre</TD>
<TD style="HEIGHT: 11px">
<asp:TextBox id="txtSifre"
runat="server" Width="127px"
TextMode="Password"></asp:TextBox></TD>
</TR>
<TR>
<TD style="HEIGHT: 54px"
colSpan="2">
<P align="center">
<asp:Button id="btnGiris"
runat="server" Text="Giriş"></asp:Button></P>
</TD>
</TR>
<TR>
<TD colSpan="2">
<asp:Label id="lblMesaj"
runat="server"></asp:Label></TD>
</TR>
</TABLE>
</P>
</TD>
<TD width="150" bgColor="#0099ff" vAlign="top">
<uc1:yan id="Yan1"
runat="server"></uc1:yan></TD>
</TR>
<TR>
<TD bgColor="#99ccff" colSpan="3">
<uc1:Alt id="Alt1"
runat="server"></uc1:Alt></TD>
</TR>
</TABLE>
</form>
</body>
</HTML>
Giris Formunun Eklenmesi
ASPEticaret projesine Giris isminde yeni bir Web form ekleyin.
239
ASP.NET Web Form ve Kontrolleri ile Çalõşmak
Form üzerine, tablodaki kontrolleri ekleyin belirtilen özelliklerini ayarlayõn.
Kontrol – Kontrol İsmi
Özellik
Değer
HyperLink – lnk1
NavigateUrl
UyeGiris.aspx
Text
tõklayõnõz
NavigateUrl
UyeKayit.aspx
Text
tõklayõnõz
HyperLink – lnk2
RESİM 7.4.
Giris Web formunun HTML kodlarõ aşağõdaki gibi olacaktõr:
<%@ Register TagPrefix="uc1" TagName="Alt" Src="Alt.ascx" %>
<%@ Register TagPrefix="uc1" TagName="Ust" Src="Ust.ascx" %>
<%@ Register TagPrefix="uc1" TagName="kategori"
Src="kategori.ascx" %>
<%@ Register TagPrefix="uc1" TagName="yan" Src="yan.ascx" %>
<%@ Page Language="vb" AutoEventWireup="false"
Codebehind="Giris.aspx.vb" Inherits="AspEticaret.Giris" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0
Transitional//EN">
<HTML>
<HEAD>
<title>Kayit</title>
<meta name="GENERATOR" content="Microsoft Visual
Studio .NET 7.1">
<meta name="CODE_LANGUAGE" content="Visual Basic .NET
7.1">
<meta name="vs_defaultClientScript"
content="JavaScript">
<meta name="vs_targetSchema"
content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body bgColor="#f0fff0">
240
Modül 7:
<form id="Form1" method="post" runat="server">
<TABLE id="Table1" cellSpacing="0" cellPadding="0"
width="700" align="center" border="0">
<TR>
<TD bgColor="#99ccff" colSpan="3">
<uc1:Ust id="Ust1"
runat="server"></uc1:Ust></TD>
</TR>
<TR>
<TD width="150" vAlign="top">
<uc1:kategori id="Kategori1"
runat="server"></uc1:kategori></TD>
<TD width="400" vAlign="top">
<P><BR>
Sayfaya erişmek için üye girişi
yapmalõsõnõz.<BR>
Giriş yapmak için
<asp:HyperLink id="lnk1" runat="server"
NavigateUrl="UyeGiris.aspx">tõklayõnõz</asp:HyperLink></P>
<P>Üye olmak için
<asp:HyperLink id="lnk2" runat="server"
NavigateUrl="UyeKayit.aspx">tõklayõnõz</asp:HyperLink></P>
</TD>
<TD width="150" bgColor="#0099ff" vAlign="top">
<uc1:yan id="Yan1"
runat="server"></uc1:yan></TD>
</TR>
<TR>
<TD bgColor="#99ccff" colSpan="3">
<uc1:Alt id="Alt1"
runat="server"></uc1:Alt></TD>
</TR>
</TABLE>
</form>
</body>
</HTML>
Kayit Formunun Eklenmesi
ASPEticaret projesine Kayit isminde yeni bir Web form ekleyin.
Form üzerine, tablodaki kontrolleri ekleyin belirtilen özelliklerini ayarlayõn.
Kontrol – Kontrol İsmi
Özellik
Değer
HyperLink – lnk1
NavigateUrl
UyeGiris.aspx
Text
tõklayõnõz
ASP.NET Web Form ve Kontrolleri ile Çalõşmak
241
RESİM 7.5.
Kayit Web formunun HTML kodlarõ aşağõdaki gibi olacaktõr:
<%@ Register TagPrefix="uc1" TagName="yan" Src="yan.ascx" %>
<%@ Page Language="vb" AutoEventWireup="false"
Codebehind="Kayit.aspx.vb" Inherits="AspEticaret.Kayit" %>
<%@ Register TagPrefix="uc1" TagName="kategori"
Src="kategori.ascx" %>
<%@ Register TagPrefix="uc1" TagName="Ust" Src="Ust.ascx" %>
<%@ Register TagPrefix="uc1" TagName="Alt" Src="Alt.ascx" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0
Transitional//EN">
<HTML>
<HEAD>
<title>Kayit</title>
<meta name="GENERATOR" content="Microsoft Visual
Studio .NET 7.1">
<meta name="CODE_LANGUAGE" content="Visual Basic .NET
7.1">
<meta name="vs_defaultClientScript"
content="JavaScript">
<meta name="vs_targetSchema"
content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body bgColor="#f0fff0">
<form id="Form1" method="post" runat="server">
<TABLE id="Table1" cellSpacing="0" cellPadding="0"
width="700" align="center" border="0">
<TR>
<TD bgColor="#99ccff" colSpan="3">
<uc1:Ust id="Ust1"
runat="server"></uc1:Ust></TD>
</TR>
<TR>
<TD width="150" vAlign="top">
242
Modül 7:
<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>
Satis Formunun Eklenmesi
ASPEticaret projesine Satis isminde yeni bir Web form ekleyin.
Form üzerine, tablodaki kontrolleri ekleyin belirtilen özelliklerini ayarlayõn.
Kontrol – Kontrol İsmi
Özellik
Değer
HyperLink – lnk1
NavigateUrl
Default.aspx
Text
tõklayõnõz
RESİM 7.6.
Satis Web formunun HTML kodlarõ aşağõdaki gibi olacaktõr:
ASP.NET Web Form ve Kontrolleri ile Çalõşmak
243
<%@ Register TagPrefix="uc1" TagName="Alt" Src="Alt.ascx" %>
<%@ Register TagPrefix="uc1" TagName="Ust" Src="Ust.ascx" %>
<%@ Register TagPrefix="uc1" TagName="kategori"
Src="kategori.ascx" %>
<%@ Register TagPrefix="uc1" TagName="yan" Src="yan.ascx" %>
<%@ Page Language="vb" AutoEventWireup="false"
Codebehind="Satis.aspx.vb" Inherits="AspEticaret.Satis" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0
Transitional//EN">
<HTML>
<HEAD>
<title>Kayit</title>
<meta name="GENERATOR" content="Microsoft Visual
Studio .NET 7.1">
<meta name="CODE_LANGUAGE" content="Visual Basic .NET
7.1">
<meta name="vs_defaultClientScript"
content="JavaScript">
<meta name="vs_targetSchema"
content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body bgColor="#f0fff0">
<form id="Form1" method="post" runat="server">
<TABLE id="Table1" cellSpacing="0" cellPadding="0"
width="700" align="center" border="0">
<TR>
<TD bgColor="#99ccff" colSpan="3">
<uc1:Ust id="Ust1"
runat="server"></uc1:Ust></TD>
</TR>
<TR>
<TD width="150" vAlign="top">
<uc1:kategori id="Kategori1"
runat="server"></uc1:kategori></TD>
<TD width="400" vAlign="top">
<P><BR>
Satiş&nbsp;işlemi başarõyla
tamalandõ.<BR>
Devam etmek&nbsp;için
<asp:HyperLink id="link1" runat="server"
NavigateUrl="Default.aspx">tõklayõnõz</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">
244
Modül 7:
<uc1:Alt id="Alt1"
runat="server"></uc1:Alt></TD>
</TR>
</TABLE>
</form>
</body>
</HTML>
Modül 8: ASP.NET ile Kod
Geliştirmek
Bu modülde Visual Studio .NET ortamõ içinde ASP.NET uygulamalarõnõn kullanõm yollarõnõ öğreneceksiniz.
Bu modül tamamlandõktan sonra;
! Inline ve Code Behind kod yazmayõ öğrenecek,
! Client Side – Server Side olay prosedürlerini öğrenecek,
! Page Event yaşam döngüsünü tanõyacaksõnõz.
248
Modül 8:
Konu 1: Kod Yazmak
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, tasarõ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
Inline Kod Yazmak
Aynõ .aspx dosyasõ içinde HTML kodu ve Visual Basic .NET kodu ayrõ bölümlere 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.
Kod 8.1: Inline Kod Yazmak
<%@ Page Language="VB" %>
<html>
<head>
<title>My First Web Form</title>
<script runat="server">
Sub Page_Load(Sender As Object , e As EventArgs )
Message.Text = "Inline Kod Yazdõk"
End Sub
</script>
</head>
<body>
<form runat="server">
<asp:Label id="Message" runat="server" />
</form>
</body>
</html>
250
Modül 8:
Code-Behind Kod Yazmak
Visual Studio .NET ortamõnõn kullandõğõ varsayõlan model code-behind tasarõm
modelidir. Programlama ve tasarõm sayfalarõ ayrõ tutularak çalõşma mantõğõna
göre ayrõm yapõlmõş olur. Code-behind sayfalarõ, .aspx uzantõlõ sayfanõn sonuna .vb eklenerek isimlendirilir. Webform1.aspx sayfasõnõn code-behind sayfasõ, WebForm1.aspx.vb şeklindedir.
Form üzerinde bir kontrol çift tõklandõğõnda code-behind sayfasõ açõlõr ve o kontrole ait olay için metot tanõmlanõr.
Code-behind sayfasõnõn .aspx sayfasõyla birlikte çalõşabilmesi için, .aspx
sayfasõnõn Page bildiriminde, CodeBehind ve Src özelliklerine ilgili değerlerin
girilmesi gerekir.
Kod 8.2: WebForm.aspx - Code-behind kod yazmak
<%@ Page Language="vb" AutoEventWireup="false"
Codebehind="WebForm1.aspx.vb"
Inherits="ilkAspNet.WebForm1"%>
<HTML>
<HEAD>
<title>BilgeAdam</title>
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<asp:TextBox id="txtAd" runat="server"/>
<asp:Button id="btnGonder" runat="server"
Text="Gönder"></asp:Button>
<asp:Label id="lblMesaj" runat="server"></asp:Label>
ASP.NET ile Kod Geliştirmek
251
</form>
</body>
</HTML>
Kod 8.3: WebForm.aspx.vb – Code-Behind Sayfasõ
Imports System
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Web.UI.HtmlControls
Public Class WebForm1
Inherits System.Web.UI.Page
Protected WithEvents txtAd As
System.Web.UI.WebControls.TextBox
Protected WithEvents btnGonder As
System.Web.UI.WebControls.Button
Protected WithEvents lblMesaj As
System.Web.UI.WebControls.Label
Private Sub Page_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
response.write("selam")
End Sub
Private Sub btnGonder_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles btnGonder.Click
lblMesaj.Text = "Hoşgeldin " & txtAd.Text
End Sub
End Class
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:
Konu 2: Client Side (İstemci Taraflõ)
Olay Prosedürleri
Client-side olay prosedürleri, Web forma istekte bulunan kullanõcõ bilgisayarõ
üzerinde işlenen olaylardõr. Kullanõcõ tarafõnda oluşan bu olaylar, sunucuya hiçbir bilgi göndermezler. Çünkü istemci tarafõndaki Internet tarayõcõsõ kodu alõr ve
işler.
Client-side olay prosedürleri yalnõzca HTML kontrolleri tarafõndan kullanõlõr. Client-side olay prosedürleri hiçbir zaman sunucu kaynağõ kullanmaz. Örneğin
SQL Server veritabanõna erişmek için client-side kod kullanõlamaz.
Client-side olay prosedürlerini, istemci tarafõnda kõsa zamanda oluşmasõ istenilen olaylar için kullanõlõr. Örneğin, metin kutusuna girilen değerin doğruluğunu
kontrol etmek için client-side kod kullanõlabilir.
Client-side kodlar <Script> bloklarõ içinde tanõmlanõr. Örnekte, JavaScript ile
istemci taraflõ kod tanõmlanmaktadõr.
<SCRIPT language=”JavaScript”>
</SCRIPT>
ASP.NET ile Kod Geliştirmek
253
Konu 3: Server Side (Sunucu Taraflõ)
Olay Prosedürleri
Server-side olay prosedürleri, sunucu üzerinde çalõşan olaylardõr. Server-side
olay prosedürleri client-side olay prosedürlerinden oldukça güçlüdür.
Server-side olay prosedürleri, Web sunucusu üzerinde bulunan derlenmiş kodlardan oluşur. Web ve HTML server kontrolleri tarafõndan oluşturulan olaylarõn,
işlenmesinde kullanõlõr. Client-side olay prosedürleri sunucu kaynaklarõnõ kullanamazken, server-side olay prosedürleri sunucu kaynaklarõnõ kullanõr.
Server-side olay prosedürleri için aşağõdaki tanõmlama yapõlõr.
<SCRIPT language=”vb” runat=”server”>
Client-side olay prosedürleri ile fare ve klavye olaylarõna kod yazõlabilir. Serverside 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:
Olay Prosedürleri Oluşturmak
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.
Kod 8.4: Button Kontrolüne Click Olayõ ile İlişkilendirmek
<asp:Button id=”btn1” runat=”server”/>
‘...
Protected WithEvents btn1 as _
System.Web.UI.WebControls.Button
Private Sub btn1_Click (ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btn1.Click
‘...
End Sub
ASP.NET ile Kod Geliştirmek
255
Server olay prosedürlerinin çalõşmasõnõ sağlamak için kontrollerin WithEvents
anahtar sözcüğü ile tanõmlanmasõ gerekir.
Olay prosedürlerine iki parametre girilmelidir.
! Sender: Olayõ tetikleyen kontrol nesnesidir.
! EventArgs: Olaya özgü parametreleri içeren nesnedir.
Olay Prosedürlerinde Kontrollerle Etkileşim
Web uygulamalarõnda, genellikle kontrollerden veri alma ve kontrollere veri
gönderme işlemlerine ihtiyaç duyulur. Server-side olay prosedürleri bu tür zor
işlemlerin kolayca yapõlmasõnõ sağlar.
Örnekte txtAd isimli metin kutusuna girilen değer lblMesaj isimli etikete
yazdõrõlmaktadõr.
Kod 8.5: Olay prosedürleriyle Çalõşmak
<asp:TextBox id=”txtAd” runat=”server” />
<asp:Button id=”btn1” runat=”server”/>
<asp:Label id=”lblMesaj” runat=”server” />
Private Sub btn1_Click (ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btn1.Click
Dim Mesaj as String = “Merhaba ” & txtAd.Text
lblMesaj.Text = Mesaj
End Sub
256
Modül 8:
Konu 4: Sayfa Yaşam Döngüsü
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şamada 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õğõ zaman 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.
257
ASP.NET ile Kod Geliştirmek
Response.Redirect
Kullanõcõyõ bir sayfadan başka bir sayfaya yönlendirmek için kullanõlõr.
HyperLink kontrolü gibi sayfalar arasõnda dolaşmayõ sağlar. Parametre olarak
gidilecek sayfanõn adresini belirtilir.
Response.Redirect
Örnekte
gerçekleştirilmektedir:
metodu
ile
yönlendirme
işlemi
Kod 8.6: Response.Redirect
Private Sub ListBox1_SelectedIndexChanged(ByVal sender _
As System.Object, ByVal e As System.EventArgs) _
Handles ListBox1.SelectedIndexChanged
Response.Redirect(ListBox1.SelectedValue)
End Sub
<asp:ListBox id="ListBox1" runat="server"
AutoPostBack="True">
<asp:ListItem
Value="http://www.yahoo.com">yahoo
</asp:ListItem>
<asp:ListItem
Value="http://www.google.com">google
</asp:ListItem>
</asp:ListBox>
258
Modül 8:
Postback İşlemleri
Sunucuya veri gönderme işlemine “postback” denir. Örneğin Button kontrolü
tõklanõnca otomatik olarak sunucuya veri yollanõr.
Varsayõlan durumda veri yollayan tek kontrol Button kontrolüdür. Diğer kontroller için AutoPostBack özelliğinin True yapõlmasõ gerekir.
Örnekte DropDownList kontrolünün AutoPostBack özelliğine True değeri girilmiştir. Bu durum liste kutusundan seçilen değerin sunucuya gönderilmesini
sağlar.
Kod 8.7 DropDownList kontrolünün Sunucuya Gönderilmesi
<asp:DropDownList id="DropDownList1"
runat="server" AutoPostBack=”True”>
<asp:ListItem>Türkçe </asp:ListItem>
<asp:ListItem>İngilizce</asp:ListItem>
</asp:DropDownList>
<asp:TextBox
id=”mesaj” runat=”server”/>
Private Sub DropDownList1_SelectedIndexChanged _
(ByVal sender As Object, ByVal e As System.EventArgs) _
Handles DropDownList1.SelectedIndexChanged
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 yeniden ç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:
Kod 8.8: Page.IsPostBack
Private Sub Page_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
'Put user code to initialize the page here
If Not Page.IsPostBack Then
'sadece sayfanõn ilk yüklendiğinde çalõşan istenilen alan
End If
'sayfa her yüklendiğinde çalõlşan alan
End Sub
260
Modül 8:
Modül Özeti
1. Web form içinde kod yazmak için hangi yöntemler kullanõlõr?
2. Code-Behind kod yazma tekniğini açõklayõn.
3. Sayfa yaşam döngüsünü açõklayõn.
4. Response.Redirect niçin kullanõlõr?
5. Page.IsPostBack niçin kullanõlõr?
ASP.NET ile Kod Geliştirmek
261
Lab 1: ASP.Net ile Kod Geliştirmek
Bu uygulamada, Code Behind ve Inline kod yöntemlerinin kullanõmõnõ
öğreneceksiniz. Ayrõca istemci taraflõ script'lerin yazõlõmõnõ öğreneceksiniz.
Bu lab tamamlandõktan sonra;
! Code Behind kod yazma yöntemini öğrenecek,
! Inline kod yazma yöntemini öğrenecek,
! İstemci taraflõ script'lerin kullanõmõnõ öğreneceksiniz.
Web Uygulamasõ Oluşturmak
Bu uygulamada kullanõlacak ASP.Net Web Application projesini oluşturun.
1. File menüsündeki New alt menüsünü işaretleyin ve Project komutunu
tõklayõn.
2. New Project ileti kutusundan ASP.Net Web Application şablonunu seçin.
3. Location metin kutusuna http://localhost/AspCode yazõn.
4. Enter tuşuna basõn.
Web Form Eklenmesi
AspCode projesine Test isminde yeni bir Web form ekleyin.
Form üzerine, tablodaki kontrolleri ekleyin belirtilen özelliklerini ayarlayõn.
262
Modül 8:
Kontrol – Kontrol İsmi
Özellik
Değer
Button – btnCodeBehind
Text
Code Behind
Button – btnInline
Text
Inline
<INPUT type="button">
Value
Java script
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")
2. Test Web formunun HTML bölümüne aşağõdaki kodlarõ yazõn. Bu kod,
inline kod yöntemi ile btnInline düğmesinin Click olayõnõ çalõştõrõr. Bu
kodu <Body>..</Body> etiketleri arasõna ekleyin.
<script language="vb" runat="server">
Private Sub btn(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnInline.Click
Response.Write("Inline")
End Sub
</script>
3. Test Web formunun HTML bölümüne aşağõdaki kodlarõ yazõn. Bu kod,
Java Script ile istemci taraflõ kod tanõmlar. Bu kodu <Head>..</Head>
etiketleri arasõna ekleyin.
<script language="javascript">
function mesaj()
{
alert('Hello World')
ASP.NET ile Kod Geliştirmek
263
}
</script>
Fonksiyonu çağõrmak için <Body>..</Body> etiketleri arasõna aşağõdaki kodu ekleyin.
<INPUT style="Z-INDEX: 103; LEFT: 24px; WIDTH: 112px;
POSITION: absolute; TOP: 88px; HEIGHT: 24px"
type="button" value="Java Script" onclick="mesaj()">
Modül 9: Web Programlamaya Giriş
Web uygulamalarõnõ zenginleştiren birçok programlama dili bulunur. Web
sayfalarõnõ geliştirmek için HTML dilinin kullanõlmasõ gerekir. Sadece HTML
kullanõmõ statik (sabit) sayfalar geliştirmek için yeterlidir. Ancak içeriği kolayca
şekillendirmeyi sağlayan CSS dili, istemci taraflõ çalõşan kodlarõn yazõlmasõ için
JavaScript – VBScript dilleri de Web uygulamalarõnõ zenginleştirir.
Bu modül tamamlandõktan sonra;
! HTML nesnelerini öğrenecek,
! JavaScript ve VBScript dilleri ile istemci taraflõ kod yazabilecek,
! CSS ile sayfalara özel stiller kazandõracaksõnõz.
268
Modül 9:
Konu 1 : Web Programlamaya Giriş
İstemci ve sunucu tarafõnda çalõşan çeşitli teknolojiler mevcuttur. Bir Web sayfasõ tasarlamak için kullanõlan ortak dil HTML dilidir. Ancak HTML sayfalarõ
içinde, sunucu tarafõnda ve kullanõcõ tarafõnda çalõşabilen ayrõ Web programlama dilleri kullanõlabilir. Örneğin JavaScript, kullanõcõ tarafõnda kodlama imkanõ
sunarken, CGI, ASP, Php, Perl, ASP.NET gibi Web programlama dilleri, sunucu
tarafõnda kod yazma imkanõ sunar.
Web Programlamaya Giriş
269
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 metin 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 olayõn bildirimini temsil eder. Etiketlerin içine attribute adõ verilen değerler girilir. Etiketlere 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 kadar 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 attribute 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:
<Body bgcolor=”#000000” text=”#ffffff”>
272
Modül 9:
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 Belgesi Nasõl Oluşturulur?
HTML belgeleri tag, attribute ve value bileşenleri kullanõlarak oluşturulur.
Bir HTML belgesi en basit şekilde Kod 9.1’de gösterilmiştir.
Kod 9.1:Temel HTML Belgesi
<html>
<head>
<title> Temel HTML Belgesi </title>
</head>
<body>
Sayfada kullanõlacak herşey burada bildirilir.
</body>
</html>
<html>…</html>, Tarayõcõya HTML belgenin başladõğõ ve bittiği alanõ bildirir.
<head>…</head>, Tarayõcõya HTML belge hakkõnda bilgi verir. <title> ve
<meta> etiketleri <head>…</head etiketleri arasõnda yer alõr.
<title>…</title>, belgenin başlõk yazõsõnõ tutar.
<body>…<body>, belgenin gövde bölümüdür. Sayfada görüntülenmesi istenen
tüm değerler burada bildirilir.
274
Modül 9:
En Sõk Kullanõlan Etiketler
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.
Kod 9.2: HTML Başlõk Etiketleri
<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>
Paragraf ve Satõr Sonu
<p>... </p> etiketleri arasõnda paragraflar tanõmlanõr. Paragrafta, satõr sonunu
bildirmek için <br> etiketi kullanõlõr.
Web Programlamaya Giriş
275
Sayfalara Bağlantõ Vermek
Birden fazla sayfayõ birbirine bağlamak için sayfa bağlantõlarõ kullanõlõr.
Bir sayfada başka bir sayfaya bağlantõ verebilmek için;
!
<a> etiketi yazõlõr.
!
<a ifadesinden sonra href attribute değerine bağlantõ verilecek sayfanõn
adresi girilir.
!
Target attribute değerine bağlantõ sayfasõnõn nasõl bir sayfada
görüntüleneceği bilgisi girilir. (Varsayõlan olarak _self değeri alõnõr. Yani
kendi sayfasõnda açõlõr.)
!
> karakteri ile <a> etiketi sonlanõr. Bağlantõnõn açõlmasõ için tõklanmasõ
gereken metin girilir.
!
Metin bitimine </a> etiketi yerleştirilir.
Kod 9.3: Sayfa içinde Bağlantõ Vermek
<a href="http://www.bilgeadam.com" target="_blank">BilgeAdam
BTA</a>
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 nesnesi için <li> etiketi kullanõlõr.
Kod 9.4: Liste Oluşturmak
<h4> Sõralõ liste</h4>
<ol>
<li>nesne 1
<li>nesne 2
</ol>
<h4>Sõrasõz Liste</h4>
<ul>
<li>nesne 1
<li>nesne 2
</ul>
Sõralõ ve sõrasõz listelerin dõşõnda programcõ tarafõndan tanõmlõ listeler
oluşturulabilir. <dl>...</dl> etiketleri arasõnda listelenecek metinler girilir. Bu
etiketler arasõna, başlõğõ tutan <dt> etiketi ve başlõk altõnda görüntülenecek
metini tutan <dd> etiketi yerleştirilir.
276
Modül 9:
Kod 9.5: Tanõmlõ Liste Oluşturmak
<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>
Listeleme ifadeleri iç içe kullanõlabilir.
Resim Görüntüleme
HTML sayfalarõnda resim görüntülemek için <img> etiketi kullanõlõr. src attribute değeri, görüntülenecek resmin adresini tutar.
Kod 9.6’da <img> kullanõmõ gösterilmektedir.
Kod 9.6: Resim Görüntülemek
<a href="http://www.bilgeadam.com">
<img src="c:\resimler\resim1.jpg">
</a>
img etiketinin sonlandõrma ifadesi yoktur.
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.
Kod 9.7: 4x3 Boyutlarõnda Tablo oluşturmak
<table width="140" border="2" bgcolor="#6633CC"
align="left">
<tr>
<td>1. satõr 1. sütun</td>
<td>1. satõr 2. sütun </td>
<td>1. satõr 3. sütun </td>
</tr>
<tr>
Web Programlamaya Giriş
<td>2. satõr 1. sütun </td>
<td>2. satõr 2. sütun </td>
<td>2. satõr 3. sütun </td>
</tr>
<tr>
<td>3. satõr 1. sütun </td>
<td>3. satõr 2. sütun </td>
<td>3. satõr 3. sütun </td>
</tr>
<tr>
<td>4. satõr 1. sütun </td>
<td>4. satõr 2. sütun </td>
<td>4. satõr 3. sütun </td>
</tr>
</table>
277
278
Modül 9:
Konu 3: Script Nedir?
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
JavaScript dili, Netscape firmasõ tarafõndan oluşturulmuştur. Yazõm biçimi olarak C dili esas alõnarak tasarlanmõştõr. Amaç olarak HTML’in yetmediği yerlere
script’ler ile destek vermesi düşünülmüştür. Web programcõlõğõna dinamik bir
yapõ kazandõran JavaScript, istemci tarafõnda çalõşõr. Kullanõmõ giderek
yaygõnlaşan JavaScript, daha sonra Microsoft firmasõnõn Internet Explorer Web
tarayõcõsõnda da kullanõlabilir hale gelmiştir. Günümüzde tüm tarayõcõlarõn desteklediği bir script dilidir.
JavaScript kodlarõ yazmak için Notepad gibi bir metin editörü yeterlidir. Kodlar
<script>...</script> etiketleri arasõnda yazõlmalõdõr.
Bu kod alanõ içinde yorum satõrlarõ için // ve /* ... */ ifadeleri kullanõlabilir.
Sadece bir satõr yorum satõrõ yapõlacaksa // ifadesi kullanõlõr.
// bu satõr yorum satõrõdõr.
Birden fazla satõr yorum satõrõ yapõlacaksa, satõrlarõn başladõğõ yere /*, bittiği
yere */ ifadeleri yerleştirilir.
/*
yoruma alõnan 1. satõr
2. satõr
...
*/
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:
JavaScript dilinde nesneler, nesnelere uygulanan olaylar ve olaylara ilişkin görevler vardõr. Bir nesneyi tõklamak, üzerine gelmek, üzerinde dolaşmak gibi işlemler, sayfa ile kullanõcõnõn etkileşimli olarak çalõşmasõnõ sağlar.
JavaScript, aynõ bir programlama dilinde olduğu gibi değişkenlere, klavyeden
bilgi alma, ekrana çõktõ verme işlemlerine, koşul ve döngü yapõlarõna, fonksiyon, nesne ve olay kavramlarõna sahiptir.
Kod 9.8: Örnek JavaScript
<html>
<head><title>onClick</title>
<script language="javascript">
function merhaba()
{
alert ("beni tikladiniz");
}
</script>
</head>
<body>
<input type="button" name="tikla" value="tikla"
onClick=merhaba()>
</body>
</html>
script etiketinin language attribute değeri ile kullanõlacak script dili belirtilir.
JavaScript kullanõlmasõ için burada language=”javascript” bildirimi yapõlõr.
Kod 9.9: Örnek JavaScript
<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 edilir. 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;
Satõrõn sonunda sonlandõrma karakteri olarak ; kullanõlõr. degerToplam isimli
değişkende 20 ve 30 değerleri toplanarak elde edilen 50 değeri tutulurken,
tarih isimli değişkende, ay ve yil değişkenlerinden gelen metin ifadeleri
birleştirilir ve “Mayõs2005” değeri oluşturulur.
Koşul Operatörü
[koşul ifadesi] ? koşul_doğru_ise : koşul_yanlõş_ise
Değişken tanõmlarken aritmetik, karşõlaştõrma ve mantõksal operatörler
kullanõlabilir. Bunlara ek olarak C dilinden gelen koşul operatörleri kullanõlabilir.
Bir if deyiminin tek satõrda yazõlmõş haline benzeyen bu operatörün kullanõmõ
Kod 9.10’da gösterilmiştir.
Genel kullanõm biçimi ise şöyledir:
[koşul ifadesi] ? koşul_doğru_ise : koşul_yanlõş_ise
Kod 9.10: Koşul Operatörünün Kullanõmõ
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:
Bu kodda, (a + b < c ) ifadesi ile elde edilen sonuca göre, e değerine d
veya a + b değerleri atanõr.
a + b işleminin sonucu olan 12 değeri c değerinden küçük olduğu için ifade
doğru olarak sonuçlanõr. Bu durumda d değeri, e değişkenine atanõr ve e
değişkeni 23 değerini taşõr.
Bu koşulu if deyimi ile yazõlabilir.
if (a + b < c)
e = d;
else
e = a+ b;
Operatörler
JavaScript operatörleri, Visual Basic .NET dilinde kullanõlan operatörlerden biraz 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.
Tablo 9.1: Aritmetik Operatörler
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.
*
Sayõsal değişkenlerde çarpma işlemi yapar.
/
Sayõsal değişkenlerde bölme işlemi yapar.
%
Sayõsal değişkenlerde mod alma işlemini yapar.
++
Sayõsal değişkenlerde artma işlemini yapar.
--
Sayõsal değişkenlerde azalma işlemini yapar.
Visual Basic .NET aritmetik operatörlerinden farklõ olan ++ ve -- operatörleri, C
dili operatörlerindendir. Değişkeni bir artõrma veya bir azaltma yeteneğine
sahiptir. Prefix (değişken isminin önünde) ve subfix (değişken isminin arkasõnda) olmak üzere iki kullanõm şekli vardõr.
Değişkenin prefix kullanõmõ Kod 9.11’de gösterilmektedir.
Kod 9.11: Prefix ++ operatörü
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.
Kod 9.12: Subfix ++ operatö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.
Tablo 9.2: Karşõlaştõrma Operatörleri
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 sonucunu 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ü.
>=
Büyük eşittir operatörü.
İki değerin eşitliğinin karşõlaştõrõlmasõ için == operatörü kullanõlõr.
if (a == b) {
document.write(“a ile b değişkeni eşit”)
}
İki değerin eşitsizliğinin karşõlaştõrõlmasõ için != operatörü kullanõlõr.
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 tamamen farklõdõr.
284
Modül 9:
Tablo 9.3: Mantõksal Operatörler
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.
!
Not operatörü: Koşulun yanlõş olmasõ durumunda true değerini verir.
Visual Basic .NET programlamada And operatörünün karşõlõğõ && operatörüdür.
Or operatörünün karşõlõğõ ise || operatörüdür. Bir değerin değili anlamõna gelen Not operatörünü karşõlõğõ ise ! operatörüdür.
Klavyeden Bilgi Almak ve Ekrana Çõktõ Vermek
JavaScript dilinde kullanõcõdan bilgi almak için formlarõn dõşõnda promt komutu
kullanõlõr. promt komutu ile kullanõcõdan bilgi alõrken ayrõ bir pencere açõlõr.
prompt(“soru”, “cevap için rehber ifade”);
Kod 9.13: Prompt ile kullanõcõdan değer almak
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.
document.write(“Yazõlmak istenen değişkene ilişkin
açõklama”, degisken);
Görüldüğü gibi write komutu document fonksiyonuyla birlikte kullanõlõr.
Koşul ve Döngü Yapõlarõ
Programlamanõn akõşõnõ yönlendiren koşul yapõlarõ ve döngülerdir. Döngüler
birden fazla gerçekleştirilecek işlemlerin blok halinde yazõlmasõnõ sağlar.
if koşul ifadesinin genel yapõsõ:
if ( koşul )
// koşul doğru ise çalõşacak ifade
// koşul yanlõş ise akõşõn devam edeceği alan
Koşulun doğru olmasõ halinde yapõlacak işlemler bir satõrdan fazla yer tutuyorsa, 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
}
Tekrarlanan belirli bir işlemi yaptõrmak için kullanõlan döngülerin JavaScript
dilindeki kullanõmõ tamamen C dilinin yapõsõna göre tasarlanmõştõr.
for döngüsünün genel kullanõm biçimi aşağõdaki gibidir:
for(başlangõç_değeri; döngü_ifadesi; değişecek_değişken_adõ)
{
//yapõlacak işlemler
}
Kod 9.14: For Döngüsünün Kullanõmõ
var a;
var b = 10;
for (a = 1; a <= b; a++) {
document.write( a , “. sayõ”, “<br>”);
}
while döngüsünün yapõsõ:
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 kullanõmõ:
function
fonksiyon_ismi(parametre1, parametre2)
{
//yapõlacak işlemler
}
Fonksiyon içinde hesaplanan değer, return ifadesi ile geri döndürülür.
Kod 9.15: JavaScript ile Toplama
function topla(deger1, deger2)
{
var sonuc= deger1+deger2;
return sonuc;
}
topla fonksiyonuna gönderilen deger1 ve deger2 değişkenleri toplanarak
fonksiyon içinde oluşturulan sonuc değişkenine atanõr. return sonuc; ifadesi
ile topla fonksiyonunda elde edilen sonuç geri döndürülür.
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 metodunu ç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õ:
window.open(“ url ”,“pencere_ismi”,“pencere_ozellikleri”);
window.close();
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 zorunludur. Pencere_ismi, birden fazla pencere ile işlem yapõldõğõ durumlarda
kullanõlabilir. Pencereye ait özellikler Tablo 9.4’te belirtilmiştir.
Tablo 9.4: Pencere Özellikleri
Özellik
Açõklama
Menubar
Menü çubuğunun görüntülenmesini sağlar.
Toolbar
Araç çubuğunun görüntülenmesini sağlar.
287
Web Programlamaya Giriş
Tablo 9.4: Pencere Özellikleri
Özellik
Açõklama
Location
Adres çubuğunun görüntülenmesini sağlar.
Status
Durum çubuğunun görüntülenmesini sağlar.
Scrollbars
Kaydõrma çubuklarõnõn görüntülenmesini sağlar.
Resizable
Penceresinin boyutlandõrõlmasõnõ sağlar.
Width
Açõlan pencerenin pixel genişliğini belirtir.
Height
Açõlan pencerenin pixel yüksekliğini belirtir.
Left
Ekranõn sol noktasõ ile pencere arasõndaki uzaklõğõ verir.
Top
Ekranõn üst noktasõ ile pencere arasõndaki uzaklõğõ verir.
Kod 9.16: Yeni bir pencere açmak
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.
window.status
=”JavaScript öğreniyoruz!”;
Navigator (Tarayõcõ) Nesnesi
JavaScript, tarayõcõlarõ da bir nesne olarak değerlendirir. Kullanõcõnõn tarayõcõsõna ilişkin bilgileri almak için Tablo 9.5’te belirtilen değişkenler kullanõlabilir.
Tablo 9.5: Navigator (Tarayõcõ) Nesnesinin Değişkenleri
Değişken İsmi
Açõklama
Appname
Tarayõcõ adõ
Appversion
Tarayõcõ versiyonu
AppCodeName
Tarayõcõnõn kod adõ
UserAgent
Tarayõcõnõn sunucuya kendini tanõtõrken verdiği isim.
Kod 9.17: Tarayõcõ nesnesi ile bilgi almak
<html>
<head>
<title>Browser'õmõzõ tanõyalõm</title>
<METAcontent=text/html;CHARSET=iso-8859-9 httpequiv=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 üzerinde 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.
Kod 9.18: onClick Olayõ
function tikla()
{
alert(“Tõklama işlemi gerçekleşti…”);
}
<input type="button" name="tikla" value="tikla"
onClick=tikla()>
Düğme tõklanõp bõrakõldõğõnda, onClick olayõ tetiklenir ve bu olayla
ilişkilendirilen tikla fonksiyonu devreye girer. alert komutu ile ekrana bir mesaj kutusu çõkar.
Ayrõca onDblClick, çift tõklama olayõnõ tetikler.
Web Programlamaya Giriş
289
onMouseOver, onMouseOut
Fare nesnenin üzerindeyken onMouseOver, fare nesne üzerinden ayrõlõnca
onMouseOut olaylarõ devreye girer.
Kod 9.19: onMouseOver ve onMouseOut Olayõ
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 durumlarõnda onSubmit devreye girer. Gönderilecek forma girilen verilerin uygunluğunun kontrolü bu olayõn tetiklediği fonksiyonlara yaptõrõlabilir.
Kod 9.20: onSubmit Olayõ
function dogrula()
{
confirm (‘Formu doldurduysanõz OK'i tõklayõnõz');
}
<form action="mail.pl" method="post" onSubmit="dogrula()">
confirm komutu, kullanõcõya Ok ve Cancel düğmelerinden oluşan bir diyalog
penceresi açar.
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 çõkartmak için de kullanõlabilir.
Kod 9.21: onReset Olayõ
function sil()
{
return confirm('Silmek istediginize emin misiniz?');
290
Modül 9:
}
<form onReset="return sil()">
<input type="text" name="mail">
<input type="reset" value="sil">
</form>
onChange
Bilgi girişi yapõlan alanlarda, değişikliğin gerçekleştiği bilgisi onChange olayõ ile
tetiklenir.
Kod 9.22: onChange Olayõ
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>
Sunulan seçeneklerden herhangi biri işaretlendiğinde uyarõ penceresi çõkar.
onLoad, onUnLoad
onLoad olayõ sayfaya giriş yapõldõğõnda gerçekleşir. onUnLoad olayõ sayfadan
çõkõldõğõnda gerçekleşir.
Kod 9.23: onLoad ve onUnLoad Olayõ
function giris()
{
alert(“Sayfaya Giriş Yaptõnõz!");
}
function cikis()
{
alert("Sayfadan çõktõnõz..");
}
<body onLoad="giris()" onUnload="cikis()">
</body>
291
Web Programlamaya Giriş
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.
Kod 9.24: onError ve onAbort Olayõ
<img src="resim.gif" onError="alert(‘Resim dosyasõ
yüklenemedi')">
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.
Kod 9.25: onFocus ve onBlur Olayõ
function dogru()
{
document.form1.mesaj.value="Lütfen hata yapmayõn!";
}
function sor()
{
document.form1.mesaj.value="isminiz alõndõ";
}
<form name="form1"
method="post">
<p><h3>Lütfen isminizi yazõnõz!</h3></p>
<input type="text" size="20" name="isim"
onfocus="dogru()" onblur="sor()">
<p>
<input type="text" name="mesaj"></p>
</form>
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õlmak 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>
Kod 9.26: İlk VbScript Örneği
<html>
<body>
292
Modül 9:
<script language="vbscript">
document.write("İlk VBScript!")
</script>
</body>
</html>
Değişken tanõmlamalarõ dim anahtar sözcüğü ile yapõlõr.
Kod 9.27: Değişken tanõmlamasõ
<html>
<body>
<script language=”vbscript">
dim isim
isim="Bilge Adam"
document.write(isim)
</script>
</body>
</html>
Metot tanõmlamasõ Visual Basic.NET diline benzer. Geriye sonuç döndürmeyen metotlar Sub, geriye sonuç döndüren metotlar ise function anahtar sözcüğü ile tanõmlanõr. Bu tanõmlanmõş metotlar “call MetotAdõ()“ anahtar sözcüğü ile çağrõlabilir.
Kod 9.28: Sub Tanõmlamasõ
<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>
Kod 9.29: Function Tanõmlamasõ
<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 vermek 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.
<p style=”font: 12pt arial”> Bu paragraftaki tüm yazõlar
arial 12 stilidedir.</p>
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
Kod 9.30: Gömülü stillerin tanõmlanmasõ
<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.
<link rel=stylesheet href=”stil.css” type=”text/css”>
296
Modül 9:
Style Sheet’lerin Söz Dizimi
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ğerleri 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.
Tablo 9.6: En Çok Kullanõlan Yazõ Özellik ve Değerleri
Özellik ve Değer
Açõklama
Margin-left
Sol kenar boşluğunu belirlemek için kullanõlõr. Punto, inç, cm
ve piksel cinsinden değer verilir.
{margin-left: 10px;}
Margin-right
Sağ kenar boşluğunu belirlemek için kullanõlõr.
Margin-top
Üst kenar boşluklarõnõ belirlemek için kullanõlõr.
text-indent
Bir yazõ için girinti bilgisini belirler.
text-align
Yazõnõn hizalanmasõnõ sağlayan değeri tutar. left, center,
right
297
Web Programlamaya Giriş
Tablo 9.6: En Çok Kullanõlan Yazõ Özellik ve Değerleri
Özellik ve Değer
Açõklama
text-decoration
underline, overline, line-through, none değerleriyle
yazõya şekil verir.
text-transform
Yazõnõn büyük veya küçük harflerle görüntülenmesini sağlar.
uppercase, lowercase
Body {
margin-left: 10px;
margin-right: 10px;
margin-top: 20px;
margin-bottom:15px;
}
Font özellik ve değerleri Tablo 9.7’de belirtilmiştir.
Tablo 9.7: Font Özellik ve Değerleri
Özellik ve Değer
Açõklama
font-size
Yazõ büyüklüğünü belirler.
color
Yazõnõn rengini tutar.
font-family
Yazõnõn tipini belirler.
font-style
Yazõnõn italikliğini belirler. italic,
normal.
font-weight
Yazõ kalõnlõğõnõ belirler. bold, normal
p {
font-size: 20;
color: blue;
font-weight: bold;
font-style: italic;
font-family: Times New Roman;
}
Liste özellikleri ve değerleri Tablo 9.8’de belirtilmiştir.
Tablo 9.8: Liste Özellikleri ve Değerleri
Özellik ve Değer
Açõklama
list-style-type
Liste elemanlarõnõn başõna gelecek karakteri belirler.
disc, circle, square, decimal
lower(upper)-roman
Liste elemanlarõnõn başõna küçük veya büyük Roma rakamlarõ koyar.
lower(upper)-alpha
Liste elemanlarõnõn başõna küçük(büyük) harfler koyar.
none
Liste elemanlarõ için bir sembol almaz.
298
Modül 9:
Tablo 9.8: Liste Özellikleri ve Değerleri
Özellik ve Değer
Açõklama
list-style-image
Liste imleri yerine resim kullanõr.
list-style-position
inside: Listenin ikinci satõrõnõ en soldan başlatõr.
outside: İkinci satõrõ bir öncekinin dikey hizasõndan
başlatõr.
Background özellikleri ve değerleri Tablo 9.9’da belirtilmiştir.
Tablo 9.9: Background Özellik ve Değerleri
Özellik ve Değer
Açõklama
background-color
Arka plan renk değerini tutar.
background-image
Arka plan resminin yol bilgisini tutar.
background-repeat
Resmin x ve y koordinatlarõ boyunca tekrarlanmasõ bilgisini tutar.
repeat: tüm yönlerde
repeat-x: x ekseni boyunca
repeat-y: y ekseni boyunca
no-repeat: tekrar edilmez
background-position
left: Resmi pencerenin sol kenarõna yaklaştõrõr.
right: Sağ kenara yaklaştõrõr.
center: Resmi ortalar.
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 özelliğ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
! active: Tõklanan linkin stilini belirler.
! link: Link yazõ stilini belirler.
! visited: Ziyaret edilmiş linkin sitilini belirler.
! hover: Fare linkin üzerindeyken nasõl bir stil alacağõnõ belirler.
a:link{text-decoration:none; color:teal}
a:active{text-decoration:none; color:red}
a:visited{text-decoration:none; font-family:Times New Roman;
color:green}
a:hover{background-color:teal; color:white; fontfamily:arial}
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, istenilen 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;
}
1 sõnõfõndaki tüm paragraflar 12 punto Verdana fontuyla ve 18 punto satõr
yüksekliğiyle görüntülenir. Sõnõf yerine gruplama yapõlabilir.
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
1. HTML nedir? En sõk kullanõlan HTML etiketlerini açõklayõn.
2. Script nedir?
3. JavaScript nedir? JavaScript niçin kullanõlõr?
4. CSS nedir?
5. CSS, HTML sayfalara nasõl dahil edilebilir?
Web Programlamaya Giriş
301
Lab 1: Web Programlamaya Giriş
Bu uygulamada, JavaScript .ile sanal klavye yapmasõnõ öğreneceksiniz. Ayrõca
JavaScript ile popup pencere oluşturmayõ öğreneceksiniz.
Bu lab tamamlandõktan sonra;
! Java Script ile Sanal Klavye oluşturabilecek,
! Java Script ile popup pencere oluşturabileceksiniz.
Web Uygulamasõ Oluşturmak
Bu uygulamada kullanõlacak ASP.Net Web Application projesini oluşturun.
1. File menüsündeki New alt menüsünü işaretleyin ve Project komutunu
tõklayõn.
2. New Project ileti kutusundan ASP.Net Web Application şablonunu seçin.
3. Location metin kutusuna http://localhost/ WebOrnek yazõn.
4. Enter tuşuna basõn.
Sanal Klavye Oluşturmak
WebOrnek projesine SanalKlavye isminde yeni bir HTML sayfa ekleyin.
302
Modül 9:
RESİM 9.1.
Aşağõdaki kodlarõ <Body>..</Body> etiketlerinin arasõna yazarak HTML sayfayõ tasarlayõn:
<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>
303
Web Programlamaya Giriş
<td><input type="button" id="bm"
onClick="HarfM()" value="M" NAME="bm"></td>
<td><input type="button" id="bn"
onClick="HarfN()" value="N" NAME="bn"></td>
<td><input type="button" id="bo"
onClick="HarfO()" value="O" NAME="bo"></td>
<td><input type="button" id="bp"
onClick="HarfP()" value="P" NAME="bp"></td>
</tr>
<tr>
<td><input type="button" id="br"
onClick="HarfR()" value="R" NAME="br"></td>
<td><input type="button" id="bs"
onClick="HarfS()" value="S" NAME="bs"></td>
<td><input type="button" id="bt"
onClick="HarfT()" value="T" NAME="bt"></td>
<td><input type="button" id="bu"
onClick="HarfU()" value="U" NAME="bu"></td>
<td><input type="button" id="bv"
onClick="HarfV()" value="V" NAME="bv"></td>
<td><input type="button" id="by"
onClick="HarfY()" value="Y" NAME="by"></td>
<td><input type="button" id="bz"
onClick="HarfZ()" value="Z" NAME="bz"></td>
</tr>
</table>
</div>
<br>
<form name="form1" method="post" ID="Form1">
<table width="268" border="1" cellpadding="1"
cellspacing="2" bordercolor="#99ff66" bgcolor="#0099cc"
ID="Table2">
<tr>
<td width="85">Kullanici Adi</td>
<td width="167"><input name="text" type="text"
id="user"></td>
</tr>
<tr>
<td>Parola</td>
<td><input type="password" id="password"
readonly NAME="password"></td>
</tr>
<tr>
<td>&nbsp;</td>
<td><input name="button2" type="button"
id="giris" value="Giris Yap" onClick="hosgeldin()">
&nbsp; <input name="button2" type="reset"
id="temizle" value="Sil"></td>
304
Modül 9:
</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ş
{
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()
{
305
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>
Popup Pencere Oluşturmak
WebOrnek projesine Popup isminde yeni bir HTML sayfa ekleyin.
Aşağõdaki kodlarõ <Body>..</Body> etiketlerinin arasõna yazarak HTML sayfayõ tasarlayõn.
<INPUT id="Button1" type="button" onclick="pencereac()"
value="Pencere Aç" name="Button1">
WebOrnek projesine acilan_pencere isminde yeni bir HTML sayfa ekleyin.
Aşağõdaki kodlarõ <Body>..</Body> etiketlerinin arasõna yazarak HTML sayfayõ tasarlayõn.
Web Programlamaya Giriş
307
RESİM 9.2.
RESİM 9.3.
Burada acõlan pencere mevcut
<br>
<INPUT id="Button2" onclick="window.close()" type="button"
value="Pencere Kapat" name="Button2">
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
Web uygulamalarõ geliştirirken, her sayfada görüntülenecek sabit paneller
gerekebilir. Bu panelleri her sayfa için tekrar oluşturmak zaman ve performans
kaybõna yol açar. Bu paneller, User Controls (kullanõcõ kontrolleri) biçiminde
oluşturulup proje içinde birçok yerde kullanõlabilir.
Bu modül tamamlandõktan sonra;
! Kullanõcõ kontrollerin yapõsõnõ öğrenecek,
! Kullanõcõ kontrolü oluşturabilecek,
! Kullanõcõ kontrollerini proje içinde kullanabileceksiniz.
312
Modül 10:
Konu 1: Kullanõcõ Kontrolleri
Sõk kullanõlan kontroller bir araya getirilerek yeni bir kontrol oluşturulur. Bu kontroller 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.
Kullanõcõ Kontrolünün Avantajlarõ
! Kullanõcõ kontrolleri, ayrõ bir isim alanõ içinde tanõmlanõr. Bu durum kullanõldõklarõ Web formlarõ ile oluşabilecek isim çakõşmasõnõ ortadan kaldõrõr.
! Kullanõcõ kontrolleri, aynõ sayfa içinde birden fazla kez kullanõlabilir. Hiçbir özellik veya metot için isim çakõşmasõ söz konusu değildir.
! Kullanõcõ kontrolleri ayrõ dillerde yazõlabilir.
Kullanõcõ kontrolleri, uygulama içindeki tüm sayfalara eklenebilir. Ancak diğer
uygulamalardaki kullanõcõ kontrolleri sayfalara direkt eklenemez. Diğer uygulamalardaki kullanõcõ kontrolleri, kullanmadan önce uygulamaya eklenmelidir.
Kullanõcõ Kontrolleri Oluşturmak
313
Kullanõcõ Kontrolünü Projeye Eklemek
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 komutunu 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.
<%@ Register TagPrefix=”deneme” TagName”=Login”
src=”login.ascx” %>
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.
<deneme:Login id="Login1" runat="server"/>
316
Modül 10:
Örnekte tüm sayfalarda kullanõlacak sayfa başlõğõ, kullanõcõ kontrolü olarak
tasarlanmõştõr.
<%@ Control Language="vb" AutoEventWireup="false"
Codebehind="Header.ascx.vb"
Inherits="KullaniciKontrolleri.UserControls.Header" %>
<table width="100%" height="100%" bgcolor="#ffeeaa">
<tr valign="middle">
<td align="center">
<asp:Label id="lblHeader" runat="server"
Font-Bold="True" ForeColor="White"
Font-Size="X-Large">Hoşgeldiniz
</asp:Label>
</td>
</tr>
</table>
Kullanõcõ Kontrolleri Oluşturmak
Modül Özeti
1. Kullanõcõ kontrolleri niçin oluşturulur?
2. Kullanõcõ kontrollerinin avantajlarõ nelerdir?
3. Web form içinde kullanõcõ kontrolleri nasõl kullanõlõr?
317
318
Modül 10:
Lab 1: E-Ticaret Uygulamasõ
Geliştirmek
Bu uygulamada, e-ticaret uygulamasõnõn kullanõcõ kontrolleri tasarlanacaktõr.
Bu uygulamada, bütün sayfalarda kullanõlacak üst ve alt menü oluşturulacaktõr.
Ayrõca kategori isimli kullanõcõ kontrolü ile tüm kategoriler listelenecektir. Kategori değerleri veritabanõ içinden alõnõr.
Bu lab tamamlandõktan sonra;
! Kullanõcõ kontrolü oluşturabileceksiniz.
Kullanõcõ Kontrollerin Eklenmesi
AspEticaret isimli projeyi açõn.
Ust Kontrolünün Eklenmesi
ASPEticaret projesine Ust isminde yeni bir kullanõcõ kontrolü ekleyin.
Kullanõcõ kontrolü içine tablodaki kontrolleri ekleyin.
Kontrol – Kontrol İsmi
Özellik
Değer
HyperLink – btnAnaSayfa
NavigateUrl
Default.aspx
Text
AnaSayfa
NavigateUrl
UyeGiris.aspx
Text
tõklayõnõz
NavigateUrl
UyeKayit.aspx
HyperLink – btnUyeGiris
HyperLink – btnUyeKayit
319
Kullanõcõ Kontrolleri Oluşturmak
Kontrol – Kontrol İsmi
LinkButton – btnCikis
Özellik
Değer
Text
Üye Kayit
Text
Çõkõş
Visible
False
Label – lblAd
RESİM 10.1.
Ust isimli kullanõcõ kontrolünün HTML kodlarõ aşağõdaki gibi olacaktõr:
<%@ Control Language="vb" AutoEventWireup="false"
Codebehind="Ust.ascx.vb" Inherits="AspEticaret.Ust"
TargetSchema="http://schemas.microsoft.com/intellisense/ie5"
%>
<TABLE id="Table1" cellSpacing="0" cellPadding="0"
width="700" border="0">
<TR>
<TD style="HEIGHT: 17px">
<P align="center"><FONT face="Lucida Handwriting"
size="6">Yazilim Uzmani&nbsp;Kitapevi</FONT></P>
</TD>
</TR>
<TR>
<TD>&nbsp;
<asp:Label id="lblAd"
runat="server"></asp:Label>&nbsp;</TD>
</TR>
<TR>
<TD>
<P align="center">
<asp:HyperLink id="btnAnaSayfa" runat="server"
NavigateUrl="Default.aspx">AnaSayfa</asp:HyperLink>&nbsp;|
<asp:HyperLink id="btnUyeGiris" runat="server"
NavigateUrl="UyeGiris.aspx">Üye Giriş</asp:HyperLink>&nbsp;|
<asp:HyperLink id="btnUyeKayit" runat="server"
NavigateUrl="UyeKayit.aspx">Üye
Kayit</asp:HyperLink>&nbsp;&nbsp;&nbsp;
&nbsp;
<asp:LinkButton id="btnCikis" runat="server"
Visible="False">Çõkõs</asp:LinkButton></P>
</TD>
</TR>
</TABLE>
320
Modül 10:
Ust isimli kullanõcõ kontrolünün code-behind kodlarõ aşağõdaki gibi olacaktõr:
Imports System.Data.OleDb
Private Sub Page_Load(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles MyBase.Load
If Session("user") <> "" Then
lblAd.Text = "Bay / Bayan : " & Session("ad") &
" " & Session("soyad")
btnCikis.Visible = True
Else
btnCikis.Visible = False
End If
End Sub
Private Sub btnCikis_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
btnCikis.Click
Session.Abandon()
btnCikis.Visible = False
Response.Redirect("Default.aspx")
End Sub
Alt Kontrolünün Eklenmesi
ASPEticaret projesine Alt isminde yeni bir kullanõcõ kontrolü ekleyin.
Kullanõcõ kontrolü içine tablodaki kontrolleri ekleyin.
Kontrol – Kontrol
İsmi
Özellik
HyperLink –
Link1
NavigateUrl
Text
HyperLink –
Link2
HyperLink –
Link3
Değer
AnaSayfamYap
NavigateUrl
Text
SikKullanilanlaraEkle
NavigateUrl
mailto:[email protected]
Text
Iletisim
RESİM 10.2.
Alt isimli kullanõcõ kontrolünün HTML kodlarõ aşağõdaki gibi olacaktõr:
Kullanõcõ Kontrolleri Oluşturmak
321
<%@ Control Language="vb" AutoEventWireup="false"
Codebehind="Alt.ascx.vb" Inherits="AspEticaret.Alt"
TargetSchema="http://schemas.microsoft.com/intellisense/ie5"
%>
<TABLE id="Table1" cellSpacing="0" cellPadding="0"
width="700" border="0">
<TR>
<TD>
<P align="center"><asp:hyperlink id="Link1"
runat="server">AnaSayfamYap</asp:hyperlink>&nbsp;|
<asp:hyperlink id="Link2"
runat="server">SikKullanilanlaraEkle</asp:hyperlink>&nbsp;|
<asp:hyperlink id="Link3" runat="server"
NavigateUrl="mailto:[email protected]">Iletisim</a
sp:hyperlink></P>
</TD>
</TR>
</TABLE>
Yan Kontrolünün Eklenmesi
ASPEticaret projesine Yan isminde yeni bir kullanõcõ kontrolü ekleyin.
RESİM 10.3.
Yan isimli kullanõcõ kontrolünün HTML kodlarõ aşağõdaki gibi olacaktõr:
<%@ Control Language="vb" AutoEventWireup="false"
Codebehind="yan.ascx.vb" Inherits="AspEticaret.yan"
TargetSchema="http://schemas.microsoft.com/intellisense/ie5"
%>
<TABLE id="Table1" cellSpacing="0" cellPadding="0"
width="150" border="0">
<TR>
<TD>
<P align="center"><A
href="http://www.yazilimuzmani.com"><IMG
src="resimler/YazilimUzmani.gif" border="0"></A></P>
</TD>
</TR>
<TR>
<TD style="HEIGHT: 35px">
<P align="left"><IMG
src="resimler/bilgeadam%20logo.jpg" border="0"><A
href="http://www.yazilimuzmani.com"></A></P>
322
Modül 10:
</TD>
</TR>
<TR>
<TD>
<P align="left"><A
href="http://sdnet.bilgeadam.com"><IMG
src="resimler/sdNetLogo.gif" border="0"></A></P>
</TD>
</TR>
</TABLE>
DataSet Nesnesinin Oluşturulmasõ
dsBook isminde yeni bir DataSet oluşturun.
1. Solution Explorer penceresini açõn.
2. Proje adõnõ sağ tõklayõn.
3. Açõlan penceredeki Add menüsünden Add New Item komutunu seçin.
4. Templates seçeneği içinden DataSet öğesini seçin.
5. Name metin kutusuna dsBook ismini girin.
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:
1. Server Explorer penceresi üzerinde sağ tõklayõn. Açõlan menüden Add
Connection komutunu tõklayõn.
2. Açõlan Data Link Properties penceresinin Provider sekmesini tõklayõn.
3. Provider sekmesinden Microsoft.Jet.OLEDB.4.0 Provider seçeneğini
işaretleyin ve Next düğmesini tõklayõn.
4. Açõlan Connection sekmesinin görüntüsünü resimdeki gibi düzenleyerek OK düğmesini tõklayõn.
5. Server Explorer penceresinden DataConnections seçeneğini işaretleyin.
6. Eklediğiniz bağlantõ içinden Tables seçeneğini işaretleyin.
7. Tables içindeki Kategori tablosunu dsBook nesnesinin içine sürükleyin.
Kategori Kontrolünün Eklenmesi
ASPEticaret projesine Kategori isminde yeni bir kullanõcõ kontrolü ekleyin.
Kullanõcõ kontrolü içine tablodaki kontrolleri ekleyin.
323
Kullanõcõ Kontrolleri Oluşturmak
RESİM 10.4.
Kontrol – Kontrol İsmi
Özellik
Değer
Repeater – rptKategori
NavigateUrl
Default.aspx
RESİM 10.5.
Kategori isimli kullanõcõ kontrolünün HTML kodlarõ aşağõdaki gibi olacaktõr:
<%@ Control Language="vb" AutoEventWireup="false"
Codebehind="kategori.ascx.vb"
Inherits="AspEticaret.kategori"
TargetSchema="http://schemas.microsoft.com/intellisense/ie5"
%>
<asp:Repeater id="rptKategori" runat="server">
<ItemTemplate>
<table width="150" cellpadding="2" cellspacing="2">
<tr bgcolor="#0099ff">
<td>
<a style="COLOR: white"
href='Kitap.aspx?KategoriID=<%#
databinder.eval(Container.dataitem,"KategoriID") %>'>
<%# Databinder.eval(container.dataitem
,"KategoriAdi") %>
</a>
</td>
</tr>
</table>
324
Modül 10:
</ItemTemplate>
</asp:Repeater>
Kategori isimli kullanõcõ kontrolünün code-behind kodlarõ aşağõdaki gibi
olacaktõr:
Imports System.Data.OleDb
Private Sub Page_Load(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles MyBase.Load
Dim connStr As String =
"Provider=Microsoft.Jet.OleDB.4.0;Data Source=" &
Server.MapPath("KitapDb.mdb")
Dim conn As New OleDbConnection
conn.ConnectionString = connStr
Dim comm As New OleDbCommand
comm.CommandType = CommandType.Text
comm.CommandText = "Select * from Kategori"
comm.Connection = conn
Dim da As New OleDbDataAdapter
da.SelectCommand = comm
Dim ds As New dsBook
Try
conn.Open()
da.Fill(ds, "Kategori")
rptKategori.DataSource = ds.Kategori
rptKategori.DataBind()
Catch ex As Exception
Response.Write(ex.Message)
Finally
If conn.State = ConnectionState.Open Then
conn.Close()
End If
End Try
End Sub
Modül 11: ADO.NET ile Veriye Erişim
Web uygulamalarõ ile veriye erişim, Windows uygulamalarõna oldukça benzer.
Ancak verileri listelemek için kullanõlan kontrollerin çalõşma yapõsõ farklõlõk
gösterir. Veriye ulaşõm ADO.NET nesneleri ile gerçekleşir.
Bu modül tamamlandõktan sonra;
! Repeater, DataList ve DataGrid gibi listeleme kontrollerini öğrenecek,
! Web uygulamalarõnda Connected ve Disconnected çalõşma yapõsõnõ
öğreneceksiniz
328
Modül 11:
Konu 1: Veri Bağlantõlõ Kontroller
ASP.Net ile veritabanõ içindeki veriyi görüntülemek ve düzenlemek için veri
bağlantõlõ kontroller kullanõlõr. ListBox ve DropDownList kontrolleri dõşõnda
CheckBoxList ve RadioButtonList kontrolleri veri bağlantõlõ olarak çalõşabilir.
Repeater, DataList ve DataGrid kontrolleri veri listelemek için kullanõlõr.
329
ADO.NET ile Veriye Erişim
CheckBoxList ve RadioButtonList Kullanõmõ
CheckBox ve RadioButton kontrollerinden farklõ olarak, birden fazla seçenek
arasõnda seçim yapõlmasõnõ sağlayan CheckBoxList ve RadioButtonList
kontrolleri kullanõlabilir. Örneğin bir sayfada dört tane isteğe bağlõ seçenek
varsa dört ayrõ CheckBox kullanmak yerine, bir CheckBoxList kontrolü kullanõlõr. Aynõ şekilde beş seçenekten sadece bir tanesinin seçilmesi gerekiyorsa,
beş ayrõ RadioButton oluşturmak yerine, bir RadioButtonList kontrolü
kullanõlõr.
CheckBoxList kontrolünün
DataSource, DataMember, DataTextField ve
DataValueField özellikleri ile veritabanõ işlemleri gerçekleştirilir. DataSource,
bağlantõsõz çalõşan DataSet nesnesine bağlanõr. DataMember, bu DataSet içindeki tablo ismini temsil eder. DataValueField, value özelliğinde tutulmasõ
istenen kolonu, DataTextField ise text özelliğinde görüntülenmek istenen
kolonu temsil eder.
Örnekte CheckBoxList kontrolü ile seçilen tüm öğeler, lblMsg isimli etiketin
içine yazdõrõlmaktadõr.
Dim i As Integer
For i=0 To checkboxlist1.Items.Count - 1
If checkboxlist1.Items(i).Selected Then
lblMsg.Text &= checkboxlist1.Items(i).Text & "<br>"
End If
Next
330
Modül 11:
CheckBoxList
kontrolü
ile
birden
fazla
seçim
yapõlabilir.
Fakat
RadioButtonList kontrolü ile sadece bir öğe seçilebilir.
Örnekte CheckBoxList veya RadioButtonList kontrolü ile veritabanõ bağlantõsõ .gösterilmektedir.
Private Sub Page_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
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, DataList ve DataGrid Kullanõmõ
Repeater, DataList ve DataGrid, veri listelenmesi için tasarlanmõş özel kont-
rollerdir.
Bu üç kontrol şablonlardan oluşur. Ortak şablonlarõ ise HeaderTemplate,
ItemTemplate ve FooterTemplate şablonlarõdõr. Şablonlar içinde verinin
görüntülenmesine yönelik tanõmlamalar yapõlõr.
DataList ve DataGrid, veriler üzerinde güncelleme yapma imkanõ sunarken,
Repeater sadece veri görüntülemeyi sağlar. Ancak DataGrid, DataList
kontrolünden farklõ olarak veri sayfalama ve sõralama özellikleri sunar.
332
Modül 11:
Repeater
Repeater; veriyi veritabanõndan alarak istenilen biçimde görüntülenmesini
sağlayan oldukça güçlü bir kontroldür. Her kaydõn görüntülenme şekli, HTML
etiketleri ile oluşturulan bir şablon ile belirlenir. Haber yayõnõ yapan sitelerinin
çoğunda bu kontrol kullanõlõr.
Kod 11.1’de Repeater kullanõmõ gösterilmektedir.
Kod 11.1:Repeater Kullanõmõ
<asp:Repeater id="Repeater1" runat="server">
<HeaderTemplate>
<asp:Label id="lblh" Runat="server" text="Company _
Name" Font-Bold="True" Width="260"></asp:Label>
<asp:Label id="lblh2" Runat="server" text="Contact _
Name" Font-Bold="True"></asp:Label>
</HeaderTemplate>
<ItemTemplate>
<table>
<tr>
<td width="260">
<asp:Label ID=lbl1 Runat=server
text='<%#Databinder.eval(container.dataitem,
"companyname")%> ' >
</asp:Label>
</td>
<td>
<asp:Label ID=Lbl2 Runat=server
333
ADO.NET ile Veriye Erişim
text='<%# Databinder.eval(container.dataitem,
"contactname")%> ' >
</asp:Label>
</td>
</tr>
</table>
</ItemTemplate>
<FooterTemplate>
<b>BilgeAdam BTA</b>
</FooterTemplate>
</asp:Repeater>
Repeater kontrolünün ItemTemplate şablonda, her kayõt için yapõlacak göste-
rim şekli belirlenir. HTML etiketleri kullanarak çõktõya şekil verilebilir.
HeaderTemplate şablonu repeater kontrolünün başlõğõnõn, FooterTemplate
alt başlõğõn biçimini belirler.
HeaderTemplate içinde açõlan bir <table> etiketi, FooterTemplate içinde
</table> ifadesiyle kapatõlabilir. SeperatorTemplate şablonu, kayõtlar ara-
sõnda ayraç stili belirler.
Tablo 11.1’de Repeater kontrolünün şablonlarõ açõklanmõştõr.
Tablo 11.1: Repeater Kontrolünün Şablonlarõ
Şablon Adõ
Açõklama
ItemTemplate
Veritabanõndan gelecek satõrlarõn görüntüleneceği
stilin belirlendiği alan.
AlternatingItemTemplate
Ardõşõk olarak gelen satõrlarõn birbirinden farklõ
olmasõnõ sağlar.
HeaderTemplate
Repeater kontrolünün başlõğõdõr. İstenen stil ve-
FooterTemplate
Repeater kontrolünün en altõndaki alandõr. Alt
rilebilir.
başlõk olarak istenen stil verilebilir.
SeperatorTemplate
Veritabanõndan gelen her bir satõrõ diğerinden
ayõran şablondur.
<table> </table> etiketleri ile kayõtlarõn bir tablonun satõrlarõ biçiminde
görüntülenmesini sağlanõr. <tr> </tr> etiketi arasõnda iki <td> </td> etiketi
kullanõr. Bu şekilde, bir satõr bilgiyi iki kolona ayrõlmõş biçimde görüntülenmesini
istenir. İlk td etiketinde bir <asp:Label> etiketi kullanarak bu birinci sütunda
verinin bir Label kontrolü içinde görüntülenmesi isteğini bildirilir ve Label
etiketinin Text özelliği içine aşağõdaki ifade yazõlarak veri bağlama işlemi
gerçekleştirilir.
text='<%#Databinder.eval(container.dataitem,
"companyname")%> '
334
Modül 11:
Burada Databinder.eval, repeater kontrolüne bağlanan veri kümesi içinden CompanyName adõ verilen kolonu bulur ve o kolondaki verileri sõrasõyla
Repeater içine alõr ve görüntüler.
İkinci td etiketinde, Label kontrolünün Text özelliğine ContactName kolonunu
bağlar.
text='<%#Databinder.eval(container.dataitem,
"contactname")%> '
Code-behind sayfasõnda ise, Repeater kontrolünün DataSource özelliğine,
veri kaynağõnõ temsil eden DataSet nesnesinin ismi bildirilir ve DataBind metodu ile bağlantõnõn işlenmesi sağlanõr.
Repeater1.DataSource = DataSet2
Repeater1.DataBind()
Sonuç olarak Repeater kontrolü, HTML kullanõmõnõ yoğun olarak gerektirir ve
karşõlõğõnda, verilerin istenilen şablona uygun biçimde görüntülenmesini sağlar.
ADO.NET ile Veriye Erişim
335
DataList
DataList kontrolü, Repeater kontrolünün daha gelişmiş halidir. Veri görüntüle-
mek dõşõnda, verilerin seçilip ve üzerinde güncelleme işlemleri yapmaya olanak
sağlar.
DataList eklemek için aşağõdaki adõmlarõ takip edin. Örnekte DataList kulla-
nõmõ gösterilmektedir.
1. Araç kutusundan DataList kontrolünü seçerek formun üzerine
sürükleyip bõrakõn.
2. Kontrolü sağ tõklayõn ve açõlan menüden Edit Template komutunu seçin.
3. Açõlan yeni pencerede Header and Footer Templates, Item Template
ve Separator Templates alanlarõ çõkacaktõr. Header and Footer Templates alanõnõ seçerek, başlõk ve alt başlõk alanlarõna istenilen form
girilebilir. Header alanõna iki Label ekleyin ve Text özelliğine Kitap
Adõ ve Yazar değerlerini verin. Footer alanõna yine bir Label ekleyin ve
Text özelliğine Bilge Adam BTA yazõn.
4. Kontrol üzerinde tekrar sağ tõklayõn ve Item Templates komutunu seçin.
ItemTemplate ve AlternatingItemTemplate şablonuna ek olarak,
SelectedItemTemplate ve EditItemTemplate şablonlarõ bulunur.
ItemTemplate alanõnda, görüntülemek istenilen alanlarõ temsil edecek
kontroller oluşturulur. Bu kontrolde Repeater kontrolünden farklõ olarak,
tasarõm ekranõnda araç kutusundan istenen kontrol ItemTemplate
şablonuna eklenebilir.
5. İki tane Label kontrolünü ItemTemplate alanõna ekleyin ve HTML koduna geçerek veri bağlama işlemlerini gerçekleştirin.
336
Modül 11:
Kod 11.2: DataList kullanõmõnda code-behind sayfasõ
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",_
conn)
Dim ds As New DataSet
Private Sub Page_Load(ByVal sender As Object, _
ByVal e As EventArgs) Handles MyBase.Load
da.Fill(ds, "kitaplar")
DataList1.DataSource = ds
DataList1.DataBind()
End Sub
Kod 11.3: DataList aspx sayfasõ ve veri bağlama
<form id="Form1" method="post" runat="server">
<asp:DataList id="DataList1" style="Z-INDEX: 101; LEFT:
88px; POSITION: absolute; TOP: 168px" runat="server">
<HeaderTemplate>
<asp:Label id="Label1" runat="server" Width="300px"
Font-Bold="True">Kitap Adõ</asp:Label>
<asp:Label id="Label2" runat="server" Width="65px"
Font-Bold="True">Yazar</asp:Label>
</HeaderTemplate>
<FooterTemplate>
<asp:Label id="Label3" runat="server" FontBold="True">Bilge adam Bta</asp:Label>
</FooterTemplate>
<ItemTemplate>
<asp:Label id=Label5 runat="server" Width="300px"
text='<%# databinder.eval(container.dataitem,
"kitap_baslik")%>'> </asp:Label>
<asp:Label id=Label4 runat="server" text='<%#
databinder.eval(container.dataitem, "kitap_yazar")%>'>
</asp:Label>
</ItemTemplate>
</asp:DataList>
</form>
DataList 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
RepeatColums özelliği ise verilerin kaç sütun halinde görüntüleneceğini belirler.
RepeatDirection özelliği ise tekrarlanan kayõtlarõn alt alta veya yan yana
sõralanarak görüntülenmesini sağlar.
GridLines özelliği ise dikey ve yatay çizgilerle kayõt görüntülerini birbirinden
ayõrõr.
DataList içinde görüntü formunu düzenlemek için properties penceresindeki
görünüme ilişkin pek çok özellik sunulmuştur.
SelectedItemTemplate şablonu, listeden seçilen nesneye ait ayrõntõlarõn
görüntülenmesini sağlar.
EditItemTemplate şablonu, kullanõcõnõn seçtiği kayõt üzerinde düzenleme
yapmasõnõ sağlayan alana ait kodlarõn girildiği bölümdür.
DataList kontrolünün şablonlarõ içine kullanõlan kontrollere, formun üzerinden
direkt erişilemez. Örneğin DataList içindeki bir Button kontrolünün Click olayõna kod yazõlamaz. DataList içinde kullanõlan Button kontrolüne kod yazmak için, DataList kontrolünün CommandName özelliği kullanõlõr. Bu özellik,
Button kontrolünü Command nesnesi ile alõr ve forma yollar. Ve DataList
kontrolünün ItemCommand olayõnda, gelecek komutun adõna göre kod yazõlõr.
338
Modül 11:
DataGrid
DataGrid kontrolü, DataList kontrolünden daha gelişmiş özelliklere sahiptir.
Verileri sayfalama ve sõralama yeteneği sayesinde görüntüleme işlemleri özelleşmiştir. DataGrid, veritabanõndan alõnan bir tablonun, tablo biçimi ile ekrana
yansõtõlmasõnõ sağlar. Seçilen kayõt üzerinde değişiklik yapma ve kayõt silme
olanaklarõnõ sağlar. Sayfalama, sõralama, seçme, düzenleme ve silme işlemlerini destekler. DataGrid kontrolüne veri bağlamak için şablon kullanmaya gerek yoktur.
Kod 11.4: DataGrid kontrolünün en basit kullanõmõ
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", conn)
Dim ds As New DataSet
Private Sub Page_Load(ByVal sender As Object, _
ByVal e As EventArgs) Handles MyBase.Load
da.Fill(ds, "kitaplar")
DataGrid1.DataSource = ds
DataGrid1.DataMember = "kitaplar"
DataGrid1.DataBind()
End Sub
ADO.NET ile Veriye Erişim
339
HTML
<asp:DataGrid id="DataGrid1" style="Z-INDEX: 101;
LEFT: 28px; POSITION: absolute; TOP: 96px"
runat="server" Width="432px" Height="203px">
</asp:DataGrid>
Sadece tasarõm ekranõ kullanõlarak DataGrid oluşturulabilir.
1. Server Explorer panelinden yeni bir Access veritabanõ bağlantõsõ oluşturun.
2. Bu veritabanõndan, kullanmak istediğiniz tabloyu sürükleyerek form
üzerine bõrakõn. Formun alt penceresinde iki yeni nesne oluşacaktõr.
(OleDbConnection1 ve OleDbDataAdapter1)
3. OleDbDataAdapter1 nesnesini seçin ve Properties panelinden Generate DataSet komutunu verin.
4. Açõlan pencerede Next düğmesi ile ilerleyin.
5. Araç kutusundan DataGrid kontrolünü sürükleyip forma bõrakõn.
6. Properties penceresinde DataSource alanõna oluşturulan DataSet
kontrolünün ismini, DataMember alanõna, DataSet içine alõnan tablolardan birini girin.
7. DataSet kontrolünü veri ile dolduran ve bağlama işlemlerini gerçekleştiren kodlarõ yazõn.
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:
DataGrid Kontrolünde Kolon Oluşturmak
DataGrid kontrolü içinde çeşitli kolon türleri bulunur.
! BoundColumn
! HyperLinkColumn
! TemplateColumn
! ButtonColumn
! EditCommandColumn
AutoGenerateColumns özelliği, varsayõlan durumda True değerini alõr ve
tablodan gelen kolonlarõ değiştirmeden görüntüler.
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.
Kod 11.5: DataGrid içinde BoundColumn kullanõmõ
Private Sub Page_Load(ByVal sender As Object, _
ByVal e As EventArgs) Handles MyBase.Load
Dim connStr As String =
"Provider=Microsoft.Jet.OLEDB.4.0; _
Data Source=" & Server.Mappath("./Stok.mdb")
341
ADO.NET ile Veriye Erişim
Dim conn As New OleDbConnection(connStr)
Dim cmdSelect As OleDbCommand("Select * From kitaplar", _
conn)
conn.Open()
DataGrid1.DataSource = cmdSelect.ExecuteReader()
DataGrid1.DataBind()
conn.Close()
End Sub
Html
<asp:DataGrid
ID="DataGrid1"
AutoGenerateColumns="False"
EnableViewState="False"
Runat="Server">
<Columns>
<asp:BoundColumn DataField="Kitap_baslik"
HeaderText=”Kitap Adõ” />
<asp:BoundColumn DataField="Kitap_yazar"
HeaderText=”Yazar Adõ”/>
</Columns>
</asp:DataGrid>
AutoGenerateColumns özelliği varsayõlan durumda True değerindedir ve tüm
kolonlarõn otomatik olarak görüntülenmesini sağlar. Örnekte bu özelliğe False
değeri atanmõştõr.
BoundColumn kolonunun birçok özelliği vardõr:
! DataField
! DataFormatString
! FooterText
! HeaderImageUrl
! HeaderText
kontrolünün Columns etiketi
tanõmlanmõştõr. DataField özelliğinde ise kolon adõ belirtilmiştir
BoundColumn
kolonu,
DataGrid
içinde
DataGrid içinde görüntülenecek kolonlarõ seçen SQL komutu tanõmlanõrken select *
from ... ifadesinden kaçõnõlmalõdõr. Bu komut yerine sadece ihtiyaç duyulan kolonlar tek
tek belirtilmelidir. Aksi halde, Web üzerinde yayõn anõnda performans kaybõ ortaya çõkar.
BoundColumn’un DataFormatString özelliği ise, kolondan alõnan ifadenin belirli bir
formatta görüntülenmesini sağlar. Örneğin bir para miktarõ söz konusuysa bu özellik kullanõlabilir.
<asp:BoundColumn DataField="Kitap_fiyat"
DataFormatString="{0:c}"/>
BoundColumn’un HeadetText, FooterText ve HeaderImageUrl özellikleri,
Header ve Footer alanlarõna görüntülenmesi istenilen yazõlarõ, ve başlõkta
342
Modül 11:
görüntülenecek resmi belirler. HeaderText alanõna yazõlan yazõnõn
görüntülenebilmesi için DataGrid kontrolünün ShowFooter özelliği True
yapõlmalõdõr. Bu özellik varsayõlan durumda False değerindedir. Aynõ anda
HeaderImageUrl ve HeaderText özelliklerine değer girildiğinde, resim ve yazõ
beraber görüntülenemez.
Örnekte Header alanõnda hem resim hem de yazõ gösterilir:
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õ şeklinde 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.
Kod 11.6: DataGrid içinde HyperLinkColumn kullanõmõ
Private Sub Page_Load(ByVal sender As Object, _
ByVal e As EventArgs) Handles MyBase.Load
Dim connStr As String =
"Provider=Microsoft.Jet.OLEDB.4.0; _
Data Source=" & Server.Mappath("./Stok.mdb")
Dim conn As New OleDbConnection(connStr)
Dim cmdSelect As OleDbCommand("Select * From
_
musteri", conn)
conn.Open()
DataGrid1.DataSource = cmdSelect.ExecuteReader()
DataGrid1.DataBind()
conn.Close()
End Sub
Html
<asp:DataGrid
ID="DataGrid1"
AutoGenerateColumns="False"
CellPadding="10"
EnableViewState="False"
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>
Sayfaya Parametre Yollamak
Tablodan genel bilgi verilecek alan belirlenir ve tõklandõğõ zaman o kolona ait
veri hakkõnda daha ayrõntõlõ bilgi görüntülemek için detay sayfasõna link verilir.
HyperLinkColumn kolonunda görüntülenen linkler, DataNavigateUrlField,
DataNavigateUrlFormatString ve Text özelliklerine girilen bilgiler ile
yapõlandõrõlõr. DataNavigateUrlField linkin adresini, DataTextField link üzerinde görüntülenecek yazõyõ tutar.
HyperLinkColumn kolonunun özellikleri:
! 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.
Kod 11.7: DataGrid içinde HyperLinkColumn kullanõmõ
Private Sub Page_Load(ByVal sender As Object, _
ByVal e As EventArgs) Handles MyBase.Load
344
Modül 11:
Dim connStr As String =
"Provider=Microsoft.Jet.OLEDB.4.0; _
Data Source=" & Server.Mappath("./Stok.mdb")
Dim conn As New OleDbConnection(connStr)
Dim cmdSelect As OleDbCommand("Select * From linkler", _
conn)
conn.Open()
DataGrid1.DataSource = cmdSelect.ExecuteReader()
DataGrid1.DataBind()
conn.Close()
End Sub
Html
<asp:DataGrid
ID="DataGridLink"
AutoGenerateColumns="False"
ShowHeader="False"
EnableViewState="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 olmak üzere alanlara ayrõlõr.
Kod 11.8’de TemplateColumn kullanõmõ gösterilmektedir. TemplateColumn alanõnda, kitaba ait yazar ve açõklama bilgileri görüntülenir. Ancak bu iki kolon
bilgileri HTML kodlarõyla alõnõr.
Kod 11.8: DataGrid içinde TemplateColumn kullanõmõ
Private Sub Page_Load(ByVal sender As Object, _
ByVal e As EventArgs) Handles MyBase.Load
Dim connStr As String =
"Provider=Microsoft.Jet.OLEDB.4.0; _
Data Source=" & Server.Mappath("./Stok.mdb")
Dim conn As New OleDbConnection(connStr)
Dim cmdSelect As OleDbCommand("Select * From kitaplar", _
345
ADO.NET ile Veriye Erişim
conn)
conn.Open()
DataGrid1.DataSource = cmdSelect.ExecuteReader()
DataGrid1.DataBind()
conn.Close()
End Sub
HTML
<asp:DataGrid
ID="DataGrid1"
AutoGenerateColumns="False"
ShowHeader="False"
EnableViewState="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.
Kod 11.9: DataGrid içinde ButtonColumn kullanõmõ
Private Sub Page_Load(ByVal sender As Object, _
ByVal e As EventArgs) Handles MyBase.Load
Dim connStr As String =
"Provider=Microsoft.Jet.OLEDB.4.0; _
Data Source=" & Server.Mappath("./Stok.mdb")
Dim conn As New OleDbConnection(connStr)
Dim cmdSelect As OleDbCommand("Select * From kitaplar", _
conn)
conn.Open()
DataGrid1.DataSource = cmdSelect.ExecuteReader()
DataGrid1.DataBind()
conn.Close()
End Sub
Sub DataGrid1_ItemCommand( s As Object, _
e As DataGridCommandEventArgs )
If e.CommandName="select" Then
347
ADO.NET ile Veriye Erişim
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>
Select düğmesi tõklandõğõnda, DataGrid kontrolünün OnItemCommand özelli-
ğinde
belirtilen DataGrid1_ItemCommand isimli metot devreye girer.
ItemCommand olayõnõ tetikleyen DataGrid1_ItemCommand isimli metot, ilgili işlemleri gerçekleştirir.
Unselect düğmesi tõklandõğõnda ise, yine OnItemCommand özelliğinde tutulan
DataGrid1_ItemCommand metodu devreye girer. Ancak tõklanan düğmenin ismine göre yapõlacak işlem belirlenir.
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:
e.CommandName, hangi düğmenin tõklandõğõnõ belirtir. Tõklanan düğmeye göre
hangi metodun uygulanacağõnõ belirler.
ButtonColumn özellikleri:
! ButtonType: LinkButton veya PushButton
! CommandName
! DataTextField
! DataTextFormatString
! FooterText
! HeaderImageUrl
! HeaderText
! Text
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
DataGrid Kontrolünde Sõralama ve Sayfalama
DataGrid kontrolünün kolonlarõnda sõralama yapmak için hazõrlanmõş özellikler
vardõr. İsteğe göre tüm kolonlarda veya sadece belirli kolonlarda sõralama
yapõlabilir.
DataGrid içindeki tüm kolonlara sõralama yapma izni vermek için, varsayõlan
durumda False olan AllowSorting özelliği True yapõlõr ve SortCommand olayõnõ tetikleyecek bir metot yazõlõr.
Kod 11.10: DataGrid içinde Sõralama
Private Sub Page_Load(ByVal sender As Object, _
ByVal e As EventArgs) Handles MyBase.Load
If Not IsPostBack Then
BindDataGrid( "kitap_baslik" )
End If
End Sub
Sub BindDataGrid( strSortField As String )
Dim connStr As String =
"Provider=Microsoft.Jet.OLEDB.4.0; _
Data Source=" & Server.Mappath("./Stok.mdb")
Dim conn As New OleDbConnection(connStr)
Dim cmdSelect As OleDbCommand("Select * From Kitaplar _
Order By " & strSortField, conn )
conPubs.Open()"Select * From kitaplar", conn)
conn.Open()
350
Modül 11:
DataGrid1.DataSource = cmdSelect.ExecuteReader()
DataGrid1.DataBind()
conn.Close()
End Sub
Sub DataGrid1_SortCommand( s As Object, e As
DataGridSortCommandEventArgs )
BindDataGrid( e.SortExpression )
End Sub
Html
<asp:DataGrid
ID="DataGrid1"
AllowSorting="True"
OnSortCommand="DataGrid1_SortCommand"
CellPadding="10"
Runat="Server" />
BoundColumn kolonunun SortExpression özelliğine ilgili kolon isimleri girilerek
sõralama yapõlacak kolonlar belirtilebilir.
Sayfalama
Sayfalarca uzunluktaki kayõtlarõ bir seferde göstermek yerine sayfalara ayõrmak
daha kullanõşlõ olur. DataGrid kontrolünde sayfalama yapabilmek için kontrolün AllowPaging özelliği True yapõlõr. Varsayõlan değer False değeridir.
PageIndexChanged olayõnõ tetikleyecek bir metodun yazõlmasõ gerekir.
Kod 11.11: DataGrid içinde Sayfalama
Private Sub Page_Load(ByVal sender As Object, _
ByVal e As EventArgs) Handles MyBase.Load
If Not isPostBack Then
BindDataGrid
End If
End Sub
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 )
Dim ds As
new DataSet
da.Fill( ds )
DataGrid1.DataSource = ds
351
ADO.NET ile Veriye Erişim
DataGrid1.DataBind()
End Sub
Sub DataGrid1_PageIndexChanged( s As Object, _
e As DataGridPageChangedEventArgs )
DataGrid1.CurrentPageIndex = e.NewPageIndex
BindDataGrid
End Sub
HTML
<asp:DataGrid
ID="DataGrid1"
AllowPaging="True"
PageSize="5"
OnPageIndexChanged="DataGrid1_PageIndexChanged"
CellPadding="3"
Runat="Server" />
DataGrid kontrolünde sayfalama yapõldõğõnda kayõtlar sayfalara ayrõlõr ve diğer
sayfalara linkler verilir. PageSize özelliği, bir sayfada kaç kayõt görüntüleneceği
bilgisini tutar.
Sayfalamaya ait stiller, tasarõm penceresinde DataGrid kontrolü sağ tõklanõp
Property Builder ile seçilebilir.
DataGrid Kontrolü Üzerinde Kayõt Düzenleme İşlemleri
DataGrid kontrolünün EditCommand, UpdateCommand ve CancelCommand
olaylarõ kullanõlarak DataGrid içinde görüntülenen veriler üzerinde istenilen
değişiklikler yapõlabilir. Aynõ şekilde kayõt silme işlemi de gerçekleştirilir.
Düzenleme yapõlacak kayõt seçildiğinde EditCommand olayõ devreye girer.
EditItemIndex özelliği ile düzenleme yapõlacak kaydõn indeksi alõnõr ve o
satõrdaki tüm veriler TextBox kontrollü biçiminde görünür. Üzerinde düzenleme
yapõlmasõ istenmeyen kolonda, BoundColumn alanõnõn ReadOnly özelliğine
True değeri verilmelidir.
Update düğmesi tõklandõğõnda ise UpdateCommand olayõ devreye girer. İlgili
kaydõn Primary Key değeri alõnõr ve Primary Key ile güncelleme kodu
çalõştõrõlõr.
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.
<asp:PlaceHolder id="PlaceHolder1" runat="server">
</asp:PlaceHolder>
352
Modül 11:
Çalõşma zamanõnda forma yeni bir kontrol eklemek için Controls.Add() metodu kullanõlõr.
Kod 11.12: PlaceHolder Eklemek
Private Sub Page_Load(ByVal sender As Object, _
ByVal e As EventArgs) Handles MyBase.Load
Dim i As Integer
Dim btnNewButton As Button
For i = 1 To 10
PlaceHolder1.Controls.Add( _
New LiteralControl("<p>Alan " & i & ": "))
PlaceHolder1.Controls.Add(New TextBox)
Next
btnNew = New Button
btnNew.Text = "Tõklayõn!"
PlaceHolder1.Controls.Add(btnNew)
End Sub
ADO.NET ile Veriye Erişim
353
Konu 2: Connected ve Disconnected
Uygulamalar Geliştirmek
ADO.NET ile veriye erişmek için Connected ve Disconnected veri erişim yöntemi kullanõlõr. Bu yöntemler ile ASP.NET sayfalarõnda veri alõşverişi yapõlõr.
354
Modül 11:
ASP.NET uygulamalarõ Web sunucularõ üzerinde işlem yapacağõ için performans çok önemlidir. Dolayõsõyla, çalõşma modelinin yerinde seçilmesi gereklidir. Örneğin veriler sadece görüntülenmek amacõyla alõnacaksa Connected
bağlantõ modeli kurulmalõ ve kaynaklar mümkün olan en az seviyede
tüketilmelidir. Ancak veri üzerinde güncelleme işlemleri söz konusuysa Disconnected bağlantõ modeli uygulanmalõdõr.
ADO.NET ile Veriye Erişim
355
Namespace
ADO.NET sõnõflarõnõ, ASP.NET uygulamasõ içinde kullanabilmek için
System.Data isim alanõ import edilmelidir. Ayrõca Access veritabanõna bağlantõ
için System.Data.OleDb isim alanõ import edilmelidir.
Code-behind sayfasõnda import işlemi, Windows uygulamalarõnda kullanõlan
biçimdedir.
Imports System.Data
Imports System.Data.OleDb
Inline kod yazõmõnda <%@ %> ifadeleri arasõnda isim alanlarõ import edilir.
<%@ Import Namespace=”System.Data” %>
<%@ Import Namespace=”System.Data.OleDb” %>
356
Modül 11:
Modül Özeti
1. Veri bağlantõ kontrolleri nelerdir? Açõklayõn.
2. Repeater niçin kullanõlõr? Açõklayõn.
3. DataList niçin kullanõlõr? Açõklayõn.
4. DataGrid niçin kullanõlõr? Açõklayõn.
5. DataGrid ile sayfalama nasõl yapõlõr?
ADO.NET ile Veriye Erişim
357
Lab 1: E-Ticaret Uygulamasõ
Geliştirmek
Bu uygulamada, e-ticaret uygulamasõ ile Connected ve Disconnected
veritabanõ işlemleri gerçekleştirilecektir. Bu uygulamada üye kayõt ve üye giriş
işlemlerini gerçekleştirebileceksiniz. Ayrõca kategoriye göre tüm kitaplarõ
listeleyecek ve kitap satõn alma işlemini gerçekleştirebileceksiniz.
Bu lab tamamlandõktan sonra;
! Connect ve Disconnect veritabanõ işlemlerini öğreneceksiniz.
! DataSet içindeki veriyi Repeater, DataGrid ve DataList kontrollerine
bağlayabileceksiniz.
Connect Veritabanõ İşlemleri
AspEticaret isimli projeyi açõn.
UyeKayit Formu ile Veritabanõ İşlemlerinin
Yapõlmasõ
UyeKayõt Web formunu açõn.
UyeKayit Web formunun Code Behind kodlarõ aşağõdaki gibi olacaktõr:
Imports System.Data.OleDb
358
Modül 11:
Private Sub btnKaydet_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles btnKaydet.Click
Dim connStr As String =
"Provider=Microsoft.Jet.OleDB.4.0;Data Source=" &
Server.MapPath("KitapDb.mdb")
Dim conn As New OleDbConnection
conn.ConnectionString = connStr
Dim comm As New OleDbCommand
comm.Connection = conn
comm.CommandType = CommandType.Text
comm.CommandText = "INSERT INTO
Musteri(Ad,Soyad,Email,Sifre)
values(@ad,@soyad,@email,@sifre)"
comm.Parameters.Add("@ad", txtAd.Text)
comm.Parameters.Add("@soyad", txtSoyad.Text)
comm.Parameters.Add("@email", txtEmail.Text)
comm.Parameters.Add("@sifre", txtSifre.Text)
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
UyeGiris Formu ile Veritabanõ İşlemlerinin
Yapõlmasõ
UyeGiris Web formunu açõn.
UyeGiris Web formunun Code Behind kodlarõ aşağõdaki gibi olacaktõr:
Imports System.Data.OleDb
Private Sub btnGiris_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
btnGiris.Click
' Session("user") = "tamer"
Dim connStr As String = _
359
ADO.NET ile Veriye Erişim
"Provider=Microsoft.Jet.OleDB.4.0;Data Source=" _
& Server.MapPath("KitapDb.mdb")
Dim conn As New OleDbConnection
conn.ConnectionString = connStr
Dim comm As New OleDbCommand
comm.CommandType = CommandType.Text
comm.CommandText = _
"Select * from Musteri Where Email=@email and
Sifre=@sifre"
comm.Connection = conn
comm.Parameters.Add("@email", txtEmail.Text)
comm.Parameters.Add("@sifre", txtSifre.Text)
Dim sonuc As Boolean
Dim dr As OleDbDataReader
Try
conn.Open()
dr = comm.ExecuteReader
If dr.HasRows = True Then
sonuc = True
If dr.Read = True Then
Session("user") = dr.Item("Email")
Session("ad") = dr.Item("Ad")
Session("soyad") = dr.Item("Soyad")
Session("musteriId") =
dr.Item("MusteriID")
End If
Else
sonuc = False
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
If sonuc = True Then
Response.Redirect("Default.aspx")
Else
360
Modül 11:
lblMesaj.Text = "Hatali kullanici adi veya
sifre"
End If
End Sub
KitapDetay Formunun Eklenmesi ve Veritabanõ
İşlemlerinin Yapõlmasõ
ASPEticaret projesine KitapDetay isminde yeni bir Web form ekleyin.
Form üzerine, tablodaki kontrolleri ekleyin belirtilen özelliklerini ayarlayõn.
Kontrol – Kontrol İsmi
Özellik
Değer
Text
Satõn Al
Label – lblKitapAdi
Label – lblYazarAdi
Label – lblFiyat
Label – lblAciklama
Label – lblMesaj
Image – imgResim
TetxBox – txtAdet
Button – btnSatinAl
RESİM 11.1.
KitapDetay Web formunun HTML kodlarõ aşağõdaki gibi olacaktõr:
<%@ Register TagPrefix="uc1" TagName="yan" Src="yan.ascx" %>
<%@ Page Language="vb" AutoEventWireup="false"
Codebehind="KitapDetay.aspx.vb"
Inherits="AspEticaret.KitapDetay" %>
<%@ Register TagPrefix="uc1" TagName="kategori"
Src="kategori.ascx" %>
<%@ Register TagPrefix="uc1" TagName="Ust" Src="Ust.ascx" %>
<%@ Register TagPrefix="uc1" TagName="Alt" Src="Alt.ascx" %>
361
ADO.NET ile Veriye Erişim
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0
Transitional//EN">
<HTML>
<HEAD>
<title>KitapDetay</title>
<meta content="Microsoft Visual Studio .NET 7.1"
name="GENERATOR">
<meta content="Visual Basic .NET 7.1"
name="CODE_LANGUAGE">
<meta content="JavaScript"
name="vs_defaultClientScript">
<meta
content="http://schemas.microsoft.com/intellisense/ie5"
name="vs_targetSchema">
</HEAD>
<body bgColor="#f0fff0">
<form id="Form1" method="post" runat="server">
<TABLE id="Table1" cellSpacing="0" cellPadding="0"
width="700" align="center" border="0">
<TR>
<TD bgColor="#99ccff" colSpan="3"><uc1:ust
id="Ust1" runat="server"></uc1:ust></TD>
</TR>
<TR>
<TD width="150" vAlign="top"><uc1:kategori
id="Kategori1" runat="server"></uc1:kategori></TD>
<TD vAlign="top" width="400">
<P><BR>
</P>
<P>
<TABLE id="Table2" borderColor="#000033"
cellSpacing="0" cellPadding="0" width="300" align="center"
border="0">
<TR>
<TD width="100" rowSpan="5">
<P align="center"><asp:image
id="imgResim" runat="server"></asp:image></P>
</TD>
<TD>
<P align="center"><asp:label
id="lblKitapAdi" runat="server"></asp:label></P>
</TD>
</TR>
<TR>
<TD>
<P align="center"><asp:label
id="lblYazarAdi" runat="server"></asp:label></P>
</TD>
362
Modül 11:
</TR>
<TR>
<TD>
<P align="center"><asp:label
id="lblFiyat" runat="server"></asp:label></P>
</TD>
</TR>
<TR>
<TD>
<P align="center"><asp:label
id="lblAciklama" runat="server"></asp:label></P>
</TD>
</TR>
<TR>
<TD>
<P align="center">Adet:
<asp:textbox id="txtAdet"
runat="server" Width="68px"></asp:textbox>&nbsp;
<asp:button id="btnSatinAl"
runat="server" Text="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>
KitapDetay Web formunun Code Behind kodlarõ aşağõdaki gibi olacaktõr:
363
ADO.NET ile Veriye Erişim
Imports System.Data.OleDb
Dim kID As String
Private Sub Page_Load(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles MyBase.Load
If Session("user") = "" Then
Response.Redirect("Giris.aspx")
End If
kID = Request.Params("kID")
'Response.Write(kID)
Dim connStr As String = _
"Provider=Microsoft.Jet.OleDB.4.0;Data Source=" _
& Server.MapPath("KitapDb.mdb")
Dim conn As New OleDbConnection
conn.ConnectionString = connStr
Dim comm As New OleDbCommand
comm.CommandType = CommandType.Text
comm.CommandText = _
"Select * from Kitap Where KitapID =@kitapID"
comm.Connection = conn
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
Private Sub btnSatinAl_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
btnSatinAl.Click
If txtAdet.Text = "" Then
lblMesaj.Text = "Adet Giriniz"
Exit Sub
End If
Dim connStr As String =
"Provider=Microsoft.Jet.OleDB.4.0;Data Source=" &
Server.MapPath("KitapDb.mdb")
Dim conn As New OleDbConnection
conn.ConnectionString = connStr
Dim comm As New OleDbCommand
comm.Connection = conn
comm.CommandType = CommandType.Text
comm.CommandText = "INSERT INTO
Siparis(MusteriID,SiparisTarihi,KitapID,Adet)
values(@MusteriID,@SiparisTarihi,@KitapID,@Adet)"
comm.Parameters.Add("@MusteriID",
Session("musteriId"))
comm.Parameters.Add("@SiparisTarihi",
DateTime.Now.ToShortDateString)
comm.Parameters.Add("@KitapID", CInt(kID))
comm.Parameters.Add("@Adet", txtAdet.Text)
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
365
ADO.NET ile Veriye Erişim
Disconnect Veritabanõ İşlemleri
ASPEticaret isimli projeyi açõn.
Default Formunun Eklenmesi ve Veritabanõ
İşlemlerinin Yapõlmasõ
ASPEticaret projesine Default isminde yeni bir Web form ekleyin.
Form üzerine, tablodaki kontrolleri ekleyin belirtilen özelliklerini ayarlayõn.
Kontrol – Kontrol İsmi
Özellik
Değer
DataGrid – dgEncokSatanlar
RESİM 11.2.
Default Web formunun HTML kodlarõ aşağõdaki gibi olacaktõr:
<%@ Register TagPrefix="uc1" TagName="yan" Src="yan.ascx" %>
<%@ Page Language="vb" AutoEventWireup="false"
Codebehind="Default.aspx.vb" Inherits="AspEticaret._Default"
%>
<%@ Register TagPrefix="uc1" TagName="kategori"
Src="kategori.ascx" %>
<%@ Register TagPrefix="uc1" TagName="Ust" Src="Ust.ascx" %>
<%@ Register TagPrefix="uc1" TagName="Alt" Src="Alt.ascx" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0
Transitional//EN">
<HTML>
<HEAD>
<title>Default</title>
<meta name="GENERATOR" content="Microsoft Visual
Studio .NET 7.1">
<meta name="CODE_LANGUAGE" content="Visual Basic .NET
7.1">
366
Modül 11:
<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 FontBold="True"></HeaderStyle>
<Columns>
<asp:HyperLinkColumn
DataNavigateUrlField="KitapID"
DataNavigateUrlFormatString="Kitapdetay.aspx?KID={0}"
DataTextField="KitapAdi" HeaderText="Kitap Adi">
<HeaderStyle
Width="275px"></HeaderStyle>
</asp:HyperLinkColumn>
<asp:BoundColumn
DataField="Ucret" HeaderText="Fiyati">
367
ADO.NET ile Veriye Erişim
<HeaderStyle
Width="75px"></HeaderStyle>
</asp:BoundColumn>
</Columns>
</asp:DataGrid></DIV>
</TD>
</TR>
<TR>
<TD></TD>
</TR>
</TABLE>
</P>
</TD>
<TD width="150" bgColor="#0099ff" vAlign="top">
<uc1:yan id="Yan1"
runat="server"></uc1:yan></TD>
</TR>
<TR>
<TD colSpan="3" bgColor="#99ccff">
<uc1:Alt id="Alt1"
runat="server"></uc1:Alt></TD>
</TR>
</TABLE>
&nbsp;
</form>
</body>
</HTML>
DataSet İçine DataTable Eklenmesi
1. Server Explorer penceresinden DataConnections seçeneğini işaretleyin.
2. Veritabanõ tablo ve sorgularõna erişmek için, oluşturduğunuz bağlantõ
içinden Views seçeneğini işaretleyin.
3. Views içindeki EnCokSatanlar sorgusunu dsBook nesnesinin içine sürükleyin.
Default Web formunun Code Behind kodlarõ aşağõdaki gibi olacaktõr:
Imports System.Data.OleDb
Private Sub Page_Load(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles MyBase.Load
If Page.IsPostBack = False Then
Dim connStr As String =
"Provider=Microsoft.Jet.OleDB.4.0;Data Source=" &
Server.MapPath("KitapDb.mdb")
368
Modül 11:
Dim conn As New OleDbConnection
conn.ConnectionString = connStr
Dim comm As New OleDbCommand
comm.CommandType = CommandType.Text
comm.CommandText = "SELECT Kitap.KitapAdi,
Kitap.Ucret, Kitap.KitapID FROM Kitap INNER JOIN Siparis ON
Kitap.KitapID = Siparis.KitapID GROUP BY Kitap.KitapAdi,
Kitap.Ucret, Kitap.KitapID ORDER BY Count(Siparis.Adet)
DESC"
comm.Connection = conn
Dim da As New OleDbDataAdapter
da.SelectCommand = comm
Dim ds As New dsBook
Try
conn.Open()
da.Fill(ds, "EnCokSatanlar")
dgEncokSatanlar.DataSource =
ds.Tables("EnCokSatanlar")
dgEncokSatanlar.DataBind()
Catch ex As Exception
Response.Write(ex.Message)
Finally
If conn.State = ConnectionState.Open Then
conn.Close()
End If
End Try
End If
End Sub
Kitap Formunun Eklenmesi ve Veritabanõ
İşlemlerinin Yapõlmasõ
ASPEticaret projesine Kitap isminde yeni bir Web form ekleyin.
Form üzerine, tablodaki kontrolleri ekleyin belirtilen özelliklerini ayarlayõn.
Kontrol – Kontrol İsmi
Özellik
Değer
DataList – dlKitap
RepeatColumns
2
Kitap Web formunun HTML kodlarõ aşağõdaki gibi olacaktõr:
<%@ Register TagPrefix="uc1" TagName="Alt" Src="Alt.ascx" %>
<%@ Register TagPrefix="uc1" TagName="Ust" Src="Ust.ascx" %>
369
ADO.NET ile Veriye Erişim
RESİM 11.3.
<%@ Register TagPrefix="uc1" TagName="kategori"
Src="kategori.ascx" %>
<%@ Page Language="vb" AutoEventWireup="false"
Codebehind="Kitap.aspx.vb" Inherits="AspEticaret.Kitap" %>
<%@ Register TagPrefix="uc1" TagName="yan" Src="yan.ascx" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0
Transitional//EN">
<HTML>
<HEAD>
<title>Kitap</title>
<meta content="Microsoft Visual Studio .NET 7.1"
name="GENERATOR">
<meta content="Visual Basic .NET 7.1"
name="CODE_LANGUAGE">
<meta content="JavaScript"
name="vs_defaultClientScript">
<meta
content="http://schemas.microsoft.com/intellisense/ie5"
name="vs_targetSchema">
</HEAD>
<body bgColor="#f0fff0">
<form id="Form1" method="post" runat="server">
<TABLE id="Table1" cellSpacing="0" cellPadding="0"
width="700" align="center" border="0">
<TR>
<TD bgColor="#99ccff" colSpan="3"><uc1:ust
id="Ust1" runat="server"></uc1:ust></TD>
</TR>
<TR>
<TD width="150" vAlign="top"><uc1:kategori
id="Kategori1" runat="server"></uc1:kategori></TD>
<TD vAlign="top" align="center" width="400">
<asp:datalist id="dlKitap" runat="server"
RepeatColumns="2">
<ItemTemplate>
370
Modül 11:
<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
DataSet İçine DataTable Eklenmesi
1. Server Explorer penceresinden DataConnections seçeneğini işaretleyin.
2. Veritabanõ tablo ve sorgularõna erişmek için, oluşturduğumuz bağlantõ
içinden Tables seçeneğini işaretleyin.
3. Tables içindeki Kitap tablosunu dsBook nesnesinin içine sürükleyin.
Kitap Web formunun Code Behind kodlarõ aşağõdaki gibi olacaktõr:
Imports System.Data.OleDb
Private Sub Page_Load(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles MyBase.Load
Dim kategoriID As String =
Request.Params("KategoriID")
Session("KategoriID") = kategoriID
'Response.Write(kategoriID)
Dim connStr As String =
"Provider=Microsoft.Jet.OleDB.4.0;Data Source=" &
Server.MapPath("KitapDb.mdb")
Dim conn As New OleDbConnection
conn.ConnectionString = connStr
Dim comm As New OleDbCommand
comm.CommandType = CommandType.Text
comm.CommandText = "Select * from Kitap Where
KategoriID =@kID"
comm.Connection = conn
comm.Parameters.Add("@kID", _
Convert.ToInt32(kategoriID))
Dim da As New OleDbDataAdapter
da.SelectCommand = comm
Dim ds As New dsBook
Try
conn.Open()
da.Fill(ds, "Kitap")
dlKitap.DataSource = ds.Kitap
dlKitap.DataBind()
Catch ex As Exception
Response.Write(ex.Message)
Finally
372
Modül 11:
If conn.State = ConnectionState.Open Then
conn.Close()
End If
End Try
End Sub
Modül 12: ASP.NET ile Durum
Yönetimi
Bu modülde ASP.NET Web uygulamalarõnda kullanõlan durum yönetimi üzerinde durulacaktõr. Durum yönetim alt yapõsõ kullanõlarak uygulama seviyesinde
veri paylaşõmõ gerçekleştirilebilir.
Bu modül tamamlandõktan sonra;
! ASP.NET Web uygulamalarõnda kullanõlan durum yönetim alt yapõsõnõ
tanõmlayabilecek,
! Application ve Session ile web uygulamalarõnõ yönetebilecek,
! Cookies ve Cookieless Session kavramlarõnõ açõklayabileceksiniz.
376
Modül 12:
Durum Yönetimi
Web formlarõ stateless çalõşõr. Yani kullanõcõlardan gelen isteklerin nereden geldiğ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
Sayfalar arasõ state yönetimi sayesinde sunucuda tutulan bilgiler yeniden
kullanõlabilir. Böylece veriler sunucuya gönderilip geri geldiğinde kullanõcõnõn
yeniden veri girişi yapmasõna gerek kalmaz.
Örneğin bir Login sayfasõna “Bilge” kullanõcõ ismiyle giriş yapõldõktan sonra, diğer sayfalarda “Merhaba Bilge” mesajõnõ verilebilir. Bu mesajõ göstermek için
“Bilge” kullanõcõ adõ state yönetimi ile bir değişkende tutulmalõdõr.
Sunucu taraflõ durum yönetimi birden fazla yönetim seçeneği sunar.
! Application state
! Session state
Kullanõcõ taraflõ durum yönetimi ise genellikle cookie nesneleri ile sağlanõr.
378
Modül 12:
Konu 1: Session
Kullanõcõ bilgisayarõ ve Web sunucusu arasõnda kurulan bağlantõya session denir. Bir session, birden fazla Web sayfasõnõ kapsayabilir. Kullanõcõnõn Web
uygulamasõna girişi ile çõkõşõ arasõnda tutulan değişkenlerdir ve bu değişkenler
kullanõcõya özeldir.
Session değişkenlerine, uygulama süresince erişilip gerekli bilgiler hõzlõ bir şe-
kilde kullanõlabilir. Sayfalar arasõ bilgi aktarmak için pratik bir yöntemdir.
Veritabanõna bağlantõ kurularak alõnan ve uygulama içinde sürekli kullanõlan bilgiler Session değişkenleri içinde tutulur.
ASP.NET Session değişkenlerini yönetirken HttpSessionState sõnõfõnõ kullanõr.
ASP.NET ile Durum Yönetimi
379
Kullanõcõ Web sunucusuna bağlanõp bir ASP.NET sayfasõ görüntülemeyi talep
ettiği zaman, sunucu, kullanõcõya bir SessionID atar ve bu değeri kullanõcõya
gönderir. Kullanõcõ uygulamadan çõkana kadar bu SessionID değişkeni sunucuda tutulur.
Kod 12.1: SessionID
Private Sub Page_Load(ByVal sender As Object, _
ByVal e As EventArgs) Handles MyBase.Load
Response.Write(Session.SessionID)
End Sub
Kod 12.2: Session Nesnesini kullanmak
Login.aspx sayfasõ
Private Sub BtnGiris_Click(ByVal sender As Object, _
ByVal e As EventArgs) Handles BtnGiris_Click
Session(“ad”) = TxtAd.Text
Response.Redirect(“Sayfam.aspx”)
End Sub
Sayfam.aspx sayfasõ
Private Sub Page_Load(ByVal sender As Object, _
ByVal e As EventArgs) Handles MyBase.Load
lblAd.Text = Session(“ad”) & ‘’Hoş Geldiniz”
End Sub
380
Modül 12:
ASP.NET uygulamalarõnõn, Session değişkenlerine ait çeşitli özellikleri,
web.config dosyasõ içinde tanõmlanõr.
<sessionState
mode="InProc"
stateConnectionString="tcpip=127.0.0.1:42424"
sqlConnectionString="data
source=127.0.0.1;Trusted_Connection=yes"
cookieless="false"
timeout="20"
/>
SessionState‘in varsayõlan attribute değerleri Visual Studio.NET tarafõndan
atanmõştõr.
! Mode: Session değerlerinin nerede tutulacağõnõ belirler. InProc değerler IIS içinde saklanõr. StateServer değerler sunucuda arka planda
çalõşan ASP.NET State servisinde saklanõr. SqlServer, değerler SQL
Server içindeki tablolarda saklanõr.
! Cookieless: Varsayõlan durumda False değerini alõr. Session değişkenlerinin kullanõcõ bilgisayarõnda cookie içinde tutulmasõnõ belirler.
True değeri verildiğinde ise SessionID değeri URL’ye eklenerek
kullanõcõya geri yollanõr.
! Timeout: Session değişkenlerinin yaşam süresini belirler. Varsayõlan
durumda 20 dakikadõr.
Bazõ tarayõcõlarõn cookie desteği olmadõğõ düşünüldüğünde, kullanõcõya ait bilgileri Session değişkenlerinde tutmak daha geçerli olacaktõr.
Session Değişkenine İlk Değer Vermek
Global.asax dosyasõnda, Session nesnesinin Start olay prosedürü içinde ilk
değer verme işlemleri gerçekleştirilebilir.
Kod 12.3’ de Session_Start olayõnõn kullanõmõ gösterilmektedir.
Kod 12.3: Session_Start
Sub Session_Start(ByVal Sender As Object, _
ByVal e As EventArgs)
Session(“ArkaPlan”) = “blue”
Session(“Yazi”) = “gray”
End Sub
ASP.NET ile Durum Yönetimi
381
Konu 2: Cookie
Kullanõcõ taraflõ durum yönetimi için cookie değişkenleri kullanõlõr. Internet
sitelerinin çoğu istemci bilgisayarda cookie denilen küçük metin dosyalarõ
oluşturur. Microsoft XP, Windows 2000 sistemlerinde cookie nesneleri
C:\Documents And Settings\Kullanõcõ Adõ\Cookies klasöründe saklanõr.
Bir siteye ilk defa giriş yapõldõğõnda cookie oluşur. Daha sonra tekrar giriş
yapõldõğõnda cookie içindeki değerler okunur ve bu değerlere göre gerekli
işlemler yapõlõr. Örneğin üyelik sistemi içeren Web sitelerindeki “Beni Hatõrla”
seçeneği bu mantõkla çalõşõr.
ASP.NET cookie değişkenlerini yönetirken HttpCookie sõnõfõnõ kullanõr. cookie
değişkenleri için yazma ve okuma işlemleri yapõlõrken Response ve Request
nesneleri kullanõlõr.
Örnek: Kullanõcõ adõ girilip “Cookie yap” düğmesi tõklanõnca kullanõcõ tarafõnda
bir cookie oluşturulur. “Cookie oku” düğmesi tõklandõğõnda ise oluşturulan
cookie nesnesinden veri alõnõr.
RESİM 12.1: Cookie kullanõmõ.
382
Modül 12:
Kod 12.4: Cookie oluşturup okumak
Private Sub btnYap_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnYap.Click
' Cookie oluşturmak için verilen direktif.
Dim mycookie As New HttpCookie("sitem")
' Formdan Gelen Bilgileri Anahtarlara Yazar.
mycookie("ad") = txtad.Text
' Cookie'nin Bitiş Süresi.
mycookie.Expires = DateTime.Now.AddDays(30)
' Cookie'yi Gönder.
Response.Cookies.Add(mycookie)
End Sub
Private Sub btnOku_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnOku.Click
' Cookie'yi oluşturur.
Dim mycookie As HttpCookie
' Cookie'yi kullanõcõ tarafõndan alõr.
myCookie = Request.Cookies("sitem")
' Cookie'den gelen değerlerle formu doldurur.
txtad2.Text = mycookie("ad")
End Sub
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
! Persistent (Kalõcõ): Persistent cookie nesneleri, temporary cookie nesnelerinden farklõ olarak hafõzadan silineceği zamanõ tutan bir değişkene
sahiptirler. Tarayõcõ, kalõcõ bir cookie isteğinde bulunan bir sayfa açtõğõnda, cookie sabit diske yazõlõr. Bu tür cookie nesneleri kullanõcõ
bilgisayarõnda istenilen sürede tutulabilir.
384
Modül 12:
Cookie nesnelerinin diskte tutulacağõnõn garantisi yoktur. Kullanõcõ sabit diskinden bu dosyalarõ silmiş olabilir.
ASP.NET ile Durum Yönetimi
385
Konu 3: Application
Application nesnesinin tanõmlanmasõ Session nesnesine benzer. Ancak
kullanõm alanõ çok farklõdõr. Web uygulamasõna giriş yapan ilk kullanõcõdan son
kullanõcõya kadar devam eder. Tüm kullanõcõlara ait olan bir değişkendir. Örneğin sitenin kaç kişi tarafõndan ziyaret edildiği, Application nesnesinde bir
değişken tanõmlanarak belirlenebilir. Application değişkenini kullanõrken lock
yaparak başka kullanõcõlarõn kullanmasõ engellenir. Değişken ile işiniz bittikten
sonra unlock yapõlmalõdõr.
386
Modül 12:
Session kullanõcõya özgü değişkenleri tutarken Application uygulamanõn
kendisine ait değişkenleri tutar.
ASP.NET Application değişkeni kullanõrken HttpApplicationState sõnõfõnõ
kullanõr.
Kod 12.5: Application Değişkeni
Sub Session_Start (ByVal sender as Object, _
ByVal e as EventArgs)
If (Application("ziyaret") = Nothing) Then
Application("ziyaret") = 0
End If
Application.Lock()
Application("Ziyaret") = Application("Ziyaret") + 1
Application.UnLock()
TextBox1.Text = "Ziyaret Sayõsõ: " & _
Application("ziyaret").ToString()
End Sub
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.
Application Değişkenine İlk Değer Vermek
Global.asax dosyasõnda, Application nesnesinin Start olay prosedürü
içinde başlangõç değerleri verilir. Bu olay prosedürü uygulama çalõşmaya
387
ASP.NET ile Durum Yönetimi
başladõğõnda ve ilk istek geldiğinde çalõşõr. Application değişkeni Web
uygulamasõ kaldõrõldõğõnda sonlanõr.
Kod 12.6’da Application_Start olayõnõn kullanõmõna örnek verilmiştir.
Kod 12.6: Application_Start
Sub Application_Start(ByVal sender As Object,
ByVal e As EventArgs)
Application(“ziyaret”)
End Sub
= 0
_
388
Modül 12:
Konu 4: Global.asax
Sadece sunucu üzerindeki uygulama üzerinde çalõşabilen bir dosyadõr.
Global.asax, ASP.NET Web uygulamasõnõn çalõştõğõ sõrada, çeşitli olaylarõ ele
alacak bir dosyadõr.
Bu dosyanõn birçok özelliği vardõr.
! Her bir Web uygulamasõna ait bir global.asax dosyasõ vardõr.
! Global.asax dosyasõ, Web uygulamasõna ait sanal dosya içinde
saklanõr.
! Uygulamaya ait application ve session değişkenlerine ilk değer vermek için kullanõlan başlangõç ve bitiş olaylarõnõ tutar.
! Bu dosyanõn tanõmlanmasõ isteğe bağlõdõr. Eğer bu dosya projede
bulunmuyorsa, ASP.NET hiçbir Application ve Session olay prosedürü tanõmlanmamõş varsayar.
Global.asax dosyasõnda desteklenen olaylar üç kategoride toplanabilir:
389
ASP.NET ile Durum Yönetimi
! Sayfaya bir istekte bulunulduğunda
! İstekte bulunan sayfa istemciye yollandõğõnda
! Koşullu Application olaylarõ gerçekleştiğinde
Koşullu Application olaylarõ ise Tablo 12.1’de listelenmiştir.
Tablo 12.1: Koşullu Application Olaylarõ
Olay ismi
Açõklama
Application_Start
Uygulama ilk çalõşmaya başladõğõnda çalõşõr.
Application_End
Uygulama sona erdiğinde çalõşõr.
Session_Start
Yeni bir session oluştuğunda çalõşõr.
Session_End
Session kapandõğõnda çalõşõr.
Application_Error
Uygulamanõn çalõşmasõ sõrasõnda bir hata oluştuğunda
çalõşõr.
390
Modül 12:
Modül Özeti
1. Session niçin kullanõlõr?
2. Cookie niçin kullanõlõr?
3. Cookie türleri nelerdir?
4. Application niçin kullanõlõr?
ASP.NET ile Durum Yönetimi
391
Lab 1: E-Ticaret Uygulamasõ
Geliştirmek
Bu uygulamada Session nesnesi ile KitapDetay sayfasõna erişim
engellenecektir. KitapDetay sayfasõna sadece sisteme giriş yapan kullanõcõlar
erişebilecektir.
Bu lab tamamlandõktan sonra:
! Session kullanõmõnõ öğreneceksiniz.
Session Kullanmak
ASPEticaret isimli projeyi açõn.
UyeGiris Formu İçinde Session Kullanmak
UyeGiris Web formunu açõn.
UyeGiris Web formunun Code Behind kodlarõ aşağõdaki gibi olacaktõr.
UyeGiris kod dosyasõ içindeki işaretli satõrlar, veritabanõ içinden çekilen
kayõtlarõn Session değişkenlere aktarõlmasõnõ sağlar.
Imports System.Data.OleDb
Private Sub btnGiris_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
btnGiris.Click
' Session("user") = "tamer"
Dim connStr As String = _
392
Modül 12:
"Provider=Microsoft.Jet.OleDB.4.0;Data Source=" _
& Server.MapPath("KitapDb.mdb")
Dim conn As New OleDbConnection
conn.ConnectionString = connStr
Dim comm As New OleDbCommand
comm.CommandType = CommandType.Text
comm.CommandText = _
"Select * from Musteri Where Email=@email and
Sifre=@sifre"
comm.Connection = conn
comm.Parameters.Add("@email", txtEmail.Text)
comm.Parameters.Add("@sifre", txtSifre.Text)
Dim sonuc As Boolean
Dim dr As OleDbDataReader
Try
conn.Open()
dr = comm.ExecuteReader
If dr.HasRows = True Then
sonuc = True
If dr.Read = True Then
Session("user") = dr.Item("Email")
Session("ad") = dr.Item("Ad")
Session("soyad") = dr.Item("Soyad")
Session("musteriId") =
dr.Item("MusteriID")
End If
Else
sonuc = False
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
If sonuc = True Then
Response.Redirect("Default.aspx")
Else
ASP.NET ile Durum Yönetimi
393
lblMesaj.Text = "Hatali kullanici adi veya
sifre"
End If
End Sub
KitapDetay Formu İçinde Session Kullanmak
KitapDetay Web formunu açõn.
KitapDetay Web formunun Code Behind kodlarõ aşağõdaki gibi olacaktõr.
KitapDetay kod dosyasõ içindeki işaretli satõrlar, kullanõcõnõn sisteme girişini
kontrol eder. Eğer kullanõcõ sisteme giriş yapmadõysa, user değişkeni içine değer aktarõlmaz. Bu durum kullanõcõnõn Giris.aspx sayfasõna yönlendirilmesine
sebep olur.
Imports System.Data.OleDb
Dim kID As String
Private Sub Page_Load(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles MyBase.Load
If Session("user") = "" Then
Response.Redirect("Giris.aspx")
End If
kID = Request.Params("kID")
'Response.Write(kID)
Dim connStr As String = _
"Provider=Microsoft.Jet.OleDB.4.0;Data Source=" _
& Server.MapPath("KitapDb.mdb")
Dim conn As New OleDbConnection
conn.ConnectionString = connStr
Dim comm As New OleDbCommand
comm.CommandType = CommandType.Text
comm.CommandText = _
"Select * from Kitap Where KitapID =@kitapID"
comm.Connection = conn
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
Ust Kullanõcõ Kontrolü İçinde Session
Kullanmak
Ust kullanõcõ kontrolünü açõn.
Ust kullanõcõ kontrolünün Code Behind kodlarõ aşağõdaki gibi olacaktõr. Ust kod
dosyasõ içindeki işaretli satõrlar, Session değişkeninin değerini lblAd isimli etikete yazar.
Private Sub Page_Load(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles MyBase.Load
If Session("user") <> "" Then
lblAd.Text = "Bay / Bayan : " & Session("ad") &
" " & Session("soyad")
btnCikis.Visible = True
Else
btnCikis.Visible = False
End If
End Sub
btnCikis düğmesindeki işaretli kod satõrlarõ, tüm Session değişkenlerinin
değerini sõfõrlar.
Private Sub btnCikis_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
btnCikis.Click
Session.Abandon()
btnCikis.Visible = False
Response.Redirect("Default.aspx")
End Sub
Okuyucu Notlarõ
Okuyucu Notlarõ

Benzer belgeler

Konu 1

Konu 1 3. Açılan pencere üzerinden .NET, COM, Projects sekmelerinden herhangi birini seçin. .NET, projeye NET bileşen kütüphanelerini eklemek için kullanılır. COM, projeye COM bileşen kütüphanelerini ekle...

Detaylı

Web Tasarım ve Programlama Dersi Özeti 2013 PDF

Web Tasarım ve Programlama Dersi Özeti 2013 PDF 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 Bas...

Detaylı

Uygulamalı Yazılım Projeleri

Uygulamalı Yazılım Projeleri 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Çİ

Detaylı

ASP.Net`e Giriş

ASP.Net`e Giriş ASP.Net ile İlk Web Uygulamamız. .......................................................................................................................................................................

Detaylı