ADO.NET Giriş ve SQL Connection

Merhaba,

ADO.NET uygulaması geliştirerek ADO.NET mimarisini öğrenmeye başlıyoruz.
Visual Studio 2015'i açarak yeni bir Windows Forms projesi açıyoruz.

ado.net giriş ve sql connection

Form üzerine sol tarafta bulunan Toolbox yardımı ile (eğer kapalıysa açmak için View sekmesinden Toolbox'a tıklayın.) 2 adet buton sürükleyip bırakıyorum.

ado.net giriş ve sql connection

OPEN butonuma çift tıklayarak "Click" event'imi açıyorum.
Class seviyesinde bir SqlConnection tanımı yapmak istiyorum.
Fakat göründüğü gibi SqlConnection sınıfımızı kullanamıyoruz.

Sebebi ise System.Data.SqlClient namespace'inin windows uygulamamıza yüklü olarak gelmemesidir.
using System.Data.SqlClient ile projemizin namespace alanına ekledikten sonra SqlConnection sınıfını kullanabiliriz.

ado.net giriş ve sql connection

SqlConnection cnn;

Designer kısmında Form nesnemizin üzerine tıklayarak özelliklerinden (F4 ile açabilirsiniz.) event kısmına gelerek Load event'ini açıyorum.

ado.net giriş ve sql connection

SqlConnection örneğimi Form nesnemin Load event'inde alıyorum. Yapmak istediğimiz olay form açıldığında form içerisindeki tüm metodlardan ulaşabileceğim bir SqlConnection sınıfı tanımlamak.

ado.net giriş ve sql connection

C# ile veritabanı arasındaki bağlantıyı SqlConnection sınıfı ile sağlayacağız.
Fakat SqlConnection bizden bazı bilgiler istemektedir;
1-) Hangi sunucuya bağlanıyorum?
2-) Bu sunucu içerisindeki hangi veritabanına bağlanıyorum?
3-) Hangi güvenlik modelini kullanıyorum?
Bu 3 temel soruyu cevaplayarak SQL ile C# dilini konuşturmak için iletişimi başlatmış oluyoruz.

ado.net giriş ve sql connection

Not-1: SQL Server Management Studio Windows Authentication yaparken Server name yazan yer sizin local çalışma alanınızın adıdır. Her bilgisayarda farklı olabilir.
Not-2: SQL Server'ınız Default Instance kurulu ise Server=localhost veya Server=. ile bağlanabilirsiniz. Eğer Named Instance ise SQL Server'ı kurarken verdiğiniz ismi girmeniz gerekmektedir.

SqlConnectionString yeni başladığınızda unutulabilir bu çok normal fakat ezberlemenize gerek yoktur. bkz. http://www.connectionstrings.com/ lütfen inceleyin.

Open butonumuzun Click event'ine gelip SqlConnection sınıfından aldığımız instance ile connection durumunu kontrol eden işlemler gerçekleştireceğiz.

ado.net giriş ve sql connection

ConnectionState enum sabiti içerisinde 6 adet Connection durum tipi barındırır ve kullanmakta olduğumuz connection bilgisinin her durumunu kontrol edebilimemizi sağlar.

ado.net giriş ve sql connection

Close butonumun Click event'ine gelip SqlConnection sınıfından aldığımız instance ile connection durumunu kontrol eden işlemler gerçekleştireceğiz.

ado.net giriş ve sql connection

Çalıştırmak istediğimiz sql komutunu C# yardımı ile Sql serverınıza SqlCommand sınıfı ile aktarırsınız ve SqlCommand sınıfı sizden 2 adet bilgi ister.
1-) CommandText
2-) Connection

CommandText: Çalıştırmak istediğiniz SQL sorgusu (Örnek; SELECT * FROM Customers)
Connection: CommandText'in hangi Connection ile çalışacağı. Yani hangi SQL Serverdaki hangi veritabanında çalışması gerektiği.

Durumu iyice netleştirmek adına ufak bir örnekle ilerlemek istiyorum.
Taksiye (Taksi SqlCommand sınıfımız olsun) bindiniz (biz ise SQL Sorgusu olalım) ve Avrupa yakasından (Avrupa yakası C#) Anadolu yakasına (Anadolu yakası SQL Server) geçmek istiyorsunuz. 
2 köprü var (seçeceğimiz köprü bizim connection sınıfımız olsun) FSM köprüsünden geçip Anadolu yakasına gittiniz. İşte yapmak istediğimiz bağlantı tam olarak bu!

Artık biz sorgularımızı SQL tarafında çalıştırabiliriz. Bunun için 3 tane Execute metodu bulunmaktadır. Bunlar;
1-) ExecuteReader() : Eğer sorgunuz geriye tablo döndürüyorsa (SELECT * FROM Customers)
2-) ExecuteNonQuery() : Eğer sorgunuz INSERT, UPDATE, DELETE işlemleri içeriyorsa.
3-) ExecuteScalar() : Eğer sorgunuz geriye tek bir değer döndürüyorsa (SELECT COUNT(*) FROM Products)

Bir sonraki yazımızda Northwind veritabanı ile örneklerimize devam edeceğiz.

Görüşmek üzere.

Yiğit

Xamarin Developer, Consultant & Architect. Community Leader and Director of Xamarin Türkiye

1 Comment

You can post comments in this post.


  • Çok açıklayıcı ve faydalı bir paylaşım olmuş, teşekkürler.

    Ebru Özer 3 sene ago Reply


Post A Reply