yaz - td software · Önsöz .net yazılım teknolojisi ile yeni tanışan ya da daha önceden .net...

385

Upload: dangdung

Post on 21-Sep-2018

228 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Yaz - TD Software · Ö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ş
Page 2: Yaz - TD Software · Ö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ş

YazõlõmProfesyoneli 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.

Page 3: Yaz - TD Software · Ö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ş
Page 4: Yaz - TD Software · Ö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ş

Ö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 konula-rõnda sizlerin çok iyi seviyelere gelmesine destek verecektir.

Eğitimcilerinizi yakõndan takip etmenizi sağlayacak bu yayõn ile bol bol örnek kod inceleme fõrsatõna sahip olacaksõnõz.

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 do-layõ ö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

Page 5: Yaz - TD Software · Ö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ş

İç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

Page 6: Yaz - TD Software · Ö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ş

İç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

Page 7: Yaz - TD Software · Ö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ş

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

Page 8: Yaz - TD Software · Ö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ş

İç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

Page 9: Yaz - TD Software · Ö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ş

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

Page 10: Yaz - TD Software · Ö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ş

İç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

Page 11: Yaz - TD Software · Ö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ş

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

Page 12: Yaz - TD Software · Ö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ş

İç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

Page 13: Yaz - TD Software · Ö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ş

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

Page 14: Yaz - TD Software · Ö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ş

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 öğreneceksi-niz. 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.

Page 15: Yaz - TD Software · Ö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ş

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ç çu-buklarõ ile kolay bir şekilde gerçekleştirilir.

Page 16: Yaz - TD Software · Ö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ş

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, Win-dows tabanlõ projeler için Windows formlarõnõn kullanõlmasõ ve bazõ referansla-rõn eklenmesi gerekir. Visual Studio ortamõnõn sağladõğõ şablonlar, proje dosyalarõnõn başlangõç kodlarõnõ otomatik olarak yazõp gerekli referanslarõ ekleyerek geliştiriciye hõzlõ bir başlangõç sağlar.

! Windows Application: Windows tabanlõ uygulamalar geliştirmek için kullanõlõr.

! Class Library: Diğer projeler için class kütüphaneleri sağlayan DLL (Dynamic Link Library) oluşturmak için kullanõlõr. Bu bileşenler projelere Reference olarak eklenerek tekrar kullanõlõr.

! Windows Control Library: Kullanõcõ tanõmlõ Windows kontrolleri oluşturmak için kullanõlõr. Bu kontroller Windows uygulamalarõnda, bir-çok formda tekrar kullanõlmak üzere tasarlanõr.

! Smart Device Application: Mobil cihazlar üzerinde uygulama geliştir-mek için kullanõlõr.

! ASP.NET Web Application: IIS (Internet Information Services) üze-rinde çalõşacak Web uygulamalarõ geliştirmek için kullanõlõr.

! ASP.NET Web Service: Web uygulamalarõna XML Web Service sağlayan projeler geliştirmek için kullanõlõr. Oluşturulan bu projeler, di-ğer uygulamalara Web Reference olarak eklenir.

! Web Control Library: Web uygulamalarõnda, kullanõcõ tanõmlõ kontrol-ler oluşturmak için kullanõlõr.

Page 17: Yaz - TD Software · Ö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ş

6 Modül 1:

! Console Application: Komut penceresinde çalõşacak konsol uygulamalarõ geliştirmek için kullanõlõr.

! Windows Service: Windows altõnda sürekli çalõşan uygulamalar için kullanõlõr. Bu uygulamalar, kullanõcõlarõn sisteme giriş yapmadõğõ durum-larda da çalõşmaya devam eder.

! Other Projects: Enterprise Applications (şirket uygulamalarõ), Deploy-ment Projects (yükleme projeleri), Database Projects (veritabanõ proje-leri) 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 ya-zõn.

6. OK düğmesi tõklandõğõnda proje açõlõr. Solution için ayrõ bir klasör seçil-memişse, proje dosyalarõ proje ismi ile oluşturulan klasör altõnda oluştu-rulur.

Page 18: Yaz - TD Software · Ö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ş

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õşõr-ken yaptõğõ ayarlarõ tutar ve proje tekrar açõldõğõ zaman bu ayarlarõ geti-rir.

! Project Dosyalarõ (.vbproj, .vbproj.user). Bir projenin içinde bulunan bileşenlerin, eklenen referanslarõn tutulduğu proje dosyasõdõr. Visual Basic projeleri .vbproj uzantõlõ dosya ile oluşturulur. Bu dosya aynõ za-manda, bir solution içinde farklõ dilde ve tipteki projeleri ayõrt etmek için kullanõlõr. Projeye özgü ayarlar ise .vbproj.user dosyasõnda tutulur.

! Yerel Proje Dosyalarõ (.vb). Form, class, module gibi bileşenlerin tutul-duğu dosyalardõr. .vb uzantõlõ bir dosya içinde birden çok class ve module tutulabilir. Ancak projedeki her form için ayrõ bir .vb dosyasõ oluşturulur.

! Web Projeleri Dosyalarõ (.aspx, .asmx, .asax). Web uygulamalarõnda oluşturulan dosyalar Web sunucusunda (ISS) tutulur. Bu dosyalar web formlarõ için .aspx, Web Service için .asmx, global sõnõfõ için .asax uzantõsõna sahiptir.

Page 19: Yaz - TD Software · Ö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ş

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 pro-jeye dahil edilebilir.

Page 20: Yaz - TD Software · Ö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ş

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ştiril-miş assembly�ler eklenebilir. Özellikle gelişmiş projelerde assembly�ler ayrõ programcõlar tarafõndan yazõlarak ortak bir proje altõnda toplanabilir.

Page 21: Yaz - TD Software · Ö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ş

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 her-

hangi 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. Bir-

den 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:

Page 22: Yaz - TD Software · Ö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ş

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 referans-tõ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.

Page 23: Yaz - TD Software · Ö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ş

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 deni-len isim alanõ altõnda gruplandõrõlõr. Bu isim alanõ içinde sõnõflar, arayüzler ve modüller bulunur. .NET içinde veritabanõ uygulamalarõ geliştirmek için System.Data.dll kütüphanesine ihtiyaç duyulur. Bu kütüphane Visual Studio .NET içindeki tüm proje şablonlarõnda otomatik olarak yer alõr. System.Data.dll kütüphanesi içinde şu isim alanlarõ bulunur:

! System.Data ! System.Data.Common ! System.Data.SqlClient ! System.Data.OleDb ! System.Data.SqlTypes ! System.Xml

Page 24: Yaz - TD Software · Ö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ş

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

Page 25: Yaz - TD Software · Ö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ş

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 pro-jelere eklenir. Bu genel isim alanõna kök isim alanõ (root namespace) denir. Dolayõsõyla yeni oluşturulan isim alanlarõ, kök isim alanõ ile birlikte belirtilmelidir.

Herhangi bir isim alanõ içinde birden fazla isim alanõ tanõmlanabilir. Örnekte NSBilgeAdam isim alanõ içinde Idari, Egitim ve Ogrenci adõnda üç ayrõ isim alanõ eklenmiştir.

Namespace NSBilgeAdam

' BilgeAdam isim alanõnda kullanõlacak

' Class, Module ve Interface�ler tanõmlanõr

Namespace Idari

Class Personel

End Class

End Namespace

Namespace Egitim

Class Grup

End Class

End Namespace

Namespace Ogrenci

Class Bilgi

End Class

End Namespace

'vs...

End Namespace

Page 26: Yaz - TD Software · Ö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ş

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 kulla-nõmlar, kodun okunmasõnõ oldukça zorlaştõrõr. Örnekte sõnõflar bu yöntemle ta-nõ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 yaz-mak 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

Page 27: Yaz - TD Software · Ö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ş

16 Modül 1:

Inherits System.Windows.Forms.Form

' ...

Dim OgrBilgi As New ogr.Bilgi

End Class

Page 28: Yaz - TD Software · Ö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ş

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:

Page 29: Yaz - TD Software · Ö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ş

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 proje-nin 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.

Page 30: Yaz - TD Software · Ö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ş

Geliştirme Ortamõnõ Tanõmak 19

Konu 2 : Proje Bileşenlerini Tanõmak

Page 31: Yaz - TD Software · Ö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ş

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õ pro-jeye dahil etmek için, resmi sağ tõklayõp Include In Project komutu verilmelidir. Solution Explorer panelini görüntülemek için View menüsünden Solution Ex-plorer komutunu verin.

Page 32: Yaz - TD Software · Ö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ş

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 Compo-nents seçeneği ile birlikte varsayõlan olarak görünür. Bu seçenek ile projeye da-hil edilen referanslar ve bu referanslarla ilişkili isim alanlarõ hiyerarşik bir şekilde listelenir. Objects paneli içinden seçilen herhangi bir isim alanõ genişletilirse, içindeki tüm öğeler hiyerarşik şekilde listelenir. Bu öğelerin herhangi biri seçildiğinde, o öğeye ait tüm alt öğeler Members penceresinde listelenir. Objects penceresinin sağ alt köşesinde ise, seçilen öğenin tanõmõnõ ve hangi isim alanõnõn altõnda olduğu gösterilir.

Page 33: Yaz - TD Software · Ö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ş

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 ma-kine bileşenlerinin yönetimi ve kullanõmõnõ sağlar. Server Explorer, Data Connections ve Servers olmak üzere iki sekmeden olu-şur. Veri sağlayõcõlarõ ile çalõşmak için Data Connections seçeneği kullanõlõr. Yeni bir veri sağlayõcõ oluşturmak için belirtilen adõmlarõ takip edin.

1. Server Explorer üzerinden Data Connections seçeneğini işaretleyin. 2. Data Connections seçeneğini sağ tõklayõn. Açõlan menüden Add

Connection komutunu verin. 3. Açõlan Data Link Properties penceresinden bağlantõ oluşturulur.

Servers sekmesinin altõndaki SQL Servers menüsünü kullanarak veritabanõ iş-lemleri yerine getirilebilir ve veritabanõ nesneleri sürükle bõrak metodu ile form üzerine sürüklenebilir.

Page 34: Yaz - TD Software · Ö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ş

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 ol-mak neredeyse imkansõzdõr. Bu nedenle yazõlõm geliştiricilerin işini kolaylaştõr-mak için, Visual Studio .NET içinde dinamik yardõm kütüphanesi oluşturulmuş-tur. Dinamik yardõm, uygulama geliştirirken yazõlan koda göre tüm yardõm konularõnõ listeler.

Dinamik yardõmõ aktif hale getirmek için, Help menüsünden Dynamic Help komutunu ve-rin.

Page 35: Yaz - TD Software · Ö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ş

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 uygu-lama gelişiminin takip edilmesini sağlar. Görev Listesi içine eklenen tüm görev-ler önem sõrasõna göre sõralanabilir. Görev Listesi aracõnõ proje ortamõnda aktif hale getirmek için View menüsünün Other Windows alt menüsünden Task List komutunu seçin. Görev Listesi aracõ üzerinde Click here to add a new task alanõ tõklanarak yeni görev eklenebilir. Biten görevin önündeki onay kutusu tõklanarak görev sonlandõrõlabilir.

Page 36: Yaz - TD Software · Ö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ş

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 durma-sõ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şkenle-rin değerlerinin değiştirilmesini sağlar.

Page 37: Yaz - TD Software · Ö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ş

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 dur-masõ 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.

Page 38: Yaz - TD Software · Ö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ş

Geliştirme Ortamõnõ Tanõmak 27

Debug Panelleri

Çalõşma durdurulduktan sonra, değişkenlerin o andaki durumlarõ Debug panel-leri ile gözlemlenir. Bu paneller ancak ata ayõklama sõrasõnda kullanõlabilir. De-bug 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 ara-sõ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 yor-dam 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.

Page 39: Yaz - TD Software · Ö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ş

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

Page 40: Yaz - TD Software · Ö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ş

Geliştirme Ortamõnõ Tanõmak 29

Konu 4: Uygulamanõn Derlenmesi

Page 41: Yaz - TD Software · Ö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ş

30 Modül 1:

Derleme Seçeneklerine Bakõş

Visual Basic .NET ile geliştirilen uygulamalar çalõştõrõlmadan önce derleme işle-minden geçer. Derleme işlemi ile kodun Visual Basic söz dizimine uygun yazõ-lõp yazõlmadõğõ kontrol edilir ve kod çalõştõrõlmak üzere makine diline çevrilir. Uygulamalarõn derlenmesi Build menüsünden yapõlõr.

! Build Solution: Solution içindeki, son derleme işleminden sonra deği-şen projelerin derlenmesini sağlar.

! Rebuild Solution: Solution içindeki tüm projelerin tekrar derlenmesini sağlar.

! Build �Proje İsmi�: Belirtilen projenin, son derleme işleminden sonra değişen bileşenlerinin derlenmesini sağlar.

! Rebuild �Proje İsmi�: Belirtilen projenin tüm bileşenlerinin tekrar derlenmesini sağlar.

Uygulama derlendikten sonra bulunan hatalar Task List panelinde görüntülenir. Task List panelinde görüntülenen hatalar çift tõklanarak, hatanõn yapõldõğõ satõra ulaşõlõr.

RESİM 1.3.

Visual Basic .NET ile uygulama geliştirirken yapõlan söz dizimi hatalarõ hemen Task List paneline yansõr. Buna Background Compiling denir.

Page 42: Yaz - TD Software · Ö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ş

Geliştirme Ortamõnõ Tanõmak 31

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?

Page 43: Yaz - TD Software · Ö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ş

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 komu-tunu 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õkla-

yõ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 Assem-

bly Name metin kutusuna Cagri yazõn ve OK düğmesini tõklayõn.

Page 44: Yaz - TD Software · Ö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ş

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()

Page 45: Yaz - TD Software · Ö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ş

34 Modül 1:

Hata Ayõklama 1. Formun Load olayõna bir BreakPoint yerleştirin. 2. Projeyi F5 tuşuna basarak çalõştõrõn. Başlangõç formu yüklendiği zaman

Load olayõ çalõşacağõ için, çalõşma belirtilen noktada durur. 3. Debug menüsünden Step Into komutunu seçerek ya da F11 tuşuna

basarak kod içinde ilerleyin. ConnectionOlustur isimli metodun içine girildiği görülür.

4. ConnectionOlustur metodundan çõkõldõktan sonra, Locals panelini açõn ve con isimli değişkeni inceleyin.

5. Command panelini açõn ve immed komutunu yazarak, Immediate moduna geçin.

6. Command paneline msgbox(con.State) yazarak Connection nesnesinin State özelliğini öğrenin.

7. Debug menüsünden Continue komutunu vererek ya da F5 tuşuna basarak çalõşmanõn ilerlemesini sağlayõn.

8. Formu kapatarak uygulamayõ sonlandõrõn. 9. con.Open() kodunun bulunduğu satõra BreakPoint koyun ve sağ

tõklayarak BreakPoint Properties komutunu verin. 10. Condition düğmesini tõkayõn ve metin kutusuna con.State = 1 yazõn.

con nesnesinin State özelliği 1 (bağlantõ açõk) olduğu zaman çalõşma-nõn durmasõ ayarlanõr.

11. OK düğmesini tõklayõn ve projeyi çalõştõrõn. Çalõşmanõn belirtilen nok-tada durmadõğõ gözükür. Bunun nedeni, BreakPoint içinde verilen şartõn sağlanmamasõdõr.

12. Formu kapatarak uygulamayõ sonlandõrõn ve Visual Studio ortamõndan çõkõn.

Page 46: Yaz - TD Software · Ö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ş

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.

Page 47: Yaz - TD Software · Ö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ş

38 Modül 2:

Konu 1: Veri Merkezli Uygulamalar

Page 48: Yaz - TD Software · Ö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ş

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üresi-nin uzamasõna sebep olur. Hatta daha büyük organizasyonlarda işlemlerin ya-vaşlamasõna ve durmasõna sebep olabilir. Artan ihtiyaçlar doğrultusunda veri depolamak ve depolanan veriye erişmek için çeşitli veri depolama yöntemleri geliştirilmiştir. Bu yöntemler şunlardõr:

! Yapõsal Olmayan: Bu yöntem ile depolanan veriler için belirli bir sõnõflandõrma ve sõralama yoktur. Veriler düz bir şekilde kaydedilir. Örneğin basit not dosyalarõ.

! Yapõsal: Bu yöntem ile depolanan veriler çeşitli gruplara ayrõlarak saklanõr, fakat bu gruplar arasõnda bir alt-üst ayrõmõ yapõlmaz. Örneğin virgülle ayrõlmõş dosyalar (csv), Excel belgeleri.

! Hiyerarşik: Hiyerarşik depolama yöntemini ağaç yapõsõna benzetebili-riz. Bu yöntemde veriler çeşitli kategorilere bölünerek depolanõr. Her bir kategorinin içinde alt kategorilerde olabilir. Örneğin XML (eXtensible Markup Language) dosyalarõ.

! İlişkisel Veritabanõ: İlişkisel veritabanlarõnda veriler tablolar üzerinde depolanõr. Tablo içindeki her satõr kaydõ, her sütun ise veriyi ifade eder. Örneğin SQL Server, Oracle, Access.

! Nesne Yönelimli Veritabanõ: En gelişmiş veri depolama yöntemidir. Bu yöntemde veriler; ihtiyaca göre gruplandõrõlarak nesneler içinde saklanõr. Örneğin Versant, AOL.

ADO.NET bu depolama tekniklerinin tümünü destekler.

Page 49: Yaz - TD Software · Ö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ş

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õğõ or-tamlardõr. Bu ortamlarda veri alma ve değiştirme işlemleri uygulama ile veri kaynağõ arasõnda bağlantõ kurulduktan sonra gerçekleştirilir. Bağlantõlõ veri or-tamlarõnda, veri işlemleri gerçekleştiği sürece bağlantõ açõk kalõr. İlk bilgisayar üretiminden bugüne en çok tercih edilen yöntem bağlantõlõ veri or-tamlarõ olmuştur. Bağlantõlõ ortamlar veriye erişmek için birçok avantaj sağlar.

Avantajlarõ ! En güvenli veri ortamõdõr. ! Veri kaynağõna yapõlan eş zamanlõ erişimlerde, veri kaynağõnõn kontro-

lünü kolaylaştõrõr.

Dezavantajlarõ ! Uygulama ile veri kaynağõ arasõnda gerçekleşen bağlantõyõ koruyabil-

mek için sabit bir ağ bağlantõsõnõn olmasõ gerekir. ! Uygulama ile veri kaynağõ arasõndaki bağlantõ ağ üzerinden gerçekleş-

tiği için, ağ trafiğinin yoğunluğunu artõrõr.

Örneğin araba üreten bir fabrikada yapõlan üretim bilgilerinin diğer birimlere ulaştõrõlmasõ ve bu kayõtlarõn depolanmasõ için eşzamanlõ bir bağlantõ kurulmasõ gereklidir. Ya da bir emlak firmasõnda emlakçõnõn, mülk ve menkul bilgilerini güncel tutabilmesi için sabit bir bağlantõ kurmasõ gereklidir.

Page 50: Yaz - TD Software · Ö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ş

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õlabi-lir. Uygulamada sadece çevrimiçi veya çevrimdõşõ ortamlardan birini seçmek ye-terli 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 üzerin-

deki yük hafifletilir. Bu durum performans artõşõnõ sağlar.

Dezavantajlarõ ! Bağlantõsõz veri ortamlarõnda, verilerin güncel kalmasõna dikkat

edilmelidir. Bu ortamlarda veri güncelleme işlemleri farklõ zamanlarda gerçekleştirilebilir. Veri üzerinde yapõlan bu değişimlerin diğer kullanõcõ-lara gösterilebilmesi için çeşitli çözümler geliştirilmelidir.

Page 51: Yaz - TD Software · Ö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ş

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 so-nunda veriler sunucu bilgisayara aktarõlõr.

Page 52: Yaz - TD Software · Ö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ş

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 aran-mõş, amacõn veriyi birçok kullanõcõ arasõnda paylaştõrmak olduğu durumda ise ana verinin nerede saklanacağõ konusunda çözüm yollarõ aranmõştõr. Kullanõcõ sayõsõnõn ve verinin boyutunun artmasõyla, veri erişimi için bilinen mo-deller de oldukça gelişmiştir. Birebir veri paylaşõmõ yerine, Internet üzerinden çoklu kullanõcõ desteğine açõk veri erişim modelleri geliştirilmiştir. Günümüzde gelinen son nokta ise, her an her yerden veriye kolayca erişmemizi sağlayan XML Web Servis modelidir. Veri merkezli uygulamalar geliştirmek için veri erişim modelleri kullanõlõr. Bir veri erişim modelindeki her mantõksal birime katman (tier) denir. Veri merkezli bir uygulamada katman sayõsõ makine sayõsõna bağlõ değildir. Katman sayõsõnõ veri erişim modelindeki düzeyler belirler.

Page 53: Yaz - TD Software · Ö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ş

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 dil-

den 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.

Page 54: Yaz - TD Software · Ö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ş

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.

Page 55: Yaz - TD Software · Ö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ş

46 Modül 2:

Konu 2: ADO.NET�e Giriş

Page 56: Yaz - TD Software · Ö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ş

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 teknolojisi-nin en yeni versiyonudur. ADO ile aynõ programlama modelini kullanmamakla birlikte, ADO modelinden gelen pek çok çözüm yolunu da beraberinde getirir. Uygulama gelişim ihtiyacõ arttõkça, yeni uygulamalarda Web uygulama mode-line olan bağlõlõk gittikçe azalmaktadõr. Şimdilerde ise ağ bağlantõlarõ üzerinden veriyi rahatça aktarabilmek için XML kullanõmõna olan yönelim artmaktadõr. İşte ADO.NET, XML ve ADO.NET�in .NET Framework içinde en uygun şekilde programlama ortamõ oluşturmamõzõ sağlar. ADO.NET modelinin diğer veri erişim modellerine göre üstünlüklerini şöyle sõralayabiliriz:

! ADO.NET, veritabanõndan çekilen verilerin kopyasõnõ XML formatõnõ kullanarak belleğe aktarõr.

! Uygulamanõn kullanõcõ sayõsõ arttõkça kaynak kullanõmõ da artar. N-kat-manlõ (N-tier) uygulama yapõsõ kullanõlarak, uygulamalarõn katmanlar üzerinden dağõtõlmasõ sağlanõr. Böylece uygulamalarõn ölçeklenirliği ar-tar.

! ADO.NET ile bağlantõsõz veri ortamlarõ için uygulama geliştirilebilir. ! ADO.NET gelişmiş XML desteği verir.

Page 57: Yaz - TD Software · Ö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ş

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 Ser-visleri ü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.

Page 58: Yaz - TD Software · Ö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ş

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 (Win-dows, 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.

Page 59: Yaz - TD Software · Ö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ş

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 bulu-nur.

Öğ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.

Page 60: Yaz - TD Software · Ö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ş

Geliştirme Ortamõnõ Tanõmak 51

Her veri sağlayõcõsõ içinde birçok bağlantõ nesnesi bulunur:

! Connection ! Command ! DataReader ! DataAdapter

Page 61: Yaz - TD Software · Ö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ş

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.

Page 62: Yaz - TD Software · Ö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ş

Geliştirme Ortamõnõ Tanõmak 53

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?

Page 63: Yaz - TD Software · Ö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ş

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õkla-yõn.

Page 64: Yaz - TD Software · Ö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ş

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õkla-yõ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.

Page 65: Yaz - TD Software · Ö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ş

56 Modül 2:

Page 66: Yaz - TD Software · Ö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ş

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.

Page 67: Yaz - TD Software · Ö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ş

60 Modül 3:

Konu 1: Veri Sağlayõcõ Seçmek

Page 68: Yaz - TD Software · Ö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ş

Veri Kaynaklarõna Bağlanmak 61

Veri Sağlayõcõ Nedir?

ADO.NET mimarisi, uygulama ile veritabanõ arasõnda bağlantõ kurmak ve kuru-lan 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 perfor-mansõ 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

Page 69: Yaz - TD Software · Ö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ş

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.

Page 70: Yaz - TD Software · Ö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ş

Veri Kaynaklarõna Bağlanmak 63

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 çek-mek için kullanõlan sõnõftõr.

XXXDataAdapter Veritabanõndan çekilen verileri DataSet içine veya

DataSet�e çevrimdõşõ eklenmiş verileri veritabanõna aktar-

mak için kullanõlan sõnõftõr.

Page 71: Yaz - TD Software · Ö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ş

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 kapat-mak için kullanõlan sõnõftõr.

! SqlCommand; MS SQL Server üzerinde Stored Procedure (Saklõ Yor-damlar) 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 kapat-mak 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ğla-yõ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.

Page 72: Yaz - TD Software · Ö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ş

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ön-dü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 veri-leri DataSet içine ve DataSet�e çevrimdõşõ eklenmiş verileri ilgili veritabanõna aktarmak için kullanõlan sõnõftõr.

Page 73: Yaz - TD Software · Ö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ş

66 Modül 3:

Konu 2: Bağlantõ Oluşturmak

Page 74: Yaz - TD Software · Ö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ş

Veri Kaynaklarõna Bağlanmak 67

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 Tanõmõ

Provider Sadece OleDbConnection nesnelerinde kullanõlõr.

Bağlantõ sağlayõcõsõnõn ismini tutar. Sağlayõcõ isimleri Tablo 3.4�te belirtilmiştir.

ConnectionTimeout veya

Connect Timeout

Veritabanõ bağlantõ için beklenmesi gereken maksi-mum 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-

cağõnõ belirtir. True, False veya SSPI girilebilir.

SSPI, True ile eş anlamlõdõr ve bu durumda Windows

hesabõ kullanõlõr.

Persist Security Info Varsayõlan değeri False olur. Bu durumda güvenlik

için hassas bilgileri geri döndürmez. True olduğunda

ise güvenlik risk taşõmaya başlar.

Page 75: Yaz - TD Software · Ö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ş

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 transfe-rinde kullanõlan paketlerin boyutunu belirtir.

Mode Veritabanõnõ Read-only (Sadece okunur) ya da Write (Yazõlabilir) modunu belirtir. SQL Server bağlantõla-rõ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

Page 76: Yaz - TD Software · Ö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ş

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şturu-lan 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.

Page 77: Yaz - TD Software · Ö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ş

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.

Page 78: Yaz - TD Software · Ö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ş

Veri Kaynaklarõna Bağlanmak 71

Bağlantõ Cümlesi(Connection String) Örnekleri

Page 79: Yaz - TD Software · Ö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ş

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ümle-leri 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 dos-yasõ ü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 Pass-word=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://Your-Remote-Server-IP; Remote Pro-vider=Microsoft.Jet.OLEDB.4.0; Data Source=Db_Name.mdb"

Page 80: Yaz - TD Software · Ö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ş

Veri Kaynaklarõna Bağlanmak 73

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; Data-base=DB _Name;Trusted_Connection=yes;"

Page 81: Yaz - TD Software · Ö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ş

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 Au-thentication 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 Cata-log=DB_Name;Integrated Security=SSPI;"

Page 82: Yaz - TD Software · Ö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ş

Veri Kaynaklarõna Bağlanmak 75

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 Win-dows Authentication ile bağ-lanmak

"Data Source= Server_Name;Initial Cata-log=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österil-mektedir.

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

Page 83: Yaz - TD Software · Ö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ş

76 Modül 3:

Konu 3: Bağlantõ Yönetimi

Page 84: Yaz - TD Software · Ö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ş

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 Col-lector� adõ verilen çöp toplayõcõ devreye girerek bağlantõnõn kapatõlmasõnõ sağ-lar. Bu durum bağlantõ değişkeninin geçici bir süre bellekte yer tutmasõna ne-den olur.

Bağlantõ nesnesinin Dispose metodu da bağlantõyõ kapatmak için kullanõlabilir.

Örnekte Northwind.mdb isimli Access veritabanõ üzerinde, Open ve Close me-totlarõnõn kullanõmõ gösterilmektedir.

Page 85: Yaz - TD Software · Ö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ş

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 do-layõ bağlantõ açõlmayabilir ve uygulama hata üretebilir. Bu çalõşma zamanõ hatalarõ;

! Sunucunun bulunamamasõndan, ! Veritabanõnõn bulunamamasõndan, ! Hatalõ kullanõcõ adõ veya parola girilmesinden, ! Donanõm veya yazõlõmdan kaynaklanabilir.

Try, Catch, Finally deyimlerini kullanarak bir bloğu oluşabilecek potansiyel hatalardan korunur. Try bloğu içinde, hata üretebilecek kodlar yazõlõr. Örneğin tüm veritabanõ işlem-leri bu blok içersine yazõlmalõdõr. Catch bloklarõ, uygulamanõn ürettiği hatalarõ, tiplerine göre sõralõ bir şekilde iş-ler. Bu blok içine, yakalanan hataya göre yapõlacak işlemler yazõlmalõdõr. Örne-ğin bağlantõnõn açõlmadõğõ bir durumda veritabanõ işlemleri gerçekleştirilmeye çalõşõldõğõ zaman kullanõcõya bağlantõnõn açõlmasõnõ bildiren mesaj kutusu çõkarõlabilir. Finally bloğunda, Try ve Catch bloklarõndan herhangi biri işlendikten sonra çalõşõr. Bu blokta, hatanõn üretildiği veya üretilmediği iki durumda da yapõlmasõ gereken işlemler yazõlõr. Örneğin, bağlantõnõn kapatõlmasõ her iki durumda da yapõlmasõ gereken bir işlemdir.

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.

Page 86: Yaz - TD Software · Ö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ş

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

Page 87: Yaz - TD Software · Ö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ş

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õl-dõğõ 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.

Page 88: Yaz - TD Software · Ö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ş

Veri Kaynaklarõna Bağlanmak 81

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

Page 89: Yaz - TD Software · Ö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ş

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?

Page 90: Yaz - TD Software · Ö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ş

Veri Kaynaklarõna Bağlanmak 83

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 du-rumu 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

Page 91: Yaz - TD Software · Ö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ş

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")

Page 92: Yaz - TD Software · Ö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ş

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ğer-leri alõn ve bağlantõ cümlesi oluşturun.

Page 93: Yaz - TD Software · Ö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ş

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)

Page 94: Yaz - TD Software · Ö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ş

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

Page 95: Yaz - TD Software · Ö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ş

88 Modül 3:

' OleDB baglantisi olusturulduysa

oleDbCon.Close()

Else

' Sql baglantisi olusturulduysa

sqlCon.Close()

End If

End Sub

Page 96: Yaz - TD Software · Ö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ş

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

Page 97: Yaz - TD Software · Ö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ş

92 Modül 4:

Konu 1: Bağlantõlõ Veri Ortamlarõyla Çalõşmak

Page 98: Yaz - TD Software · Ö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ş

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õğõ or-tamlardõr. Bu ortamlarda veri alma ve değiştirme işlemleri uygulama ile veri kaynağõ arasõnda bağlantõ kurulduktan sonra gerçekleştirilir. Bağlantõlõ veri ortamlarõ ile veritabanõ üzerinde, gerekli tüm veritabanõ işlemleri yapõlabilir.

! Veritabanõndan tek değer çekme ! Sadece okunabilir kayõt kümeleri döndürme ! Kayõt ekleme ! Kayõt silme ! Kayõt güncelleme

Page 99: Yaz - TD Software · Ö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ş

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 çek-

mek için kullanõlan nesnedir. Kayõtlar XXXCommand nesnesi-

nin ExecuteReader metodu ile XXXDataReader içine

aktarõlõr.

Page 100: Yaz - TD Software · Ö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ş

Bağlantõlõ (Connected) Veritabanõ İşlemleri 95

Konu 2: Command ile Çalõşmak

Page 101: Yaz - TD Software · Ö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ş

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, ek-leme, 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 özel-likleri aşağõda belirtilmiştir.

Page 102: Yaz - TD Software · Ö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ş

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 para-metre tanõmlanabilir.

Page 103: Yaz - TD Software · Ö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ş

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ür-

mek için kullanõlõr.

ExecuteReader Çalõştõrõlan Command nesnesinden geriye kayõt kümesi dön-

dü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 versiyon-larõ için kullanõlõr.

Page 104: Yaz - TD Software · Ö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ş

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õmlan-mõş 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 üze-

rine sürüklenir. 4. Eklenen Command nesnesinin özellikleri Tablo 4.4�e göre ayarlanõr.

Page 105: Yaz - TD Software · Ö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ş

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 varo-

lan 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.

Page 106: Yaz - TD Software · Ö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ş

Bağlantõlõ (Connected) Veritabanõ İşlemleri 101

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 nesnesinin Parameters koleksiyonuna bu nesneler eklenir.

! 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.

Page 107: Yaz - TD Software · Ö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ş

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 maksi-mum boyutu.

Direction Parametrenin türü.

ParameterDirection değerlerinden biri

ile belirtilir. Bu özelliğin alabileceği değer-ler:

ParameterDirection.Input (varsayõ-

lan değer)

ParameterDirection.InputOutput

ParameterDirection.Output

ParameterDirection.ReturnValue

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.

Page 108: Yaz - TD Software · Ö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ş

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 ta-kip edilir.

Page 109: Yaz - TD Software · Ö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ş

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 ko-mut 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.

Page 110: Yaz - TD Software · Ö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ş

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 OleDbCommand nesnesinin ExecuteScalar metodu ile Universiteler tablosundaki toplam kayõt sayõsõ geri döndürülür.

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)

Page 111: Yaz - TD Software · Ö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ş

106 Modül 4:

ExecuteScalar metodu ile geriye değer döndürmek için, sadece Sum veya Count gibi fonksiyonlar kullanõlmaz. Aynõ zamanda Select cümlesi veya Stored Procedure ile geriye tek değer döndürülebilir. Örnekte Urun tablosun-daki stok miktarõ SqlCommand nesnesi ile geriye döndürülür.

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())

Page 112: Yaz - TD Software · Ö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ş

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ğlan-tõ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.

Page 113: Yaz - TD Software · Ö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ş

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.

Page 114: Yaz - TD Software · Ö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ş

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ön-dü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

geri döndürür.

GetInt32 Belirli bir kolonun değerini 32-bit tamsayõ(Integer) olarak

geri döndürür.

GetInt64 Belirli bir kolonun değerini 64-bit tamsayõ(Long) olarak

geri döndürür.

GetName Belirli bir kolonun ismini geri döndürür.

Page 115: Yaz - TD Software · Ö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ş

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.

Page 116: Yaz - TD Software · Ö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ş

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.

Page 117: Yaz - TD Software · Ö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ş

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 nes-

nesi 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()

Page 118: Yaz - TD Software · Ö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ş

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 (ka-yõ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üzen-leme 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österil-miştir.

Page 119: Yaz - TD Software · Ö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ş

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 Kont-rol Dili; bir veritabanõ kullanõcõsõ veya rolü ile ilgili izinlerin düzenlenme-sini sağlar. Tablo 4.11 DCL komutlarõnõ ve fonksiyonlarõnõ göstermekte-dir.

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 nes-

nesi 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.

Page 120: Yaz - TD Software · Ö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ş

Bağlantõlõ (Connected) Veritabanõ İşlemleri 115

Ö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 ek-lenmiş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

Page 121: Yaz - TD Software · Ö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ş

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 silin-miş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

Page 122: Yaz - TD Software · Ö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ş

Bağlantõlõ (Connected) Veritabanõ İşlemleri 117

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?

Page 123: Yaz - TD Software · Ö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ş

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 ExecuteReader metodu ile DataReader

oluşturabilecek, ! 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 ko-

lonlarõ ekleyin.

Page 124: Yaz - TD Software · Ö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ş

Bağlantõlõ (Connected) Veritabanõ İşlemleri 119

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 yer-den alõnmasõ, değişiklik durumunda kolaylõk sağlar.

1. Projeye bir modül ekleyin ve bağlantõ dizisini tanõmlayõn.

Page 125: Yaz - TD Software · Ö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ş

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

Page 126: Yaz - TD Software · Ö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ş

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

Page 127: Yaz - TD Software · Ö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ş

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

Page 128: Yaz - TD Software · Ö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ş

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 yordamla-

rõ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

Page 129: Yaz - TD Software · Ö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ş

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 ha-zõ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 ka-yõ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

Page 130: Yaz - TD Software · Ö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ş

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 perso-nele 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

Page 131: Yaz - TD Software · Ö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ş
Page 132: Yaz - TD Software · Ö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ş

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õğõ or-tamlardõ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.

Page 133: Yaz - TD Software · Ö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ş

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.

Page 134: Yaz - TD Software · Ö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ş

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õ kullana-

rak, verilerin DataSet�e doldurulmasõnõ ve DataSet�te yapõ-

lan değişikliklerin veritabanõna kaydedilmesini sağlar. Örneğin

SqlDataAdapter sõnõfõ SQL Server ile DataSet arasõndaki

etkileşimi sağlar.

XXXConnection Bağlantõ açmak ve kapatmak için kullanõlan nesnedir. Örneğin

SqlConnection SQL Server�a bağlantõ sağlar.

XXXCommand Veritabanõ üzerinde Stored Procedure (Saklõ Yordam) veya SQL cümleleri çalõştõrmak için kullanõlan nesnedir. Örneğin

SqlCommand SQL Server üzerinde Stored Procedure veya

SQL cümleleri çalõştõrmayõ sağlar.

XXXDataReader Veritabanõndan sadece okunur ve ileri hareketli kayõtlar çek-

mek için kullanõlõr. Örneğin SqlDataReader ile SQL Server

üzerinden kayõtlar okunur. Kayõtlar SqlCommand nesnesinin

ExecuteReader metodu ile DataReader�a aktarõlõr.

Page 135: Yaz - TD Software · Ö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ş

132 Modül 5:

Konu 2: DataSet ve DataTable Oluşturmak

Veri kaynağõndan DataAdapter ile çekilen verilerin çekirdek belleğe atõlan kop-yasõ DataSet içinde saklanõr. DataSet ile bu veriler üzerinde gerekli düzenlemeler yapõldõktan sonra, veriler aynõ DataAdapter ile veritabanõna aktarõlõr. DataSet�in temel özellikleri aşağõda listelenmiştir:

! Veri sağlayõcõ türünden bağõmsõz çalõşõr: DataSet tüm veri sağlayõcõ-larõ ile kullanõlabilir. Tamamen türden bağõmsõz çalõşõr.

! Sürekli çevrimdõşõdõr: DataAdapter nesnesi ile veriler DataSet içine aktarõlõr ve bağlantõ kapatõlõr. Bağlantõ kesildikten sonra yapõlan tüm değişiklikler DataSet içine kaydedilir. Bu durum uygulamanõn çevrim-dõşõ çalõşmasõnõ sağlar.

! Değişikliklerin kaydõnõ tutar: DataSet içinde yapõlan tüm değişiklikler, DataAdapter nesnesi ile veri kaynağõna aktarõlõr.

! Birden fazla tablo bulundurabilir: İlişkisel veritabanlarõnda olduğu gibi, birden fazla tablo ve ilişkileri hafõzada tutmanõn tek yolu DataSet kullanmaktõr.

Page 136: Yaz - TD Software · Ö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ş

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 nesne-ler, DataTable, DataColumn, DataRow ve DataRelation nesneleridir.

Page 137: Yaz - TD Software · Ö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ş

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.

Page 138: Yaz - TD Software · Ö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ş

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üncelleme-

leri 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 is-mindeki 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()

Page 139: Yaz - TD Software · Ö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ş

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"

Page 140: Yaz - TD Software · Ö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ş

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 nesne-sine 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)

Page 141: Yaz - TD Software · Ö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ş

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 nesnesi-nin 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 tablosun-daki tüm değişiklikler veri kaynağõna aktarõlmaktadõr.

da.Update(ds, "siparisler")

Page 142: Yaz - TD Software · Ö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ş

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.

Page 143: Yaz - TD Software · Ö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ş

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 kont-roller bu gruba girer. Örnekte, Dataset içindeki kitap_baslik kolonunun değeri, TextBox ve Label kontrollerin Text özelliğine aktarõlõr.

TextBox1.Text = _

ds.Tables("kitaplar").Rows(2).Item("kitap_baslik")

Label1.Text = _

ds.Tables("kitaplar").Rows(2).Item("kitap_baslik")

Page 144: Yaz - TD Software · Ö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ş

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

Page 145: Yaz - TD Software · Ö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ş

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 her-

hangi 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")

Page 146: Yaz - TD Software · Ö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ş

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õlabi-lir. DataTable, bu çevrimdõşõ düzenlemeleri kabul veya iptal etme olanağõ su-nar. 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�

Page 147: Yaz - TD Software · Ö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ş

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�})

Page 148: Yaz - TD Software · Ö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ş

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üzenle-mek için Items koleksiyonu kullanõlõr. EndEdit metodu ile, askõya alõnan olay-lar yeniden aktif edilir. CancelEdit metodu ile değişikliklerden ve askõya alõnan olaylardan vazgeçilir. Örnekte, DataTable içindeki dördüncü kayõt için güncel-leme işlemi yapõlmõştõr.

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()

Page 149: Yaz - TD Software · Ö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ş

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 tes-pit 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. DataSet içinde çoklu veri kaynağõ tutulabildiği için, birden fazla CurrencyManager nesnesi içerebilir. Belirli bir satõra gidebilmek için, CurrencyManager nesnesinin Position özel-liğ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

Page 150: Yaz - TD Software · Ö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ş

Bağlantõsõz (Disconnected) Veritabanõ İşlemleri 147

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

Page 151: Yaz - TD Software · Ö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ş

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.

Page 152: Yaz - TD Software · Ö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ş

Bağlantõsõz (Disconnected) Veritabanõ İşlemleri 149

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

Page 153: Yaz - TD Software · Ö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ş

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 kurul-masõ 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üzenleye-rek OK düğmesini tõklayõn.

Bağlantõnõn Oluşturulmasõ Kisi veritabanõna bağlantõ sağlamak için OleDbConnection oluşturun.

Page 154: Yaz - TD Software · Ö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ş

Bağlantõsõz (Disconnected) Veritabanõ İşlemleri 151

1. Araç kutusu üzerindeki OleDbConnection kontrolünü form üzerine sü-rükleyin.

2. OleDbConnection kontrolünün ConnectionString özelliği için oluşturduğunuz bağlantõ cümlesini seç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 sihirba-

zõ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.

Page 155: Yaz - TD Software · Ö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ş

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()

Page 156: Yaz - TD Software · Ö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ş

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õ si-len 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 ya-zõ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

Page 157: Yaz - TD Software · Ö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ş

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

Page 158: Yaz - TD Software · Ö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ş

Bağlantõsõz (Disconnected) Veritabanõ İşlemleri 155

Örnekte Tbl ismindeki DataTable nesnesine, DataAdapter nesnesinden ge-len kayõtlar doldurulur. Tbl tablosunun Kitap_ISBN kolonu birincil anahtar ola-rak 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 üç pa-rametresi bulunur. filterExpression, filtreleme yapõlacak ifadeyi içerir.

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

Page 159: Yaz - TD Software · Ö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ş

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 kolo-nun sonuna; azalan sõralama için DESC, artan sõralama için ASC anahtar söz-cüğü yazõlõr. recordStates ise, kayõtlarõn durumuna göre, (Deleted, Modified gibi) seçim yapar.

Page 160: Yaz - TD Software · Ö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ş

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 üze-rinde 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.

Page 161: Yaz - TD Software · Ö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ş

158 Modül 5:

Programlama yöntemi ile DataView kullanõmõ aşağõda gösterilmektedir. Ör-nekte 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ş Tarihi 08/25/1996 tarihinden büyük olan kayõtlar sorgulanmaktadõr:

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")

Page 162: Yaz - TD Software · Ö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ş

Bağlantõsõz (Disconnected) Veritabanõ İşlemleri 159

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?

Page 163: Yaz - TD Software · Ö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ş

160 Modül 5:

Lab 2: Çoklu Tablolarla Çalõşmak

Bu uygulamada aynõ form üzerinde üç farklõ DataTable ile çalõşõlacaktõr. Bu uy-gulama 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 üzerin-deki filtreleme işlemleri DataView kontrolü ile sağlanõr. Personel kayõtlarõnõn okunup DataGrid kontrolüne doldurulmasõ, kayõtlar ara-sõ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.

Page 164: Yaz - TD Software · Ö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ş

Bağlantõsõz (Disconnected) Veritabanõ İşlemleri 161

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.

Page 165: Yaz - TD Software · Ö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ş

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 özelliği için oluşturduğunuz bağlantõ cümlesini seç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.

Page 166: Yaz - TD Software · Ö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ş

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 sihirba-zõ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 sihirba-

zõ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

Page 167: Yaz - TD Software · Ö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ş

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 sihirba-

zõ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.

Page 168: Yaz - TD Software · Ö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ş

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 kolo-nunu seçin.

3. cbBolum isimli açõlan kutunun ValueMember özelliğine BolumID kolo-nunu seçin.

Kodlarõn Yazõlmasõ 1. Form kontrolünün Load olayõna kayõtlarõ DataSet tablolarõna dolduran kod-

larõ yazõn.

Try

Conn.Open()

daBolum.Fill(Ds1, "Bolum")

daOgrenci.Fill(Ds1, "Ogrenci")

daKurs.Fill(Ds1, "Kurs")

Catch ex As Exception

MessageBox.Show(ex.Message)

Finally

Conn.Close()

End Try

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 kontro-lünü DataGrid kontrolüne bağlayan kodu yazõn.

dvKurs.RowFilter = "OgrenciID='" & _

dgOgrenci.Item(dgOgrenci.CurrentRowIndex, 0) & "' "

dgKurs.DataSource = dvKurs

Page 169: Yaz - TD Software · Ö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ş
Page 170: Yaz - TD Software · Ö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ş

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.

Page 171: Yaz - TD Software · Ö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ş

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şen-leri ile sağlanõr. ASP.NET Web Formlarõ sunucu taraflõ kodlarõ çalõştõrdõğõ için, kullanõcõ tarafõn-daki 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.

Page 172: Yaz - TD Software · Ö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ş

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) sunucu-sunu 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 Pro-gramming 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

Page 173: Yaz - TD Software · Ö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ş

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, kulla-nõ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şki-sel 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.

Page 174: Yaz - TD Software · Ö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ş

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

Page 175: Yaz - TD Software · Ö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ş

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öne-tim, ASP.NET�i ASP�den tamamen ayõran bir özelliktir.

Page 176: Yaz - TD Software · Ö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ş

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.

Page 177: Yaz - TD Software · Ö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ş

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.

Page 178: Yaz - TD Software · Ö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ş

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.

Page 179: Yaz - TD Software · Ö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ş

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 tutul-

duğ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ş versi-yonudur.

Page 180: Yaz - TD Software · Ö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ş

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 bel-leğe atõlmasõnõ sağlar. Bu durum uygulamanõn bellekten çalõşmasõnõ sağlayarak performansõ artõrõr.

Page 181: Yaz - TD Software · Ö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ş

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 ge-rekli her türlü araç ve teknolojiye sahiptir. Dilden bağõmsõz çalõşabilme, eski tek-nolojiden yeni teknolojilere kolayca geçiş imkanõ sağlar. Tamamen nesne yöne-limli programlamayõ destekleyen bir platform olan Visual Studio .NET, Web uy-gulamalarõnda da nesne yönelimli programlama modelini destekler.

RESİM 6.1.

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 kat-manda ise CLR bulunur.

Page 182: Yaz - TD Software · Ö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ş

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 uy-gulama içine C# ile yazõlan kod bloklarõ eklenebilir.

! Visual Studio .NET, Web uygulamalarõn güvenliğini sağlayan çeşitli sõnõflar içerir. Bu sõnõflar System.Web.Security isim alanõ içinde bulu-nur.

! ASP .NET sayfalarõ içinde, HTML ve kaynak kod birlikte çalõştõrõlõr. Bu durum tasarõm ve programlama kolaylõğõ sağlar.

! ASP.NET içinde kodlar satõr satõr derlenmez. Bunun yerine Web form-lar derlenir. Bu durum performansõn artõşõnõ sağlar.

! Güçlü hata yakalama araçlarõ sunar. ! Web servisleri ile birlikte çalõşabilir. ! ASP.NET, ADO.NET kullanõmõnõ kolaylaştõran Web nesneleri içerir.

Page 183: Yaz - TD Software · Ö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ş

182 Modül 6:

Konu 7: ASP.NET ile Uygulama Geliştirmek

ASP.NET ile geliştirilen uygulamalarõn; Internet, Extranet veya Intranet üze-rinde çalõşabilmesi için Web sunucularõna ihtiyaç duyulur. IIS (Internet Informa-tion Services) Windows işletim sistemleri için geliştirilmiş Web sunucusudur.

Page 184: Yaz - TD Software · Ö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ş

ASP.NET�e Giriş 183

IIS Nedir?

IIS (Internet Information Services), Windows sistemler için Web tabanlõ uygu-lama geliştirme ve yayõnlama amacõyla kullanõlan Web sunucusudur.

Page 185: Yaz - TD Software · Ö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ş

184 Modül 6:

IIS Kurulumu ve Yönetimi

Page 186: Yaz - TD Software · Ö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ş

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 Ser-vices (IIS) seçeneğini işaretleyerek yükleme işlemini başlatõn.

Windows NT 4.0 ve Windows XP Home Edition işletim sistemleri ile ASP.NET uygulamasõ ge-liştirilemez.

.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 şe-kilde 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.

Page 187: Yaz - TD Software · Ö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ş

186 Modül 6:

RESİM 6.2: IIS kurulumu.

Page 188: Yaz - TD Software · Ö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ş

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çi-lir. 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

Page 189: Yaz - TD Software · Ö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ş

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 ifa-desi, 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.

Page 190: Yaz - TD Software · Ö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ş

ASP.NET�e Giriş 189

Visual Studio .NET kullanmadan yeni bir Virtual Directory oluşturmak için De-fault Web Site sağ tõklanõr. Çõkan menüden New alt menüsü işaretlenir ve Vir-tual Directory seçilir. Virtual Directory Creation Wizard ile yeni bir Virtual Direc-tory oluşturulur.

Page 191: Yaz - TD Software · Ö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ş

190 Modül 6:

.NET Framework Kurulumu

ASP.NET ile uygulama geliştirmek için .NET Framework�ün kurulu olmasõ gere-kir. Framework�ün, SDK olarak isimlendirilen 130MB�lõk full versiyonu ve yal-nõzca temel bileşenleri kapsayan 20MB�lõk iki farklõ kurulum dosyasõ bulunur. Framework versiyon ve yamalarõ (Service Pack) http:// msdn.microsoft. com/netframework/downloads/updates/default.aspx adresinden ücretsiz olarak indirilebilir. Framework�ü kurmak için aşağõdaki adõmlar takip edilir:

1. Framework kurulum dosyasõ çalõştõrõlõr. 2. Açõlan penceredeki �Would you like to Install Microsoft .NET Frame-

work Package?� sorusuna Yes cevabõ verilir. 3. Next düğmeleri tõklanarak kurulum tamamlanõr.

.NET Framework kurabilmek için işletim sisteminin Windows NT tabanlõ olmasõ gerekir. Win-dows 2000 işletim sisteminde minimum SP2 yapõlandõrmasõ gereklidir.

Page 192: Yaz - TD Software · Ö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ş

ASP.NET�e Giriş 191

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?

Page 193: Yaz - TD Software · Ö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ş

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õ öğreneceksi-niz.

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 Ser-

vices (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.

Page 194: Yaz - TD Software · Ö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ş

ASP.NET�e Giriş 193

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.

Page 195: Yaz - TD Software · Ö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ş

194 Modül 6:

Page 196: Yaz - TD Software · Ö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ş

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 kontrolle-rin 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.

Page 197: Yaz - TD Software · Ö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ş

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 su-nucu taraflõ Visual Basic .NET kodlarõ default.aspx.vb isimli dosyada tutulur. Kullanõcõ arayüz sayfasõ ve kod sayfasõnõn ayrõ tutulmasõnõn yararõ, Web prog-ramcõsõna ve Web tasarõmcõsõna ayrõ kaynaklar sunarak bağõmsõz çalõşma or-tamõ sağlamaktõr. Web Formlarõ Visual Studio ile iki farklõ şekilde tasarlanabilir. Design sekmesi, Web kontrollerinin görsel olarak düzenlenmesini sağlar. HTML sekmesi ise, kontrollerin HTML kodlar ile eklenmesini sağlar. Görsel kõsõmda Web Form kontrolleri ve bu kontrollere ait HTML kodlarõ, kod sayfasõnda da bu kontrollerin davranõşlarõnõ belirleyen Visual Basic .NET kod-larõ bulunur.

Page 198: Yaz - TD Software · Ö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ş

ASP.NET Web Form ve Kontrolleri ile Çalõşmak 199

Web Formlarõn genel özellikleri aşağõdaki gibidir.

! @Page Özelliği ! Body Özelliği ! Form Özelliği

Page 199: Yaz - TD Software · Ö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ş

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 ge-nellikle 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 ko-numunda 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� >

Page 200: Yaz - TD Software · Ö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ş

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 üze-rinde hata oluşmasõ durumunda, bilgilerin kaybolmamasõnõ sağlar. Bu özelliğin tüm kontrolleri içermesi için, Page yönerge satõrõnda tanõmlanmasõ gerekir. Bu özellik True veya False değeri alabilir.

<@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� �>

Page 201: Yaz - TD Software · Ö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ş

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õrala-nõr. Kontrollerin yerleri sürükleme ile değiştirilemez. Nesneler için style tanõmlamaz.

<body ms_positioning=�FlowLayout�>

</body>

! GridLayout: Kontroller form üzerindeki herhangi bir yere eklenebilir. Kontrollerin yerleri sürükleme ile değiştirilebilir. Bu görünümde nesneler için style tanõmlanõr. Bu görünüm Windows uygulamalarõndaki Form görünümüne benzer.

<body ms_positioning=�GridLayout�>

</body>

Page 202: Yaz - TD Software · Ö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ş

ASP.NET Web Form ve Kontrolleri ile Çalõşmak 203

Form Özelliği

Web kontrolleri gruplandõrmak için kullanõlõr. Her web form için tek Form etiketi tanõmlanõr. Tüm kontroller <form> � </form> etiketleri arasõna eklenir. Form etiketi içinde tanõmlanabilecek birçok özellik vardõr.

Method Web kontrol özelliklerinin, sunucuya gönderilme şeklini belirler. İki değer alabi-lir:

! Post: İsim ve değer bilgilerini, HTML bilgisinin üst bilgisine yazarak gönderir.

<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� �>

Page 203: Yaz - TD Software · Ö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ş

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 kontrol-leri ise System.Web.UI.HtmlControls isim alanõnda bulunur. Button, TextBox, DropDownList gibi server kontrollerinin çalõşma modeli, is-temci taraflõ HTML kontrollerinin çalõşma modelinden oldukça farklõdõr. ASP.NET server kontrolleri, tamamen sunucu üzerinde çalõşõr ve geri plandaki tüm işleyişleri ara yüzle gizlenerek gerçekleştirilir. Bir kontrolün sunucu tarafõnda çalõştõğõ runat=�server� özelliği ile belirlenir.

<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 eklenmeli-dir. Böylece kontrol HTML server kontrolü haline getirilir.

<INPUT type=�button� id=�button1� runat=�server� _

value=�Bu Bir Html Button� >

Page 204: Yaz - TD Software · Ö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ş

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.

Page 205: Yaz - TD Software · Ö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ş

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 say-larõ ü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.

Page 206: Yaz - TD Software · Ö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ş

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" Font-Italic="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.

Page 207: Yaz - TD Software · Ö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ş

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" />

Page 208: Yaz - TD Software · Ö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ş

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"/>

Page 209: Yaz - TD Software · Ö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ş

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.

Page 210: Yaz - TD Software · Ö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ş

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 />

Page 211: Yaz - TD Software · Ö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ş

212 Modül 7:

DropDownList DropDownList, açõlan kutuda veri görüntülemek için kullanõlõr. DropDownList öğeleri Items koleksiyonunda tutulur. Items koleksiyonunun Count özelliği ile toplam öğe sayõsõ bulunur. DropDownList kontrolüne tasarõm veya çalõşma za-manõnda öğe eklenebilir. Örnekte, DropDownList kontrolüne tasarõm zamanõnda öğe eklenmektedir.

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"/>

Page 212: Yaz - TD Software · Ö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ş

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"/>

Page 213: Yaz - TD Software · Ö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ş

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

Page 214: Yaz - TD Software · Ö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ş

ASP.NET Web Form ve Kontrolleri ile Çalõşmak 215

Dim j As Integer

For j = 0 To nrows - 1

Dim r As TableRow

r = new TableRow()

For i = 1 To ncells

Dim c As TableCell

c = new TableCell()

c.Controls.Add(new LiteralControl("Satõr " & _

j.ToString() & ", hücre " & i.ToString()))

r.Cells.Add(c)

Next i

Table1.Rows.Add(r)

Next j

End Sub

<asp:Table id="Table1" GridLines="Both" HorizontalAlign="Center" Font-Name="Verdana"

Font-Size="8pt" CellPadding=15 CellSpacing=0 Runat="server"/>

Page 215: Yaz - TD Software · Ö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ş

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 kontrol-leri geliştirildi. ASP.NET, belirli bir aralõkta veri girişi sağlayan, karşõlaştõrma ya-pan ve belirli değerlerin boş geçilmemesini sağlayan çeşitli doğrulama kontrol-leri sunar. Tablo 7.3�te doğrulama kontrolleri listelenmiştir.

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.

Page 216: Yaz - TD Software · Ö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ş

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 mesa-

jõnõ verir. ! Text: ErrorMessage ve Text özelliği birlikte kullanõlabilir. Bu duru-

munda 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õr-mak için kullanõlõr. Doğrulama yapõlacak Web kontrolünün ismi ControlToValidate özelliğine girilir. Karşõlaştõrma yapõlacak sabit değer ValueToCompare özelliğine girilir. Type özelliğine girilen değerin veri türü, Operator özelliğine ise mantõksal operatör girilir. Örnekte txtYas kontrolüne yirmi veya yirmiden büyük tamsayõ girişi sağlayan doğrulama işlemi yapõlmaktadõr:

<asp:CompareValidator id="CompareValidator1"

style="Z-INDEX: 109; LEFT: 232px; POSITION: absolute;

TOP: 88px" runat="server"

ErrorMessage="Yaşõnõz 20 ye eşit veya büyük olmalõdõr."

ValueToCompare="20"

ControlToValidate="txtYas"

Type="Integer"

Operator="GreaterThanEqual"

Page 217: Yaz - TD Software · Ö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ş

218 Modül 7:

Width="128px">

</asp:CompareValidator>

Doğrulama yapõlacak Web kontrolü, başka bir Web kontrolü ile karşõlaştõrõla-caksa ControlToCompare özelliği kullanõlõr. Örnekte txtYas kontrolünün değeri txtKontrol değerinden büyük olmalõdõr:

<asp:CompareValidator id="CompareValidator1"

style="Z-INDEX: 109; LEFT: 240px; POSITION: absolute;

TOP: 128px" runat="server"

ErrorMessage="yaşõnõz kontrol alanõnda yazõlan

değerden büyük olmalõdõr."

ControlToValidate="txtYas"

Type="Integer"

Operator="GreaterThan"

Width="144px"

ControlToCompare="txtKontrol">

</asp:CompareValidator>

RangeValidator Kontrol içine girilen değerin belirli bir değer aralõğõnda olmasõnõ sağlar. Doğru-lama kontrollerinin ortak özelliklerine ek olarak MinimumValue, MaximumValue ve Type özellikleri vardõr. Örnekte txtYas kontrolüne girilen değerin, otuzbeş ile elli arasõnda olmasõnõ sağlayan doğrulama işlemi yapõlmaktadõr. Bu özel karakterler Tablo 7.4�te gösterilmiştir.

<asp:RangeValidator id="RangeValidator1"

style="Z-INDEX: 109; LEFT: 240px; POSITION:

absolute; TOP: 128px" runat="server"

ErrorMessage="Yaşõnõz 35 ile 50 arasõnda olmalõdõr."

ControlToValidate="txtYas"

Type="Integer"

MaximumValue="50"

MinimumValue="35">

</asp:RangeValidator>

Page 218: Yaz - TD Software · Ö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ş

ASP.NET Web Form ve Kontrolleri ile Çalõşmak 219

RegularExpressionValidator Kontrol içine girilen değerin istenen formatta girilmesini sağlar. ValidationExpression özelliğine girilen özel karakterler ile veri giriş formatõ sağlanõr. Bu özel karakterler Tablo 7.4�te gösterilmektedir. Örnekte RegularExpressionValidator kontrolü ile txtMail metin kutusu için geçerli e-mail girişi sağlanmaktadõr:

<asp:regularexpressionvalidator

id="RegularExpressionValidator1" style="Z-INDEX: 111;

LEFT: 256px; POSITION: absolute; TOP: 168px"

runat="server"

ErrorMessage="Mail giriş hatasõ"

ControlToValidate="txtMail"

ValidationExpression=

"\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*">

</asp:regularexpressionvalidator>

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.

Page 219: Yaz - TD Software · Ö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ş

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

görüntüleneceği belirtir.

EnableClientScript İstemci script�leri aktif hale getirir. Varsayõlan de-

ğer True�dur.

Enabled Sunucu ve istemci taraflõ script�leri aktif hale geti-

rir. 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 duru-

munda Text özelliğindeki mesaj görüntülenir.

Page 220: Yaz - TD Software · Ö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ş

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>

Page 221: Yaz - TD Software · Ö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ş

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>

DisplayMode özelliği ile ValidationSummary kontrolünün görüntüsü değiştirilebilir. DisplayMode, BulletList, List ve SingleParagraph değerle-rini alõr. ShowMessageBox, hata listesinin mesaj kutusu içinde görüntülenmesini sağlar.

Page 222: Yaz - TD Software · Ö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ş

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. Rek-lam için kullanõlan banner nesneleri XML dosya içine kaydedilir. Örnekte, AdRotator kullanõmõ için gerekli XML dosya (Ads.Xml) gösterilmekte-dir:

<Advertisements>

<Ad>

<ImageUrl>image1.gif</ImageUrl>

<NavigateUrl>http://www.bilgeadam.com</NavigateUrl>

<AlternateText>BilgeAdam BTA</AlternateText>

<Impressions>80</Impressions>

<Keyword>Yazõlõm</Keyword>

</Ad>

<Ad>

<ImageUrl>image2.gif</ImageUrl>

<NavigateUrl>http://www.microsoft.com</NavigateUrl>

<AlternateText>Microsoft Site</AlternateText>

<Impressions>80</Impressions>

<Keyword>microsoft</Keyword>

</Ad>

</Advertisements>

Page 223: Yaz - TD Software · Ö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ş

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 bulun-duğ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:

Page 224: Yaz - TD Software · Ö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ş

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>

Page 225: Yaz - TD Software · Ö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ş

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">

Page 226: Yaz - TD Software · Ö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ş

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.

Page 227: Yaz - TD Software · Ö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ş

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" />

Page 228: Yaz - TD Software · Ö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ş

ASP.NET Web Form ve Kontrolleri ile Çalõşmak 229

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.

Page 229: Yaz - TD Software · Ö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ş

230 Modül 7:

Lab 1: E-Ticaret Uygulamasõ Geliştirmek

Bu uygulamada, e-ticaret uygulamasõnõn Web formlarõ tasarlanacaktõr. E-tica-ret 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.

Page 230: Yaz - TD Software · Ö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ş

ASP.NET Web Form ve Kontrolleri ile Çalõşmak 231

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 � txtAd

TextBox � txtSoyad

TextBox � txtEmail

TextBox � txtSifre TextMode Password

TextBox � txtSifreDogrula TextMode Password

RequiredFieldValidator � rfvAd

ControlToValidate txtAd

ErrorMessage Adõ boş geçemezsiniz

Text *

RequiredFieldValidator � rfvSoyad

ControlToValidate txtSoyad

Page 231: Yaz - TD Software · Ö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ş

232 Modül 7:

Kontrol � Kontrol İsmi Özellik Değer

ErrorMessage Soyadõ boş geçemezsiniz

Text *

RequiredFieldValidator � rfvEmail

ControlToValidate txtEmail

ErrorMessage E-maili boş geçemezsiniz

Text *

RequiredFieldValidator � rfvSifre

ControlToValidate txtSifre

ErrorMessage Şifreyi giriniz.

Text *

RequiredFieldValidator � rfvSifre2

ControlToValidate txtSifreDogrula

ErrorMessage Doğrulama şifresini giriniz

Text *

RegularExpressionValidator � revEmail

ControlToValidate txtEmail

ErrorMessage Hatalõ Email

Text *

Validation Expression

\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*

CompareValidator�cvSifreDogrula

ControlToCompare txtSifre

ControlToValidate txtSifre2

ErrorMessage Şifreler uyumsuz

Text *

ValidationSummary � vsHata

Button � btnKaydet Text Kaydet

Page 232: Yaz - TD Software · Ö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ş

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>

Page 233: Yaz - TD Software · Ö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ş

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>

<TD style="HEIGHT: 48px" colSpan="2">

<P align="center"><FONT face="Tahoma" size="2"><STRONG>Üyelik Bilgileri</STRONG></FONT></P>

</TD>

</TR>

<TR>

<TD style="WIDTH: 100px"><FONT face="Tahoma" size="2">Ad*</FONT></TD>

<TD><asp:textbox id="txtAd" runat="server" Width="176px"></asp:textbox><asp:requiredfieldvalidator id="rfvAd" runat="server" ControlToValidate="txtAd" ErrorMessage="Adõ boş 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:regularexpressionvalidator id="revEmail" runat="server" ControlToValidate="txtEmail" ErrorMessage="Hatalõ Email"

Display="Dynamic" ValidationExpression="\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-

Page 234: Yaz - TD Software · Ö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ş

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:requiredfieldvalidator 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:requiredfieldvalidator id="rfvSifre2" runat="server" ControlToValidate="txtSifreDogrula" ErrorMessage="Doğrulama şifresini giriniz."

Display="Dynamic">*</asp:requiredfieldvalidator><asp:comparevalidator 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>

Page 235: Yaz - TD Software · Ö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ş

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 � txtEmail

TextBox � txtSifre TextMode Password

Text *

Button � btnGiris Text Giriş

Label � lblMesaj Text

RESİM 7.3.

UyeGiris Web formunun HTML kodlarõ aşağõdaki gibi olacaktõr:

Page 236: Yaz - TD Software · Ö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ş

ASP.NET Web Form ve Kontrolleri ile Çalõşmak 237

<%@ 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>

Üye Giriş</FONT></STRONG></P>

</TD>

</TR>

Page 237: Yaz - TD Software · Ö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ş

238 Modül 7:

<TR>

<TD style="WIDTH: 66px">E-Mail&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.

Page 238: Yaz - TD Software · Ö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ş

ASP.NET Web Form ve Kontrolleri ile Çalõşmak 239

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

HyperLink � lnk2 NavigateUrl UyeKayit.aspx

Text tõklayõnõz

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">

Page 239: Yaz - TD Software · Ö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ş

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

Page 240: Yaz - TD Software · Ö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ş

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">

Page 241: Yaz - TD Software · Ö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ş

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:

Page 242: Yaz - TD Software · Ö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ş

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">

Page 243: Yaz - TD Software · Ö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ş

244 Modül 7:

<uc1:Alt id="Alt1" runat="server"></uc1:Alt></TD>

</TR>

</TABLE>

</form>

</body>

</HTML>

Page 244: Yaz - TD Software · Ö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ş

Modül 8: ASP.NET ile Kod Geliştirmek

Bu modülde Visual Studio .NET ortamõ içinde ASP.NET uygulamalarõnõn kulla-nõ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.

Page 245: Yaz - TD Software · Ö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ş

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, tasa-rõm ve kod ara yüzlerinin ayrõ tutulmasõdõr. Web Forma kod eklemek için üç yol izlenir:

! Mixed Code: Bu metotta Web içeriği ile kod aynõ sayfa içinde yazõlõr. Bu metot pek tercih edilmez, çünkü okunmasõ ve düzenlenmesi zordur.

! Inline Code: Web içeriği ile kod aynõ sayfa içinde yer alõr. ASP.NET kodu Script etiketi içine yazõlõr.

! Code-behind: HTML içeriği ve Visual Basic .NET kodu tamamen ayrõ dosyalarda tutulur. Kod dosyasõna code-behind sayfasõ denir. Bu metot Visual Studio .NET ortamõnõn varsayõlan çalõşma şeklidir.

Page 246: Yaz - TD Software · Ö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ş

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üm-lere yazõlõr. Bölümlerin ayrõ tutulmasõ okunabilirliği artõrõr. Server taraflõ kodlar Script etiketi içersine yazõlmalõdõr ve runat=�server� özelliği belirtilmelidir.

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>

Page 247: Yaz - TD Software · Ö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ş

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 so-nuna .vb eklenerek isimlendirilir. Webform1.aspx sayfasõnõn code-behind say-fasõ, WebForm1.aspx.vb şeklindedir. Form üzerinde bir kontrol çift tõklandõğõnda code-behind sayfasõ açõlõr ve o kont-role 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>

Page 248: Yaz - TD Software · Ö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ş

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.

Page 249: Yaz - TD Software · Ö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ş

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. Cli-ent-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õ isteni-len 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>

Page 250: Yaz - TD Software · Ö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ş

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ş kod-lardan 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õ kulla-namazken, 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. Server-side olay prosedürleri Click ve Change gibi olaylar için kullanõlõr. Fare ve klavye olaylarõ gibi çok sõk gerçekleşebilecek olaylarõ desteklenmez.

Page 251: Yaz - TD Software · Ö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ş

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

Page 252: Yaz - TD Software · Ö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ş

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

Page 253: Yaz - TD Software · Ö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ş

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şa-mada sayfa başlatõlõr ve sayfadaki kontroller oluşturulur.

2. Page_Load (Sayfanõn yüklenmesi): Bu olay, sayfa yüklendiği zaman tetiklenir.

3. Control Events (Kullanõcõ kontrol olaylarõ): Click ve Change olaylarõdõr. Bu olaylar kontrollerin tõklanmasõ veya kontrol değerlerinin değişimi ile tetiklenir. TxtAd_Changed ve Btn1_Click gibi.

4. Page_Unload (Sayfanõn Kapanmasõ): Bu olay, sayfa kapandõğõ za-man tetiklenir.

Page Event yaşam döngüsü sonlandõğõnda sayfaya ait bilgiler hafõzadan silinir. Kontrol olaylarõnõn çoğu, sayfa sunucuya geri gönderilene kadar gerçekleş-mez. Örneğin Click olayõ ile form sunucuya gönderilmeden Change olaylarõ gerçekleşmez.

Page 254: Yaz - TD Software · Ö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ş

ASP.NET ile Kod Geliştirmek 257

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. Örnekte Response.Redirect metodu ile yönlendirme işlemi gerçekleştirilmektedir:

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>

Page 255: Yaz - TD Software · Ö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ş

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 kontrol-ler için AutoPostBack özelliğinin True yapõlmasõ gerekir. Örnekte DropDownList kontrolünün AutoPostBack özelliğine True değeri giril-miş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

Page 256: Yaz - TD Software · Ö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ş

ASP.NET ile Kod Geliştirmek 259

Page.IsPostback Page Load olayõ, sayfa yüklendiği zaman gerçekleşir. Sayfaya yapõlan her is-tekte Page Load olayõ içindeki kodlar çalõşõr. Aynõ sayfanõn her seferinde yeni-den çalõştõrõlmasõ, istenilen bir durum değildir. Page.IsPostback özelliği ile, sayfanõn Load olayõ içindeki kodlar sadece bir kez çalõştõrõlõr. Böylece sayfa yeniden çağrõldõğõnda bu işlemler gerçekleşmez. Örnekte Page.IsPostBack özelliğinin kullanõmõ gösterilmektedir:

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

Page 257: Yaz - TD Software · Ö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ş

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?

Page 258: Yaz - TD Software · Ö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ş

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.

Page 259: Yaz - TD Software · Ö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ş

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')

Page 260: Yaz - TD Software · Ö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ş

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()">

Page 261: Yaz - TD Software · Ö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ş
Page 262: Yaz - TD Software · Ö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ş

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.

Page 263: Yaz - TD Software · Ö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ş

268 Modül 9:

Konu 1 : Web Programlamaya Giriş İstemci ve sunucu tarafõnda çalõşan çeşitli teknolojiler mevcuttur. Bir Web say-fasõ 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 program-lama 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.

Page 264: Yaz - TD Software · Ö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ş

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 me-tin editöründe yazarak oluşturulabilir.

HTML Yapõsõ HTML dilini oluşturan bileşenler:

! Tag (etiket) ! Attribute (nitelik) ! Value (değer)

HTML kodlarõnõn temeli etiketlerdir. Bir etiket, HTML�e yapõlmasõ istenen bir ola-yõn bildirimini temsil eder. Etiketlerin içine attribute adõ verilen değerler girilir. Eti-ketlere ait değişik özellikler, attribute nesnelerinde saklanõr. Attribute değerleri, olaylara ait ayrõntõlarõ tutar. Value ise, bir attribute değerinin davranacağõ tarzõ belirler.

Page 265: Yaz - TD Software · Ö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ş

270 Modül 9:

Tag

Etiketler (Tag), < > işaretleri arasõnda yazõlõr. Semboller ve etiket arasõnda boşluk yoktur.

<Html>

Bir etikete ait açma ve kapatma ifadeleri vardõr. Açma ifadesi <Html>,kapatma ifadesi ise </Html> şeklinde bildirilir. Yani açõlan bir etiket, aynõ isim başõna / işareti getirilerek kapatõlõr. Örneğin <P> etiketi,bir paragraf açmaya yarar. </P> kapatma ifadesi kullanõldõğõnda ise bu kapatma ifadesinin kullanõldõğõ yere ka-dar olan bölüm, paragrafõn içine dahil edilir. Ancak bazõ istisnalar da vardõr. <Img> ve <Br> etiketi gibi bazõ etiketler için bir kapatma ifadesi yoktur. HTML etiketlerinde büyük harf-küçük harf duyarlõlõğõ yoktur.

Page 266: Yaz - TD Software · Ö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ş

Web Programlamaya Giriş 271

Attribute

Nitelikler (Attribute), bir etikete ait özellikleri belirler. <html> etiketi ve </html> kapatma etiketi, HTML belgesinin başladõğõ ve bittiği yeri belirtir ve Attribute değerine ihtiyacõ yoktur. Attribute olmadan çalõşan etiketlerin yanõ sõra, attribute ile birlikte çalõşan etiketler de vardõr. <body> etiketi, </body> kapatma ifadesi ile görüntülenecek alanõn başlangõcõnõ ve bitişini bildirir. Bu etiket, hiçbir attrib-ute tanõmlanmadan çalõşabilir. Görüntülenecek alana bir arka plan rengi tanõmlamak istediğinizde bgcolor veya görüntülenecek yazõ tipini tanõmlamak istediğinizde text niteliklerine değerler atanmalõdõr. Aşağõdaki örnekte siyah zemin üzerine beyaz yazõ yazõlmaktadõr:

<Body bgcolor=�#000000� text=�#ffffff�>

Page 267: Yaz - TD Software · Ö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ş

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.

Page 268: Yaz - TD Software · Ö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ş

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.

Page 269: Yaz - TD Software · Ö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ş

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.

Page 270: Yaz - TD Software · Ö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ş

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 nes-nesi 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.

Page 271: Yaz - TD Software · Ö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ş

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 attrib-ute 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>

Page 272: Yaz - TD Software · Ö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ş

Web Programlamaya Giriş 277

<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>

Page 273: Yaz - TD Software · Ö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ş

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.

Page 274: Yaz - TD Software · Ö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ş

Web Programlamaya Giriş 279

JavaScript

JavaScript dili, Netscape firmasõ tarafõndan oluşturulmuştur. Yazõm biçimi ola-rak 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 des-teklediğ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.

Page 275: Yaz - TD Software · Ö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ş

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, fonksi-yon, 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.

Page 276: Yaz - TD Software · Ö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ş

Web Programlamaya Giriş 281

Değişkenler var anahtar sözcüğü ile yeni bir değişken oluşturulur. Tür bilgisi saklanmaz. Sayõsal değerler verildiğinde işlem yapma yeteneğine sahip olurlar. Çift tõrnak içinde değer verildiğinde ise metin ifadesi olarak anlaşõlõr. Dikkat edilmesi gereken nokta değişkenlerin küçük � büyük harf duyarlõ olmasõdõr. Bazõ tarayõcõlar için değişken isimlerinde bu duyarlõlõk göz önünde bulundurulmazken, çoğu tarayõcõda küçük � büyük harf duyarlõlõğõna dikkat edi-lir. Bu nedenle her değişken adõ bu durum göz önünde bulundurularak verilmelidir.

var deger1;

var deger2=20;

var deger3=30;

var ay=�Mayõs�;

var yil=�2005�;

var degerToplam=deger2+deger3;

var tarih=ay+yil;

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 ;

Page 277: Yaz - TD Software · Ö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ş

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 bi-raz farklõdõr. Örneğin mod almak için Mod anahtar sözcüğü yerine % mod alma operatörü kullanõlõr.

Atama Operatörü ( = ) Değişkenlere değer atamak için = karakteri kullanõlõr.

Aritmetik Operatörler Değişkenler üzerinde aritmetik işlemler yapmak için tanõmlanmõş operatörlerdir.

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 arka-sõ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

Page 278: Yaz - TD Software · Ö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ş

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 sonu-

cunu verir.

< Küçük operatörü. Sol taraf değeri, sağ taraf değerinden küçükse true

sonucunu verir.

> Büyüktür operatörü. Sol taraf değeri, sağ taraf değerinden büyük ise

true sonucunu verir.

<= Küçük eşittir operatörü.

>= 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 tama-men farklõdõr.

Page 279: Yaz - TD Software · Ö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ş

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 ge-len 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 tutu-yorsa, bu satõrlar {} parantezleri ile gruplanõr. Visual Basic .NET dilindeki gibi End if ifadesi kullanõlmaz.

Page 280: Yaz - TD Software · Ö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ş

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;

}

Page 281: Yaz - TD Software · Ö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ş

286 Modül 9:

Fonksiyonlar JavaScript dilinde, kodlarõn yeniden kullanõlabilmesi için kullanõlõr. Genel kulla-nõ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 meto-dunu çağõrõr.

Window Nesnesi Genel pencere özelliklerini tutan nesnedir. Pencere açma ve kapama işlemleri için bu nesne kullanõlõr. Genel kullanõmõ:

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 zorunlu-dur. 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.

Page 282: Yaz - TD Software · Ö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ş

Web Programlamaya Giriş 287

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 http-equiv=Content-Type>

Page 283: Yaz - TD Software · Ö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ş

288 Modül 9:

<script language="Javascript">

function Tarayici()

{

var browseradi=" ";

browseradi +="Browser:"+navigator.appName +"\r� ;

browseradi +="Surumu:"+navigator.appVersion +"\r� ;

browseradi +="Kodadi:"+navigator.appCodeName+"\r� ;

browseradi +="Useragent:"+navigator.userAgent+"\r� ;

alert(browseradi);

}

</script>

</head>

<body onLoad="Tarayici()"></body>

</html>

Olaylar Bir Web sayfasõ üzerinde kullanõcõnõn her türlü hareketi kontrol edilebilir. Bir kontrolün üzerine gelmesi, dolaşmasõ ve üzerinden ayrõlmasõ gibi hareketlere olay denir. Bu olaylar ise onClick, onMuoseOver, onMouseOut, onSubmit, onReset, onChange, onLoad, onUnLoad, onError, onAbort, onFocus, onBlur olarak belirtilebilir.

onClick Internet sitelerinin çoğunda en sõk kullanõlan JavaScript olayõdõr. Sayfa üze-rinde bir nesnenin fare ile tõklanõp bõrakõlmasõ sonucunda gerçekleşen olaydõr. Link, button ve resim nesneleri tõklanarak onClick olayõ tetiklenebilir. Nesnelerin etiketlerinde ise onClick olaylarõnõ tetikleyen fonksiyonlarõn ismi bildirilmelidir.

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 me-saj kutusu çõkar. Ayrõca onDblClick, çift tõklama olayõnõ tetikler.

Page 284: Yaz - TD Software · Ö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ş

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 durumla-rõnda onSubmit devreye girer. Gönderilecek forma girilen verilerin uygunluğu-nun 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 çõkart-mak için de kullanõlabilir.

Kod 9.21: onReset Olayõ

function sil()

{

return confirm('Silmek istediginize emin misiniz?');

Page 285: Yaz - TD Software · Ö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ş

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>

Page 286: Yaz - TD Software · Ö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ş

Web Programlamaya Giriş 291

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õl-mak isteniyorsa, JavaScript kullanõlmalõdõr. VbScript dilinin kullanõlabilmesi için script etiketi içindeki language niteliğine vbscript değeri atanõr.

<script language="vbscript">...</script>

Kod 9.26: İlk VbScript Örneği

<html>

<body>

Page 287: Yaz - TD Software · Ö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ş

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ürme-yen metotlar Sub, geriye sonuç döndüren metotlar ise function anahtar söz-cüğü ile tanõmlanõr. Bu tanõmlanmõş metotlar �call MetotAdõ()� anahtar söz-cüğü 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>

Page 288: Yaz - TD Software · Ö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ş

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.

Page 289: Yaz - TD Software · Ö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ş

294 Modül 9:

Konu 4: CSS

CSS (Cascading Style Sheets), HTML sayfalarõ içinde özel stiller tanõmlamak için kullanõlõr. Sayfanõn yazõ türü, arka plan rengi, link renkleri, nesnelerin sayfa üzerindeki yerleşimi birer stil öğeleridir. Bir sitedeki tüm sayfalara aynõ stili ver-mek için CSS dosyalarõ hazõrlanõr. Bu CSS dosyalarõ HTML sayfalarõna dahil edilir. Stiller HTML sayfalarõna üç yöntem ile dahil edilebilir:

! Inline (iç) ! Embedded (gömülü) ! Linked (bağlantõlõ)

İç (Inline) Herhangi bir HTML etiketi içinde stil kullanõlabilir. Örneğin paragraf etiketine style=�x� attribute değeri eklenebilir ve o paragrafa özel tasarõm özellikleri bildirilebilir.

<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.

Page 290: Yaz - TD Software · Ö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ş

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�>

Page 291: Yaz - TD Software · Ö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ş

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ğer-leri birer özellik öğesidir.

! Değer (Value): Özellikleri tanõmlayan öğelerdir.

Özellikler ve değerler birleşerek bir tanõm oluşturur. Seçici ve tanõm ise bir kural oluşturur. Sayfa düzeni, kenar boşluklarõ, girinti ve hizalama değerleri kontrol edilerek hazõrlanmõş bir site profesyonel bir görünüme sahip olabilir. En çok kullanõlan yazõ özellik ve değerleri Tablo 9.6�da listelenmiştir.

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

Page 292: Yaz - TD Software · Ö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ş

Web Programlamaya Giriş 297

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 ra-kamlarõ 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.

Page 293: Yaz - TD Software · Ö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ş

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õ bilgi-sini 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 özel-liği atayõp istenilen zamanda çağrõlmasõnõ sağlar.

h1 { background:green; color:white; font-weight:bold; font-family:arial; } h1.kirmizi{color:red}

Linkler ve CSS Sayfalarda ziyaret edilen linklerin mavi alt çizgilerini ortadan kaldõrmak veya başka stiller vermek için CSS dilinden yararlanõlabilir. <A> etiketinin stilini belirlemekte kullanõlan dört ifade vardõr:

Page 294: Yaz - TD Software · Ö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ş

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; font-family:arial}

Sõnõf ve Gruplama Sõnõf (class), stil kurallarõnõn küçük parçalara ayrõlmasõnõ sağlar. Sayfadaki herhangi bir yazõnõn diğer yazõlardan farklõ görünmesi istendiği durumda, isteni-len sayõda özel HTML etiketi oluşturulabilir. Örneğin sayfada iki farklõ türde H1 etiketi kullanõlmak istensin.

H1.serif {

font: 14pt Century Schoolbook;

}

H1.sans{

font: 20pt Arial;

}

Bu stilleri kullanmak için kod içine serif veya sans sõnõf ismi vermek yeterlidir. Gruplama, stil özellikleri ve değerleri yoğunlaştõrõldõğõnda oluşur. Örneğin:

P.1 {

font: verdana;

font-size: 12pt;

line-height: 18pt;

}

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.

Page 295: Yaz - TD Software · Ö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ş

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?

Page 296: Yaz - TD Software · Ö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ş

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.

Page 297: Yaz - TD Software · Ö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ş

302 Modül 9:

RESİM 9.1.

Aşağõdaki kodlarõ <Body>..</Body> etiketlerinin arasõna yazarak HTML say-fayõ 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>

Page 298: Yaz - TD Software · Ö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ş

Web Programlamaya Giriş 303

<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>

Page 299: Yaz - TD Software · Ö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ş

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()

Page 300: Yaz - TD Software · Ö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ş

Web Programlamaya Giriş 305

{

form1.password.value += "H";

}

function HarfI()

{

form1.password.value += "I";

}

function HarfJ()

{

form1.password.value += "J";

}

function HarfK()

{

form1.password.value += "K";

}

function HarfL()

{

form1.password.value += "L";

}

function HarfM()

{

form1.password.value += "M";

}

function HarfN()

{

form1.password.value += "N";

}

function HarfO()

{

form1.password.value += "O";

}

function HarfP()

{

form1.password.value += "P";

}

function HarfR()

{

form1.password.value += "R";

}

function HarfS()

{

Page 301: Yaz - TD Software · Ö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ş

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 say-fayõ 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 say-fayõ tasarlayõn.

Page 302: Yaz - TD Software · Ö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ş

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,height=300')

}

</script>

Page 303: Yaz - TD Software · Ö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ş
Page 304: Yaz - TD Software · Ö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ş

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.

Page 305: Yaz - TD Software · Ö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ş

312 Modül 10:

Konu 1: Kullanõcõ Kontrolleri

Sõk kullanõlan kontroller bir araya getirilerek yeni bir kontrol oluşturulur. Bu kont-roller uygulama içinde her sayfada kullanõlabilir. Örneğin, sayfalar arasõ dola-şõmõ sağlayan menü paneli, kullanõcõ kontrolü haline getirilebilir. Web kontrollerinde olduğu gibi kullanõcõ kontrolleri de sunucu tarafõnda çalõşõr. Kullanõcõ kontrolleri System.Web.UI.UserControl sõnõfõndan türetilmiştir.

Kullanõcõ Kontrolünün Avantajlarõ ! Kullanõcõ kontrolleri, ayrõ bir isim alanõ içinde tanõmlanõr. Bu durum kulla-

nõ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 uygula-malardaki kullanõcõ kontrolleri, kullanmadan önce uygulamaya eklenmelidir.

Page 306: Yaz - TD Software · Ö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ş

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 komu-

tunu seçin. 4. Name metin kutusuna kullanõcõ kontrolüne verilecek ismi girin.

Page 307: Yaz - TD Software · Ö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ş

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.

Page 308: Yaz - TD Software · Ö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ş

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"/>

Page 309: Yaz - TD Software · Ö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ş

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>

Page 310: Yaz - TD Software · Ö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ş

Kullanõcõ Kontrolleri Oluşturmak 317

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?

Page 311: Yaz - TD Software · Ö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ş

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. Kate-gori 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

HyperLink � btnUyeGiris NavigateUrl UyeGiris.aspx

Text tõklayõnõz

HyperLink � btnUyeKayit NavigateUrl UyeKayit.aspx

Page 312: Yaz - TD Software · Ö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ş

Kullanõcõ Kontrolleri Oluşturmak 319

Kontrol � Kontrol İsmi Özellik Değer

Text Üye Kayit

LinkButton � btnCikis 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>

Page 313: Yaz - TD Software · Ö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ş

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 Değer

HyperLink � Link1

NavigateUrl

Text AnaSayfamYap

HyperLink � Link2

NavigateUrl

Text SikKullanilanlaraEkle

HyperLink � Link3

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:

Page 314: Yaz - TD Software · Ö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ş

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</asp: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>

Page 315: Yaz - TD Software · Ö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ş

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üzenleye-

rek OK düğmesini tõklayõn. 5. Server Explorer penceresinden DataConnections seçeneğini işaretle-

yin. 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ükle-

yin.

Kategori Kontrolünün Eklenmesi ASPEticaret projesine Kategori isminde yeni bir kullanõcõ kontrolü ekleyin. Kullanõcõ kontrolü içine tablodaki kontrolleri ekleyin.

Page 316: Yaz - TD Software · Ö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ş

Kullanõcõ Kontrolleri Oluşturmak 323

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>

Page 317: Yaz - TD Software · Ö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ş

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

Page 318: Yaz - TD Software · Ö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ş

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 öğrene-cek,

! Web uygulamalarõnda Connected ve Disconnected çalõşma yapõsõnõ öğreneceksiniz

Page 319: Yaz - TD Software · Ö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ş

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.

Page 320: Yaz - TD Software · Ö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ş

ADO.NET ile Veriye Erişim 329

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çin-deki 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

Page 321: Yaz - TD Software · Ö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ş

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ğlan-tõ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

Page 322: Yaz - TD Software · Ö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ş

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.

Page 323: Yaz - TD Software · Ö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ş

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

Page 324: Yaz - TD Software · Ö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ş

ADO.NET ile Veriye Erişim 333

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-

rilebilir.

FooterTemplate Repeater kontrolünün en altõndaki alandõr. Alt

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")%> '

Page 325: Yaz - TD Software · Ö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ş

334 Modül 11:

Burada Databinder.eval, repeater kontrolüne bağlanan veri kümesi için-den 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 me-todu 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.

Page 326: Yaz - TD Software · Ö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ş

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 Tem-plates 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 ko-duna geçerek veri bağlama işlemlerini gerçekleştirin.

Page 327: Yaz - TD Software · Ö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ş

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" Font-

Bold="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.

Page 328: Yaz - TD Software · Ö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ş

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 ola-yõna kod yazõlamaz. DataList içinde kullanõlan Button kontrolüne kod yaz-mak 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.

Page 329: Yaz - TD Software · Ö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ş

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 özel-leş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şlemle-rini destekler. DataGrid kontrolüne veri bağlamak için şablon kullanmaya ge-rek 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

Page 330: Yaz - TD Software · Ö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ş

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ştu-run.

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 Gener-ate 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 tablolar-dan birini girin.

7. DataSet kontrolünü veri ile dolduran ve bağlama işlemlerini gerçekleşti-ren 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.

Page 331: Yaz - TD Software · Ö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ş

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")

Page 332: Yaz - TD Software · Ö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ş

ADO.NET ile Veriye Erişim 341

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

BoundColumn kolonu, DataGrid kontrolünün Columns etiketi içinde tanõmlanmõştõr. DataField özelliğinde ise kolon adõ belirtilmiştir

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

Page 333: Yaz - TD Software · Ö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ş

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õ şek-linde görüntü vermek için yine bu kolon kullanõlabilir. Örnekte HyperLinkColumn kullanõmõ gösterilmektedir. DataGrid nesnesi üzerindeki Detaylar kolunu tõklanarak, detay bilgileri getirilebilir. Bu bilgiler Detaylar.aspx sayfasõ üzerinde gösterilir.

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" EnableViewState="False"

CellPadding="10" Runat="Server">

<Columns>

<asp:BoundColumn

HeaderText="Müşteri Adõ"

Page 334: Yaz - TD Software · Ö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ş

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 üze-rinde 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

Page 335: Yaz - TD Software · Ö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ş

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" EnableViewState="False"

ShowHeader="False" CellPadding="10" Runat="Server">

<Columns>

<asp:HyperLinkColumn

DataNavigateUrlField="link_url"

DataTextField="link_title" />

</Columns>

</asp:DataGrid>

TemplateColumn TemplateColumn, kayõtlarõ bir şablona uyarak görüntüleyen kolondur. DataGrid hücreleri içinde görüntülenecek verileri çeşitli kontroller kullanarak ekrana yansõtmak için bu kolon kullanõlõr. Ancak TemplateColumn, kendi içinde HeaderTemplate, FooterTemplate, ItemTemplate ve EditItemTemplate ol-mak üzere alanlara ayrõlõr. Kod 11.8�de TemplateColumn kullanõmõ gösterilmektedir. TemplateColumn ala-nõnda, kitaba ait yazar ve açõklama bilgileri görüntülenir. Ancak bu iki kolon bilgileri HTML kodlarõyla alõnõr.

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", _

Page 336: Yaz - TD Software · Ö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ş

ADO.NET ile Veriye Erişim 345

conn)

conn.Open()

DataGrid1.DataSource = cmdSelect.ExecuteReader()

DataGrid1.DataBind()

conn.Close()

End Sub

HTML

<asp:DataGrid ID="DataGrid1"

AutoGenerateColumns="False" EnableViewState="False"

ShowHeader="False" CellPadding="10" Runat="Server">

<Columns>

<asp:BoundColumn

DataField="kitap_baslik" />

<asp:TemplateColumn>

<itemTemplate>

<table>

<tr>

<td>Yazar:</td>

<td><%# DataBinder.Eval( Container.DataItem, "kitap_yazar" )%></td>

</tr>

<tr>

<td>Açõklama:</td>

<td><%# DataBinder.Eval(Container.DataItem, "kitap_aciklama" )%></td>

</tr>

</table>

</itemTemplate>

</asp:TemplateColumn>

</Columns>

</asp:DataGrid>

Page 337: Yaz - TD Software · Ö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ş

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

Page 338: Yaz - TD Software · Ö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ş

ADO.NET ile Veriye Erişim 347

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 is-mine 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

Page 339: Yaz - TD Software · Ö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ş

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

Page 340: Yaz - TD Software · Ö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ş

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 ola-yõ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()

Page 341: Yaz - TD Software · Ö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ş

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 kontro-lün AllowPaging özelliği True yapõlõr. Varsayõlan değer False değeridir. PageIndexChanged olayõnõ tetikleyecek bir metodun yazõlmasõ gerekir.

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

Page 342: Yaz - TD Software · Ö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ş

ADO.NET ile Veriye Erişim 351

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>

Page 343: Yaz - TD Software · Ö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ş

352 Modül 11:

Çalõşma zamanõnda forma yeni bir kontrol eklemek için Controls.Add() me-todu 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

Page 344: Yaz - TD Software · Ö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ş

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ön-temi kullanõlõr. Bu yöntemler ile ASP.NET sayfalarõnda veri alõşverişi yapõlõr.

Page 345: Yaz - TD Software · Ö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ş

354 Modül 11:

ASP.NET uygulamalarõ Web sunucularõ üzerinde işlem yapacağõ için perfor-mans çok önemlidir. Dolayõsõyla, çalõşma modelinin yerinde seçilmesi gerekli-dir. Ö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 Discon-nected bağlantõ modeli uygulanmalõdõr.

Page 346: Yaz - TD Software · Ö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ş

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� %>

Page 347: Yaz - TD Software · Ö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ş

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?

Page 348: Yaz - TD Software · Ö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ş

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

Page 349: Yaz - TD Software · Ö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ş

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 = _

Page 350: Yaz - TD Software · Ö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ş

ADO.NET ile Veriye Erişim 359

"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

Page 351: Yaz - TD Software · Ö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ş

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

Label � lblKitapAdi

Label � lblYazarAdi

Label � lblFiyat

Label � lblAciklama

Label � lblMesaj

Image � imgResim

TetxBox � txtAdet

Button � btnSatinAl Text Satõn Al

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" %>

Page 352: Yaz - TD Software · Ö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ş

ADO.NET ile Veriye Erişim 361

<!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>

Page 353: Yaz - TD Software · Ö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ş

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:

Page 354: Yaz - TD Software · Ö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ş

ADO.NET ile Veriye Erişim 363

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

Page 355: Yaz - TD Software · Ö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ş

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

Page 356: Yaz - TD Software · Ö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ş

ADO.NET ile Veriye Erişim 365

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">

Page 357: Yaz - TD Software · Ö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ş

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 Font-Bold="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">

Page 358: Yaz - TD Software · Ö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ş

ADO.NET ile Veriye Erişim 367

<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şaretle-

yin. 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")

Page 359: Yaz - TD Software · Ö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ş

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" %>

Page 360: Yaz - TD Software · Ö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ş

ADO.NET ile Veriye Erişim 369

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>

Page 361: Yaz - TD Software · Ö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ş

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>

Page 362: Yaz - TD Software · Ö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ş

ADO.NET ile Veriye Erişim 371

DataSet İçine DataTable Eklenmesi 1. Server Explorer penceresinden DataConnections seçeneğini işaretle-

yin. 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

Page 363: Yaz - TD Software · Ö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ş

372 Modül 11:

If conn.State = ConnectionState.Open Then

conn.Close()

End If

End Try

End Sub

Page 364: Yaz - TD Software · Ö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ş

Modül 12: ASP.NET ile Durum Yönetimi

Bu modülde ASP.NET Web uygulamalarõnda kullanõlan durum yönetimi üze-rinde 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.

Page 365: Yaz - TD Software · Ö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ş

376 Modül 12:

Durum Yönetimi

Web formlarõ stateless çalõşõr. Yani kullanõcõlardan gelen isteklerin nereden gel-diği anlaşõlmaz. Web sunucusuna yapõlan her istekte Web formlar yeniden oluşturulur. ASP.NET, sunucuda uygulamaya ait özel bilgileri tutan ve sayfalar arasõ veri aktarõmõ gerçekleştiren bir altyapõ sağlar.

Page 366: Yaz - TD Software · Ö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ş

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.

Page 367: Yaz - TD Software · Ö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ş

378 Modül 12:

Konu 1: Session

Kullanõcõ bilgisayarõ ve Web sunucusu arasõnda kurulan bağlantõya session de-nir. 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 bil-giler Session değişkenleri içinde tutulur. ASP.NET Session değişkenlerini yönetirken HttpSessionState sõnõfõnõ kulla-nõr.

Page 368: Yaz - TD Software · Ö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ş

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 sunu-cuda 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

Page 369: Yaz - TD Software · Ö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ş

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ğer-ler 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 bilgi-leri 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

Page 370: Yaz - TD Software · Ö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ş

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õ.

Page 371: Yaz - TD Software · Ö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ş

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.

Page 372: Yaz - TD Software · Ö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ş

ASP.NET ile Durum Yönetimi 383

! Persistent (Kalõcõ): Persistent cookie nesneleri, temporary cookie nes-nelerinden 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.

Page 373: Yaz - TD Software · Ö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ş

384 Modül 12:

Cookie nesnelerinin diskte tutulacağõnõn garantisi yoktur. Kullanõcõ sabit diskin-den bu dosyalarõ silmiş olabilir.

Page 374: Yaz - TD Software · Ö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ş

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.

Page 375: Yaz - TD Software · Ö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ş

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

Page 376: Yaz - TD Software · Ö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ş

ASP.NET ile Durum Yönetimi 387

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�) = 0

End Sub

Page 377: Yaz - TD Software · Ö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ş

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 ver-

mek 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 prose-dürü tanõmlanmamõş varsayar.

Global.asax dosyasõnda desteklenen olaylar üç kategoride toplanabilir:

Page 378: Yaz - TD Software · Ö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ş

ASP.NET ile Durum Yönetimi 389

! 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.

Page 379: Yaz - TD Software · Ö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ş

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?

Page 380: Yaz - TD Software · Ö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ş

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 = _

Page 381: Yaz - TD Software · Ö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ş

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

Page 382: Yaz - TD Software · Ö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ş

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

Page 383: Yaz - TD Software · Ö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ş

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 eti-kete 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

Page 384: Yaz - TD Software · Ö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ş

Okuyucu Notlarõ

Page 385: Yaz - TD Software · Ö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ş

Okuyucu Notlarõ