bilgeadam c# kitabН 2

Upload: rashad-abbasov

Post on 06-Jul-2015

1.850 views

Category:

Documents


2 download

TRANSCRIPT

Modul 1:

ADO.NET

2

Modl 1: Gelitirme Ortamn Tanmak

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

ADO.NET

Modl 1:

3

Konu 1: C# .NET ile Proje Oluturmak

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

ADO.NET

4

Proje ablonu Semek

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

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

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

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

ADO.NET

Modl 1:

5

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

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

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

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

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

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

ADO.NET

6

Proje Dosyalarna Genel Bak

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

Modl 1:

7

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

Assembly Nedir?

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

ADO.NET

8

Projeye Referans Eklemek

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

ADO.NET

Modl 1:

9

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

ADO.NET

10

sim Alan (Namespace) Nedir?

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

isim alanlar yer alr.

ADO.NET

Modl 1:

11

Yeni sim Alan Eklemek

Yeni isim alan oluturmak iin namespace anahtar kelimesi kullanlr.namespace Isimalani_ismi { ... }

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

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

ADO.NET

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

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

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

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

ADO.NET

Modl 1:

13

Projeye sim Alan Dhil Etmek

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

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

yazmak yeterli olacaktr.Ogrenci.Bilgi ogrenciBilgi = new ogrenci.Bilgi();

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

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

Proje zelliklerini Ayarlamak

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

ADO.NET

Modl 1:

15

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

ADO.NET

16

Konu 2 : Proje Bileenlerini Tanmak

Solution Explorer Kullanmak

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

ADO.NET

Modl 1:

17

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

Object Browser Kullanmak

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

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

18

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

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

isim alannn altnda olduu gsterilir.

Server Explorer Kullanmak

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

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

Modl 1:

19 Servers mensn kullanarak, veritaban

Servers sekmesinin altndaki SQL

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

Dinamik Yardm Almak

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

ADO.NET

20

Grev Listesini Kullanmak

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

ADO.NET

Modl 1:

21

Konu 3: Uygulamalarda Hata Ayklama

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

panelleri

ile

deikenlerin altrlmasn,

paneli ile alma annda komut deikenlerin deerlerinin deitirilmesini salar.

ADO.NET

22

BreakPoint

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

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

ADO.NET

Modl 1:

23

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

Debug Panelleri

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

ADO.NET

24

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

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

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

ADO.NET

Modl 1:

25

Command Panelini Kullanmak

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

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

ADO.NET

26

Konu 4: Uygulamann Derlenmesi

Derleme Seeneklerine Bak

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

Modl 1:

27

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

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

NOT:

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

paneline yansr. Buna Background Compiling denir.

ADO.NET

28

Modl zeti

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

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

ADO.NET

Modl 1:

29

LAB1 : Gelitirme Ortamn Tanmak

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

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

2.

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

ADO.NET

30

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

geniletin. alann ierisindeki OleDbConnection, OleDbCommand, OleDbDataReader, OleDbDataAdapter snflarn inceleyin.System.Data.OleDb

isim

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

ADO.NET

Modl 1:

31

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

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

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

ADO.NET

32

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

ADO.NET

Modul 1:

ADO.NET

34

Modl 2: Veri Merkezli Uygulamalar ve ADO.NETe Giri

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

Modul 2:

35

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

ADO.NET

36

Konu 1: Veri Merkezli Uygulamalar

Veri Depolama

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

Modul 2:

37

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

ADO.NET bu depolama tekniklerinin tmn destekler.

ADO.NET

38

Balantl (Connected) Veri Ortamlar

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

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

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

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

Modul 2:

39

Balantsz (Disconnected) Veri Ortamlar

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

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

40

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

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

ADO.NET

Modul 2:

41

Veri Eriim Yntemleri

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

42

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

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

ADO.NET

Modul 2:

43

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

ADO.NET

44

Konu 2: ADO.NETe GR

ADO.NET Nedir?

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

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

Modul 2:

45

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

ADO.NET Nesne Modeli:

ADO.NET nesne modeli iki ana blmden olumaktadr. DataSet Snflar

.NET Veri Salayc SnflarADO.NET

46

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

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

DKKAT:kullanlmaldr.

ADO.NET Veri Salayclar:

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

ADO.NET

Modul 2:

47

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

System.Data.OracleClient.dll referans eklenmelidir.

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

ADO.NET

48

Her bir veri salaycs ierisinde, birok balant nesnesi bulunur. Connection Command DataReader DataAdapter

XxxConnection: : Veri kaynana balant iin kullanlan snftr.ADO.NET

Modul 2:

49

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

eklerinden biri kullanlr.

Modl zeti

1. 2. 3. 4.

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

ADO.NET

50

Lab 2: Veri Merkezli Uygulamalar ve ADO.NETe Giri

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

ADO.NET

Modul 2:

51

3.

Visual Studio .Neti kullanarak ar Merkezi uygulamasn amak.File mens altndan Open alt mens ierisinden Project komutunu tklayn.

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

Alan Connection sekmesinin grntsn resimdeki gibi dzenleyerek OK butonunu tklayn.

ADO.NET

Modul 4:

ADO.NET

Modul 3

53

Modl 3: Veri Kaynaklarna Balanmak

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

54

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

ADO.NET

Modul 3

55

Konu 1: Veri Salayc Semek

Veri Salayc Nedir?

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

56

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

Veri Salayc Snflar

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

ADO.NET

Modul 3

57

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

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

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

ADO.NET

58

SnfXXXConnection XXXCommand

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

XXXDataReader XXXDataAdapter

Tablo 1.2: Veri Salayc Snf simleri

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

Modul 3

59

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

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

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

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

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

ADO.NET

60

Konu 2: Balant Oluturmak

Balant Cmlesi (Connection String) Oluturmak

ADO.NET

Modul 3

61

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

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

Persist Security Info

WorkstationID (wid) Packet Size

Mode

Tablo 2.1: Balant cmlesinin parametreleriProvider parametresinin Access, SQL Server ve Oracle veri tabanlarna gre

alaca deerler Tablo 2.2 de gsterilmitir

TrSQLOLEDB MSDAORA Microsoft.Jet.OLEDB.4.0

AklamaSQL Server iin Microsoft OLE DB Provider ORACLE iin Microsoft OLE DB Provider Microsoft Jet iin OLE DB Provider

Tablo 2.2: Balant cmlesinin parametreleri

ADO.NET

62

Balant Cmlesini (Connection String) Kullanmak

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

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

ADO.NET

Modul 3

63

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

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

DKKAT:

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

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

Balant Cmlesi(Connection String) rnekleri

ADO.NET

64

Ms Access ile OLEDB Balant Cmleleri

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

Tablo 2.3: Ms Access ile OLEDB Balant Cmleleri

ADO.NET

Modul 3

65

SQL Server ile ODBC Balant Cmleleri

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

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

Tablo 2.4: SQL Server ile ODBC Balant Cmleleri

ADO.NET

66

SQL Server ile OLEDB Balant Cmleleri

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

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

Tablo 2.5: SQL Server ile OLEDB Balat Cmleleri

ADO.NET

Modul 3

67

SQL Server ile Sql Server Balant Cmleleri

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

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

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

ADO.NET

68

OLEDB ve SqlServer Parametreleri Data Source User ID Password Initial Catalog

Edeerleri Server UID PWD Database

Tablo 2.7: OleDb ve Sql Server Parametre Edeerleri

ADO.NET

Modul 3

69

Konu 3: Balant Ynetimi

Balanty Amak ve Kapatmak

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

70

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

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

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

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

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

Modul 3

71

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

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

ADO.NET

72

Balant Durumlarn Kontrol Etmek

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

Deeri16 0 2 4 8 1

Tablo 3.1.1: Connection nesnesinin State Property deerleriprivate void ConnectionAc(OleDb.OleDbConnection con) { //Connection, sadece kapal ise alacak If (con.State == ConnectionState.Closed) { con.Open(); }

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

Modul 3

73

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

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

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

ADO.NET

74

Modl zeti:

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

ADO.NET

Modul 3

75

Lab 1: Balant Oluturmak

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

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

Deer

Closed

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

Balant lemleri:DropDownList

Connection Olutur Connection A Connection Kapat

String

Connection Olutur

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

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

2. Formun Load annda, ComboBox kontrolne veritaban seeneklerini ekleyin.private void Form1_Load(System.Object sender, System.EventArgs e) { comboBox1.Items.Add("Microsoft Access");ADO.NET

Modul 3

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

}

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

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

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

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

Modul 3

79

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

7. Connection Kapat dmesine baslnca oluturulan balanty bularak kapatn.private void Button4_Click(System.Object sender, System.EventArgs e) { if (oleDbCon != null) { // OleDB baglantisi olusturulduysa oleDbCon.Close(); } else { // Sql baglantisi olusturulduysa sqlCon.Close(); } }ADO.NET

Modul 5:

Modl 4: Balantl (Connected) Veritaban lemleri

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

Konu: 4

81

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

82

Modl 4: Connected Veritaban lemleri

Konu 1: Balantl Veri Ortamlaryla almak

Balantl Uygulamalar in Veritaban Mimarisi

Konu: 4

83

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

Balantl veri ortamlar ierisinde kullanlan snflar Tablo 4.1 de belirtilmitir.SnfXXXConnection XXXCommand

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

XXXDataReader

Tablo 4.1. Balantl Veri Ortam Snflar

84

Modl 4: Connected Veritaban lemleri

Konu 2: Command ile almak

Commmand Nedir?

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

Konu: 4

85

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

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

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

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

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

86

Modl 4: Connected Veritaban lemleri

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

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

ExecuteXmlReader

Tablo 4.3: Command Metotlar

Konu: 4

87

Command Oluturmak

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

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

88

Modl 4: Connected Veritaban lemleri

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

CommandType

TableDirect sadece OleDbCommandnesnesi tarafndan kullanlr.

CommandText

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

Parameters

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

Tablo 4.4: Command zellikleri

Konu: 4

89

Parametre Kullanmak

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

XXXParameter nesnesini kullanarak, admlar takip edilir.

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

90 Property ParameterName Aklama

Modl 4: Connected Veritaban lemleri

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

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

Size Direction

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

ParameterDirection.Input (varsaylan

deer)ParameterDirection.InputOutput ParameterDirection.Output ParameterDirection.ReturnValue

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

Tablo 4.6 da Direction zelliinin deerleri listelenmitir.

Konu: 4

91 Enumeratr Input Output InputOutput ReturnValue zellikGirdi parametresidir. Varsaylan deerdir. kt parametresidir. Girdi ve kt parametresi olarak kullanlr. Bir fonksiyon sonucunu geri dndrmek iin kullanlr.

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

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

92

Modl 4: Connected Veritaban lemleri

Konu 3: Command ile Geriye Deer Dndrmek

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

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

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

Konu: 4

93

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

Konu 4: Command ile Geriye Kayt Dndrmek

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

94

Modl 4: Connected Veritaban lemleri

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

OleDbCommand veya SqlCommand nesnesi ile geriye kayt dndrmek iin, ExecuteReader

metodu kullanlr. ExecuteReader ile dnen kaytlar

DataReader nesnesine aktarlr.

DataReader zellik ve MetotlarDataReader dnen kaytlar zerinde ilem yapmay salayan metot ve

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

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

DataReader nesnesinin metotlar Tablo 4.7 de gsterilmitir.

Konu: 4

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

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

96gibi alnabilir.

Modl 4: Connected Veritaban lemleri

Read

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

Tablo 4.7 DataReader MetodlarDataReader, Balantl veri ortamlarnda kullanld iin veri kaynana srekli

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

DataReader nesnesinin zellikleri Tablo 4.8 de gsterilmitir. zellikFieldCount IsClosed Item RecordAffected

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

Tablo 4.8 DataReader zellikleri

Konu: 4

97

DataReader kullanarak kayt ekmek iin aadaki admlar takip edin.

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

98

Modl 4: Connected Veritaban lemleri

Konu 5: Command ile Kayt Dndrmeyen Sorgular altrmak

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

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

Konu: 4

99

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

AklamaVeri semek Veri silmek Veri gncellemek Veri girmek

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

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

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

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

Tablo 4.11 DCL KomutlarExecuteNonQuery metodu ile DDL ve DCL komutlar altrmak iin aadaki

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

100

Modl 4: Connected Veritaban lemleri

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

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

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

Konu: 4

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

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

Modl zeti

1. 2. 3. 4. 5.

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

102

Modl 4: Connected Veritaban lemleri

Lab 1: Veritaban lemleri

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

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

Konu: 4

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

Numara Ad Soyad DogumTarihi Adres Sehir

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

Yeni ptal Kaydet Sil

104

Modl 4: Connected Veritaban lemleri

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

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

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

Konu: 4

105

finally { conn.Close(); } }

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

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

106

Modl 4: Connected Veritaban lemleri

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

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

Form Kontrolleri ilemleri6. Formdaki TextBox kontrollerinin deerlerini sfrlayan kodlar yazn.public void Temizle() {

Konu: 4

107

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

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

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

108 {

Modl 4: Connected Veritaban lemleri

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

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

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

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

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

personele ait bilgileri forma ykleyen kodlar yazn.

Konu: 4

109

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

Modul 6:

Modl 5: Balantsz (Disconnected) Veritaban lemleri

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

Konu: 5

111

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

Veri arama ve sralama ilemlerini reneceksiniz.

Konu 1: Disconnected Uygulamalar in Veritaban Mimarisi

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

112

Modl 5: Disconnected Veritaban lemleri

Balantsz veri ortamlar ierisinde kullanlan snflar Tablo 5.1 de belirtilmitir.SnfXXXDataAdapter

AklamaConnection, Command ve DataReader snflarn kullanarak, verilerin DataSete doldurulmasn ve DataSet de yaplan deiikliklerin veri tabanna kaydedilmesini salar. rnein SqlDataAdapter snf SQL Server ile DataSet arasndaki etkileimi salar. Balant amak ve kapatmak iin kullanlan nesnedir. rnein SqlConnection SQL Server a balant salar. Veritaban zerinde Stored P