• Anasayfa
  • Hakkımızda
  • Etkinlikler
  • Destek Verin
  • Site Haritası
  • Giriş Yap
  • Üye Ol
  • Facebook
  • Twitter
  • RSS
Yazılım Dilleri
  • Soru - Cevap
  • EĞİTİM SETİ
  • KATEGORİ
  • DUYURU
  • TEKNOLOJİ HABERLERİ

Son Sorular

  • 23.04.2016 00:55:33C programlama 2 oyun
  • 20.04.2016 16:34:41Local Database
  • 15.04.2016 14:26:15Fatura kayıt işlemi
  • 21.03.2016 01:55:30C# problem

Popüler Sorular

  • 27.05.2012 05:49:50Asp.Net ile Date time alana veri ekleyemiiyorum ?
  • 2.04.2012 00:45:18.exe uzantılı dosya için dijital imza nerde nasıl alınır.
  • 12.05.2012 08:44:49Acil Yardım
  • 27.05.2012 13:46:51veri tabanı bağlantısı
  • .Net Framework
  • 8085 Assembly
  • Active Directory
  • ADO.NET
  • Android
  • Apple IOS
  • Arduino
  • ASP.NET
  • ASP.NET MVC
  • Blackberry
  • C#.Net
  • C++
  • CCG Framework
  • CISCO
  • CSS
  • Diğer
  • Dreamweaver
  • Entity Framework
  • Exchange Server
  • Gömülü Sistemler
  • GSM Programlama
  • Güncel
  • Güvenlik
  • HTML5
  • Java
  • Javascript / JQuery
  • Jira
  • Kariyer ve İş Yaşamı
  • LINQ
  • LibreOffice
  • Linux
  • Matlab
  • Microsoft Dynamics CRM
  • Mobil Uygulama Geliştirme
  • MySQL
  • NoSQL
  • Oracle
  • OWIN
  • PFSense
  • PHP
  • Powershell
  • Python
  • Sanallastirma
  • SAP-ABAP
  • SCOM 2012
  • SEO
  • Sharepoint 2010
  • Sharepoint 2013
  • Silverlight
  • Sistem Analiz ve Tasarımı
  • SQL Server
  • Symantec
  • TFS
  • T-SQL
  • Ubuntu
  • VB.NET
  • Veritabanı Yönetim Sistemleri
  • Visual Studio
  • VMware
  • WCF
  • Web Hosting
  • Windows 8
  • Windows Azure
  • Windows Phone 7.1
  • Windows Phone 8
  • Windows Server
  • Wordpress
  • WPF
  • Xamarin
  • XNA
  • Yazılım Mühendisliği
  • Yöneylem Araştırması
  • ASP.NET MVC
  • Entity Framework
  • Javascript / JQuery
  • LINQ
  • PHP

Son Duyurular

IPhone 6 ve IPhone 6 Plus Teknik Özellikleri ve Fiyatı

IPhone 6 ve IPhone 6 Plus Teknik Özellikleri ve Fiyatı

DELL'in Yeni Projesi: USB Bilgisayar (Project Ophelia)

DELL'in Yeni Projesi: USB Bilgisayar (Project Ophelia)

Windows Phone Youtube Uygulaması Google ve Microsoft ile Yeniden Yapılıyor

Windows Phone Youtube Uygulaması Google ve Microsoft ile Yeniden Yapılıyor

Android ve Apple IOS Telefonlar için Blackberry Messenger (BBM)

Android ve Apple IOS Telefonlar için Blackberry Messenger (BBM)

Nokia Lumia 925 Teknik Özellikleri, Lumia 928 ve 920 ile Karşılaştırması

Nokia Lumia 925 Teknik Özellikleri, Lumia 928 ve 920 ile Karşılaştırması

LG Optimus G Pro Özellikleri ve Gözle Video Oynatma Teknolojisi

LG Optimus G Pro Özellikleri ve Gözle Video Oynatma Teknolojisi

BAĞLANTI YÖNETİMİ (CONNECTİON MANAGEMENT )

Merhaba değerli Yazılımcı / Programcı arkadaşlar, Önceki yazılarımızda ADO.NET’in gizemli dünyasına giriş yaparak, ADO.NET içerisinde kullanılan veri erişim sınıflarını, bağlantılı ve bağlantısız ver

08.07.2012

Yazar: Muhammed ÖNAL (Google+)

Kategori: ADO.NET

9402

ADO.NET &  BAĞLANTI YÖNETİMİ

 (CONNECTİON MANAGEMENT )

Merhaba değerli Yazılımcı / Programcı arkadaşlar,

Önceki yazılarımızda ADO.NET’in gizemli dünyasına giriş yaparak, ADO.NET içerisinde kullanılan veri erişim sınıflarını, bağlantılı ve bağlantısız veri yönetimini ayrı ayrı yazılar şeklinde incelemiştik. Bu yazımızda ise ADO. NET’i projelerimize dâhil ettiğimiz ve veri tabanı yönetimlerinde en çok kullandığımız Veri tabanından veri görüntüleme, veri ekleme, veri güncelleme ve silme gibi işlemleri yine detaylarıyla örnek projelerimiz ve uygulamalarımız çerçevesinde inceleyeceğiz.

O zaman fazla zaman kaybetmeden yazımıza giriş yaparak detaylarına inelim.

 

Evet, arkadaşlar dilerseniz bahsettiğimiz bu işlemlerin anlatımına geçmeden önce sizlere anlatmak ve göstermek istediğim birkaç şey olacaktır. Yazımızın başlığına dikkat ettiyseniz eğer anlatmak istediğim şeylerden biri; Bağlantı yönetimi (Connection Management) konusundan bahsetmek istiyorum.

Peki, nedir bu Bağlantı Yönetimi (Connection Management ) ? Ve Ne işimize yarayacak? Sorduğumuz bu sorulara cevap arayarak, ileride anlatacaklarımız için kafamızda bazı şeylerin oturmasını sağlayacağız.

Bağlantı Yönetimi ;Kısaca bağlantıyı açmak , kapatmak ve bağlantı durumlarını kontrol etmektir.

Daha önceki yazılarımızda da bahsettiğimiz gibi, veritabanına bağlantı kurmak için bağlantı cümlemizi yazdıktan sonra Connection nesnesinin en önemli iki metodundan biri olan Open Metodu ile bağlantıyı kuruyorduk, diğer metot olan Close Metodu ile veritabanı ile bağlantımızı kesme yâda kapatma işlemini gerçekleştiriyorduk.

Ve yine şunu demiştik, Close metodu ile bağlantıyı kapatmamızın sebebi ise kullanılmayan bağlantıları kapatarak, kaynak (source) tüketimini azaltıyorduk. Bu da bize daha performanslı bir bağlantı gerçekleştirme işlemi sağlamış oluyor.

Yine sizlerle paylaşmak istediğim diğer bir konu ise bağlantı cümlesini kurduğumuzda , sizlerle değişik biçimlerde yazılabilecek bağlantı cümleleri olduğunu söylemiş ve daha fazla örneği incelemeniz için (www.connectionstrings.com ) web sitesine göz atmanızı dile getirmiştim. Bu bağlantı cümleleri içinde kullanacağımız Timeout parametresini kullanmak istersek, Timeout parametresi ,Open Metodu için yazdığımız uygulama ile veri kaynağı (data source) arasındaki bağlantıyı belirtilen süre içinde kurmaya çalışan bağlantı cümlesi parametresidir. Genellikle, eğer herhangi bir değer atanmamış ise varsayılan değer olarak 15 sn atanır. Elbette ki, bu değeri bizlerde manüel olarak atayabiliriz.

Bağlantı yönetiminin en önemli özelliklerinden beri hiç kuşkusuz hatasız bir bağlantı kurup ve bu bağlantıyı sonlandırmaktır. Birçok uygulama geliştiricisinin düştüğü hatalardan biride uygulama içinde verimli yönetilmeyen bağlantının hata üretmesidir.

 

İyi Programlama Alıştırması:

Peki, bu nasıl bir hatadır ve ne gibi şeylerden ötürü kaynaklanıyordur. Bu sorumuza cevap olarak şunu diyebiliriz.

Cevap:  - Daha önce uygulama içinde Open metodu kullanarak açtığımız bağlantıyı kapatmadıysak ve yeniden bir bağlantı açmaya çalıştıysak uygulamamız hata üretecektir. Ama kapattığımız bir bağlantıyı yeniden kapatmamız durumunda uygulamamız hata üretmeyecektir.

Hemen bazı arkadaşların aklına bu soru gelmiş olabilir.

Peki, Open metodu ile açılan bağlantı kapatılmadığında kendiliğinden kapatılmıyor mu?

Cevap olarak şunu diyebiliriz ki, Open metodu ile açılan bağlantılar kapatılmaması durumunda “Garbarage Collector” yani Türkçe ifade biçimiyle “Çöp Toplayıcı” diye adlandırdığımız bu sistem devreye girerek kapatılmamış bağlantıyı kapatmış olur. Çöp toplayıcı tarafından kapatılan bağlantımızın değişkeni geçici olarak memoride yer kaplamasına sebep olur.

NOT:  birçoğumuzun duyduğu Dispose metodu da uygulamalarımızın bağlantı nesnesini kapatmak için kullanılabilen bir metottur.

 

Gerekli bilgileri verdikten sonra dilerseniz şimdi sizlerle hem VB.Net hem de C#.Net ortamında gerçekleştireceğimiz bir bağlantı yönetim türünü inceleyelim:

Örneğimizde;
myDataAccess adlı veritabanımız üzerinde Open ve Close metodlarının kullanımı gösterilmiştir.

   Vb.Net ile kodlarımız aşağıdaki gibidir:

Dim baglanti As SqlConnection = New SqlConnection("Data Source=.; Initial Catalog=myDataAccess; Integrated Security=True")


'Bağlantıyı açmak

baglanti.Open()

'Veri tabanı İşlemlerinin gerçekleştirildiği alan bu aradadır
baglanti.Close()


 

 

 

  C#.Net ile ilgili kodlarımız ise aşağıdaki gibi olacaktır :

 

SqlConnection baglanti = new SqlConnection("Data Source=.; Initial Catalog=myDataAccess; Integrated Security=True");

 

//Bağlantıyı Açmak

baglanti.Open();

 

//Veri tabanı İşlemlerinin gerçekleştirildiği alan bu aradadır

baglanti.Close();


 

Şimdi, bu noktada vurgu yapmak istediğim önemli konulardan biri şudur :
Open ve Close Metodları arasında veritabanı ile ilgili işlemlerimizi yaptığımızda Open Metodu ile Data Source  yani Veri Kaynağı açılırken, bazı çalışma zamanı hataları (run time error) dediğimiz hatalardan dolayı bağlantılarımız açılamayabilir ve yazmış olduğumuz uygulamamız bize bazı hatalar üretecek pozisyona gelebilir.

Peki,  bu Run Time Error (Çalışma Zamanı Hataları ) ne gibi şeylerden kaynaklanıyor olabilir? Diye bir soru aklınıza takılabilir. Cevap olarak; bizler bu hataların kaynaklanma sebeplerini aşağıdaki gibi sıralayabiliriz:

-         Serverımızın bulunamamasından

-         Var olan Veritabanımızın bulunamamasından

-         Login işlemlerimizi yaparken hatalı Kullanıcı adı ve Parola’nın girilmesinden

-         Sistemimizin Donanım(Hardware) ve Yazılımından(Software) kaynaklanabilir…

Soru: Peki, oluşabilecek hataları düzeltmenin veya yakalamanın bir yolu yok mudur?

Cevap: Elbette ki, bu hataları yakalamanın bir yolu vardır. Try, Catch ve Finally deyimlerini kullanarak bir kod bloğunu oluşabilecek hatalardan korumuş oluruz.

Şimdi bu açıklamanın hemen ardından sizlerle Bu TRY, CATCH ve FINALLY deyimlerinin ne işe yaradığını ve her birinin kod bloğu içindeki işlevlerini irdeleyelim.

TRY bloğu içinde:

-         Yazacağımız kodlar hata üretebilecek kodlardır.

Örnek: Tüm veritabanı işlemlerimizin yazılacağı blog’dur.

CATCH bloğu içinde:

-         Uygulamamızın ürettiği hataları tiplerine göre sıralı bir şekilde işleyen deyimdir.Bu blog içine yazacağımız kodlar,bu blog vasıtasıyla yakaladığımız hataya göre yapılacak işlemlerimizdir.

Örnek: Uygulamamızı çalıştırdığımız zaman, bağlantının açılmadığı durumda veritabanı işlemlerini gerçekleştirmeye çalıştığımız zaman bizlere bağlantının açılması noktasında uyarı bildiren mesaj kutusudur.

FINALLY bloğu içinde:

-         Uygulamamız içinde Try ve Catch deyimlerinden herhangi biri çalıştıktan sonra çalışan bir deyimdir. Bu blok içinde yazacağımız kodlar, hem hatanın üretildiği hem de üretilmediği iki farklı durumda da dikkate almamız gereken işlemlerdir.

Örnek: Uygulamamızın bağlantısının kapatılması da her iki durumda da yapılması gereken bir işlemdir.

 

 

Uygulamaya ilişkin yukarıdaki örneğimize uygun bir şekilde TRY,CATCH ve FINALLY blogları arasına üretilebilecek hatalardan koruyan örnek kodlarımızı yine hem VB.Net hem de C#.Net kod ortamında gösterelim:

 

C#.Net ile ilgili kodlarımız aşağıdaki gibidir:

----------------------------------------------------------

 

 

Vb.Net ile ilgili kodlarımız ise aşağıdaki gibi olacaktır:
---------------------------------------------------------------------

 

BAĞLANTI DURUMLARININ KONROL EDİLMESİ

Evet, arkadaşlar yukarıdaki örneklerimizden de anlaşıldığı gibi TRY CATCH ve FINALLY deyimleriyle olası oluşabilecek hataları önlemiş olduk. Peki, bağlantı durumlarımızı kontrol etmemiz gereken yerde neler yapmamız gerekir. Dilerseniz şimdide buna bir göz atalım:

Önceki yazılarımızda kullandığımız bazı örneklerimizde aslında bağlantı yönetimimizi ve bağlantı kontrol biçimini göstermiştik fakat üzerinde durmamıştık. Çünkü önceki yazılarımızın ana konusu bağlantı cümlesi kurmak ve bağlantı cümlesi ile ilgili işlemlerimizi gerçekleştirmek idi.

Bağlantı durumumuzu kontrol etmek için ise bağlantı sınıfının State özelliğine başvururuz.

State özelliği ile yapacağımız bağlantı kontrollerinde bu özelliğin alabileceği bazı değerler vardır. Kullanışlı olan bu değerleri bir tablo halinde listeleyecek olursak:
 

Connection Nesnesinin(Bağlantı Nesnesinin) State Özelliğinin Değerleri

İsim

Açıklamalar

Değeri

Broken

Yalnızca, açık olan bir bağlantının kopup tekrar bağlanıldığı durum

16

Closed

Bağlantının kapalı olduğu durum

0

        Connecting

Veri kaynağına (Data Source) bağlanma aşamasındaki durum

2

     Executing

Bağlantı üzerinde bir komutu çalıştırıyor olması durumu

4

            Fetching

Bağlantı üzerinden veri çekiliyor olması durumu

8

            Open

Bağlantının açık olduğu durum

1

 

Yukarıdaki örneklerimizde açık bir şekilde görebiliriz. Yine işlemlerimizi yukarıdaki örnekler üzerinden yürütürsek: Bağlantı nesnesinin kontrolünü state özelliği ile kontrol ediyorduk. Örneğimize ilişkin C# ve Vb.Net kodları aşağıdaki gibidir.

C#.Net Kodlarımız aşağıdaki gibidir:
---------------------------------------------

if (baglanti.State == ConnectionState.Closed)

{

   //Bağlantıyı Açmak

   baglanti.Open();

}

 


VB.Net Kodlarımız ise aşağıdaki gibi olacaktır:

If baglanti.State = ConnectionState.Closed Then

   'Bağlantıyı açmak

    baglanti.Open()

           
End If

 

 

 

ÖNEMLİ NOT: Bağlantı nesnelerinin (Connection nesnesi) durumu değiştiği zaman StateChange olayı tetiklenmiş olur. Bu olay ile bağlantının hangi durumlarda açılıp kapandığı öğrenilebilir.

Peki, bu durumu StateChange olayı ile öğreniyorsak, bağlantımızın eski ve yeni durumlarını hangi parametre veya parametreler ile öğrenebiliriz gibi bir soru gelebilir aklınıza. İşte bağlantımızın yeni ve eski durumunu ise StateChangeEventArgs parametresi ile öğrenebiliyoruz.

Bu parametreye ilişkin iki özelliği vardır. Bu özellikleri açıklamalarıyla birlikte aşağıdaki tablodan görebilirsiniz.


Özellik (Property)

 


Açıklama

CurrentState

Bağlantını o anda var olan durumu hakkında bilgi verir.Yani bağlantının yeni durumudur.

OriginalState

Bağlantının eski durumu yani değişmeden önceki durumu hakkında bilgi verir.

 

Vb.Net kodlarımız aşağıdaki gibidir:

C#.Net kodlarımız ise aşağıdaki gibi olacaktır

---------------------------------------------------------------------------------------------------------
public void DurumRapor(object sender, StateChangeEventArgs e)
{
    Interaction.MsgBox("Bağlantı" + e.OriginalState.ToString() + "Durumundan" + e.CurrentState.ToString() + "Durumu olarak değişti");

}

-------------------------------------------------------------------------------------------------------

Şeklindedir.

 

Bugünlükte bizden bu kadar diyor ve makalemizin sonuna gelmiş bulunuyoruz. Kafanıza takılan soru işaretleri var ise mail yoluyla sorularınızı iletebilirsiniz.

Yazılım ve Programlama aşkı ile tutuştuğumuz bir sonraki yazımızda görüşmek dileğiyle.

NOT:
Bu makalemizde de gerek yerli gerek yabancı kaynakları tarayarak ve gerek kendi bilgi ve tecrübelerimizden kattığımız Programlama dünyasında ADO. NET ile bağlantı yönetimi ve bağlantılarımızın kontrol durumunu hem Vb.Net hemde C#.net kod ortamında örneklendirerek paylaşmış olduk. Programlama dünyasının bu büyülü dünyasına adım atan arkadaşlara yol gösterici olması amacıyla faydalı olması dileğiyle. Bir sonraki makalemizde görüşmek dileğiyle şimdilik hoşça kalın.
 

Kaynak:   Visual Basic 2010 How to program ,Deitel
                 Software Professional 2 , 2005, Bilge Adam
                 Muhammed ÖNAL,2012 .NET languages & Examples


Saygılarımla;

Muhammed ÖNAL
Bilgisayar Mühendisi
RFID Sistemleri Uzmanı
BT Yönetişimcisi

Blog:  http://www.muhammedonal.com
Web : http://www.yazilimdilleri.net


Copyright © Muhammed ÖNAL , 2012

 

Yazar Hakkında

Muhammed ÖNAL

Muhammed ÖNAL

www.muhammedonal.com

Bilgisayar Mühendisi | RFID Sistemleri Uzmanı | BT Yönetişimcisi | Strateji Planlama ve İş Geliştirme 2015 itibariyle sağlık sektöründe Bilgi Sistemleri Yöneticisi ve Üst yönetim Stratejik Planlama ve İş Geliştirme Koordinatörü pozisyonunda çalışmaktadır.

Sosyal Medya

ORANLAR

  • 9402izleme

Arkadaşlarınla Paylaş

  • Tweet

0 Yorum

Yorum Yaz / Soru Sor

Lütfen yorum yazmak veya soru sormak için üye girişi yapınız.

Son Yorumlar

  • Hocam Link başka sayfaya yönlendiriyor.
  • merhaba benim merak ettiğim bir konu var y...
  • Merhaba download linki çalışmıyor. Rica et...
  • Nevzat Bey selamlar, Açıkçası bizler a...
  • Parametreleri Cache İşleminden Yalıtma kon...

En Güncel Sorular

  • Bilgilendirme maili (C#.Net)
  • Power Pivot (Sharepoint 2010)
  • BigInteger, BigDecimal (Asp.Net ve Asp.Net MVC)
  • visual C# ile asp nette veritabanı islemleri (Asp.Net ve Asp.Net MVC)
  • Share Point ile Dosya Arşiv Yönetim Sistemi yapılabilir mi ? (Sharepoint 2010)

En Son Cevap Verilen Sorular

  • Bilgilendirme maili
  • BigInteger, BigDecimal
  • visual C# ile asp nette veritabanı islemleri
  • Share Point ile Dosya Arşiv Yönetim Sistemi yapılabilir mi ?
  • txt dosyasına veri yazma

Twitter

Takip et: @yazilim_dilleri

En Çok Okunanlar

Elif BAYRAKDAR

C# ile SQL Server Bağlantısı, Insert, Update ve Delete Sorguları

23.05.2013

  • 120031
  • 0
Hakan Keskin

C# ile Windows Service Projesi Oluşturma, Debug Etme ve Setup Hazırlama

17.12.2013

  • 65116
  • 0
batuhan avlayan

Php - Mail Gönderme (İletişim Formu)

02.09.2013

  • 48278
  • 0

Sponsorlar

KODLAB
Pluralsight
Exchange server is
Office 365
YAZILIM DİLLERİ
Yukarı Çık
  • Hakkımızda
  • Facebook
  • Twitter
  • RSS

© Yazılım Dillerinin Buluşma Noktası | Kaynak belirtildiği sürece makaleler kopyalanabilir.
YazilimDilleri.Net sitesinde yer alan kullanıcıların oluşturduğu tüm içeriklerin yayınlanması ile ilgili yasal yükümlülükler içeriği oluşturan kullanıcıya aittir, YazilimDilleri.Net hiçbir şekilde sorumlu değildir.

Kapat

Giriş Yap

Kullanıcı Adı

Şifre

Şifremi Unuttum

KULLANICI GİRİŞİ