Ado.Net Nedir ve Nasıl Kullanılır
Yazılım meraklılarına yeni bir kategoriden selamlar :)
Kategoriden diyorum çünkü blogumdaki yazılımla ilgili makaleler ilerledikçe artık orta seviye makaleler paylaşmaya karar verdim ve bu yüzden C# programlama diline özel Ado.Net alt kategorisini oluşturdum.
Bu kategorideki ilk makalemizde Ado.Net nedir ve ne işe yarar öğrenelim...
Ado.Net Nedir?
Net Framework 2.0 ile birlikte gelen ve an itibariyle 3.5 sürümüne ulaşan Ado.Net'in açılımı ActiveX Data Objects olup Türkçe'ye uyarladığımızda "ActiveX Veri Nesneleri" sonucuna ulaşıyoruz.
Bir Microsoft yazılım ürünü olan Ado.Net ile veritabanı operasyonları gerçekleştirilmektedir ve hemen hemen gerçek bir veritabanı yönetim ortamı koşulları kadar esnek olan bu yapı sayesinde oldukça hızlı SQL sorguları çalıştırılabilmektedir.
Ado.Net'in bir Microsoft ürünü olması sebebiyle uyumlu olduğu veritabanı yönetim sistemi yalnızca MS-SQL (Microsoft SQL Server) ve Microsoft Access ile veri taşıyıcısı niteliğiyle sınırlıdır.
Elbette bunun dışında kalan diğer veritabanı sistemleri için harici kütüphane kullanarak C# ya da Visual Basic.Net programlama dilleri ile SQL sorguları çalıştırabilirsiniz ancak Ado.Net temel olarak MS-SQL için tasarlanmıştır.
Teknik kısımlara girmeden önce Ado.Net'in yapısını inceleyelim:
Yukarıdaki görselde olduğu gibi Ado.Net ile uygulamalar ve veritabanları arasında köprüler kurarak verilerimizi saklayabilir,yeniden okuyabilir,silebilir hatta temel ya da geniş kapsamlı geliştireceğimiz algoritmalar ile analiz ederek karmaşık istatistiki sonuçlara ulaşabiliriz.
Uygulama sözcüğünden kastımız yalnızca en çok tanıdığımız Windows Form'lardan öte; ASP.Net, MVC gibi web uygulamalarından tutun Azure ile bulut (cloud) uygulamalarına, WCF,SOA ve XML ile web servislerine kadar birçok alanda Ado.Net'i kullanmak mümkün haldedir.
.Net Framework mimarisinin alt öğesi olduğu için son derece her platformda rahatlıkla kullanılabilmektedir,bu sayesede yalnızca C# ya da VB.Net bilerek her platformda kullanarak güzel projelere imza atılabilir.
Peki, Ado.Net Nasıl Kullanılır?
Ado.Net'in nasıl kullanılacağını kabaca şu şekilde anlatabilirim; kendi kişisel bilgisayarınızda ya da uzak bir sunucuda (web server,hosting gibi) Microsoft SQL Server yüklü olduğunu varsayalım.Visual Studio içerisinde oluşturduğunuz projenizin using sözcüğüyle anılan kütüphaneler kısmına System.Data.SqlClient yolunu yazarsınız.
Ardından herhangi bir metot içerisinde SqlCommand,SqlConnection ve gerekirse DataSet/DataTable nesnelerini
uygun bir şekilde oluşturarak SQL sorgunuzu kolaylıkla çalıştırabilirsiniz.
Ado.Net nesnelerinden hazır konu açılmışken bu nesneleri tanıyalım:
1-Sql Connection String (Sql Bağlantı Cümleciği)
Ado.Net ile veritabanı sorgularını çalıştırmak için kullanacağımız SQL sunucusunun bağlantı bilgileridir.Eğer daha önce Microsoft SQL Server'ın herhangi bir sürümünü kullandıysanız bu ekran size hiçte yabancı gelmeyecektir:
İşte Ado.Net buraya yazılan bilgileri baz alarak SQL sunucusuyla bağlantı kurar ve SQL komutlarını çalıştırır.
2-SqlConnection (SQL Bağlantı Aracı)
Sql bağlantı cümleciği aracılığıyla sorgularımızı sunucu tarafına ileten araçtır; burada dikkatinizi çekerim!
SqlConnectionString tamamen düz bir yazıdır ancak SqlConnection bu yazıyı kullanarak SQL sorgularını veritabanına
ileten aracın kendisidir.
3-SqlCommand (SQL Sorgusu)
SQL sorgularımızı bağlantı aracına taşıyan Ado.Net nesnesidir.
4-SQL Data Adapter (SQL Veri Adaptörü)
SqlConnection ile SqlCommand nesnelerini tek başına bünyesinde barındıran ve bünyesinde hem veri taşıyıcısını hem de
SQL sorgusunu barındıran araçtır.Bu iki bileşenin görevini tek başına yürütebildiği halde yinede SQL Connection String'e
ihtiyaç duyar.
5-Sql Data Reader (SQL Veri Okuyucusu)
SQL sorgumuz select ve türevi olup bir sonuç döndürüyorsa veritabanından okunan bilgiyi uygulamamıza taşıyarak kod
tarafında (C#,VB.Net) kullanamıza olanak tanır.Bu Ado.Net aracısı yalnızca veritabanından gelen sorguların sonuçlarını
satır satır okur.
6-Data Table (Veri Tablosu)
Tıpkı Microsoft Office Excel görevini gerçekleştiren bu yapı aslında Ado.Net mimarisinde olmayıp System.Data mimarisinin bir ürünüdür, ancak veritabanından select sorgusuyla gelen tablo yapısındaki verileri kolaylıkla barındırabildiği için Ado.Net projelerinde özel bir yeri vardır.
7-Data Set (Veri Seti)
Office programını kullanarak bir Excel belgesi oluşturduğunuzda alt menüde Sayfa1,Sayfa2.. gibi sekmeler dikkatinizi
çekmiştir ve her sayfa aynı dosya içinde farklı Excel tablosuna ifade etmektedir:
DataSet ise tıpkı bu mantıkla hareket ederek içerisinde birden çok DataTable barındırarak sanki birçok Excel sayfasını
farklı parçalara ayırmamızı sağlar.Bu sayede birden çok DataTable kullanmamız gerektiren projelerde uygun esneklik
sağlar.
8-SQL Connection State (SQL Bağlantı Konumu)
SQL Connection aracısının o andaki veritabanına olan bağlantı durum bilgisini verir.Yazılıma yeni başlayan birçok
yazılımcının en sık hata yaptığı noktalardan biridir çünkü bağlantı durumunun açık,kapalı ya da bozuk (broken) ihtimalleri
gözardı edilerek SQL sorgusunun sunucuya gönderilmeye çalışılmaktadır.
Eee, basit bir SQL sorgusunu çalıştırabilmek için bu kadar aracı tek seferde kullanacak mıyız? Tabi ki hayır!
Ado.Net Disconnected (bağlantısız,kesik) ve Connected (bağlı) olmak üzere iki farklı yapıya ayrılmaktadır..
A-Disconnected Mimari
Adı her ne kadar bağlantısız ya da kapalı gibi anlama karşılık gelse de aslında her türlü SQL sunucusuna bağlanan
bir ara mimaridir.
Bu mimarinin öğeleri; Sql Connection String, SqlConnection, SQL Data Adapter, DataTable, DataSet ve SQL Connection State'dir.
Connected mimariden farkı verileri çekme ve iletme biçimidir; veriler tek bir bağlantı üzerinde havuz gibi yığın halde
çekilerek SQL sunucusunu gereksiz meşgul etmeden çalıştırılır.İşte bu yüzden bağlantısız denilen bu yapıda yazılımcının
sorgu tipinin insert,update,delete mi yoksa select mi olduğunu başından belirlemesi istenir.
B-Connected Mimari
Disconnected mimariye göre daha yavaş ancak bilgileri satır satır okuyan bu yapının öğeleri; Sql Connection String, SqlConnection,SqlCommand, Sql Data Reader ve Connection State'dir.
Bağlı mimaride veriler sanki bir tablonun her satırını sırasıyla okunurmuşçasına çalışır ve bu yüzden kullanımında bir döngüye ihtiyaç duyulur, bu da genellikle while döngüsü ile gerçekleştirilir.
Bir yazılım projesinde Ado.Net ile çalışacağınız zaman hangi mimarinin kullanılacağı konusu iyi bir yazılım tecrübesi gerektirir çünkü veriler her iki mimaride rahatlıkla veritabanından getirilebilir ya da SQL sorguları çalıştırılabilir ancak yerine göre birinden birini tercih etmek daha sağlıklı sonuçlara ulaşmamızı sağlayacaktır.
Mimari kavramının dışında Ado.Net ile yapabileceklerimizi sıralayalım:
1- DDL Sorgular (Create,Alter,Drop)
2- DML Sorgular (Insert,Update,Delete,Select)
3- Stored Procedure'ler
4- View Nesneleri
5- SQL Function'lar (Fonksiyonlar)
6- TCL Sorgular (Commit,SavePoint,RollBack,Transaction)
7- Cursor
gibi gibi veritabanı tarafında kullanılabilecek sorguları çalıştırabiliyoruz.
Ayrıca bugün orta ve büyük çaplı projelerde kullanılan ORM (Object Relational Mapping - Nesne İlişkili Yapı) dediğimiz
Linq ve Entity Framework veritabanı araçlarının temeli Ado.Net'e dayanmakta ancak Ado.Net kadar esnek ve hızlı olamadıkları noktaları bulunmaktadır.O yüzden Ado.Net, Net Framework mimarisinin en sık kullanılan güçlü yapılarından biridir.
Bundan sonraki Ado.Net makalelerimizde BakkalDB örnek veritabanımızı kullanarak SQL sorgularını çalıştıracağız ve bol bol örnek uygulamalar gerçekleştireceğiz.
Bir sonraki makalede görüşmek üzere hoşçakalın esen kalın. :)
Kategoriden diyorum çünkü blogumdaki yazılımla ilgili makaleler ilerledikçe artık orta seviye makaleler paylaşmaya karar verdim ve bu yüzden C# programlama diline özel Ado.Net alt kategorisini oluşturdum.
Bu kategorideki ilk makalemizde Ado.Net nedir ve ne işe yarar öğrenelim...
Ado.Net Nedir?
Net Framework 2.0 ile birlikte gelen ve an itibariyle 3.5 sürümüne ulaşan Ado.Net'in açılımı ActiveX Data Objects olup Türkçe'ye uyarladığımızda "ActiveX Veri Nesneleri" sonucuna ulaşıyoruz.
Bir Microsoft yazılım ürünü olan Ado.Net ile veritabanı operasyonları gerçekleştirilmektedir ve hemen hemen gerçek bir veritabanı yönetim ortamı koşulları kadar esnek olan bu yapı sayesinde oldukça hızlı SQL sorguları çalıştırılabilmektedir.
Ado.Net'in bir Microsoft ürünü olması sebebiyle uyumlu olduğu veritabanı yönetim sistemi yalnızca MS-SQL (Microsoft SQL Server) ve Microsoft Access ile veri taşıyıcısı niteliğiyle sınırlıdır.
Elbette bunun dışında kalan diğer veritabanı sistemleri için harici kütüphane kullanarak C# ya da Visual Basic.Net programlama dilleri ile SQL sorguları çalıştırabilirsiniz ancak Ado.Net temel olarak MS-SQL için tasarlanmıştır.
Teknik kısımlara girmeden önce Ado.Net'in yapısını inceleyelim:
Yukarıdaki görselde olduğu gibi Ado.Net ile uygulamalar ve veritabanları arasında köprüler kurarak verilerimizi saklayabilir,yeniden okuyabilir,silebilir hatta temel ya da geniş kapsamlı geliştireceğimiz algoritmalar ile analiz ederek karmaşık istatistiki sonuçlara ulaşabiliriz.
Uygulama sözcüğünden kastımız yalnızca en çok tanıdığımız Windows Form'lardan öte; ASP.Net, MVC gibi web uygulamalarından tutun Azure ile bulut (cloud) uygulamalarına, WCF,SOA ve XML ile web servislerine kadar birçok alanda Ado.Net'i kullanmak mümkün haldedir.
.Net Framework mimarisinin alt öğesi olduğu için son derece her platformda rahatlıkla kullanılabilmektedir,bu sayesede yalnızca C# ya da VB.Net bilerek her platformda kullanarak güzel projelere imza atılabilir.
Peki, Ado.Net Nasıl Kullanılır?
Ado.Net'in nasıl kullanılacağını kabaca şu şekilde anlatabilirim; kendi kişisel bilgisayarınızda ya da uzak bir sunucuda (web server,hosting gibi) Microsoft SQL Server yüklü olduğunu varsayalım.Visual Studio içerisinde oluşturduğunuz projenizin using sözcüğüyle anılan kütüphaneler kısmına System.Data.SqlClient yolunu yazarsınız.
Ardından herhangi bir metot içerisinde SqlCommand,SqlConnection ve gerekirse DataSet/DataTable nesnelerini
uygun bir şekilde oluşturarak SQL sorgunuzu kolaylıkla çalıştırabilirsiniz.
Ado.Net nesnelerinden hazır konu açılmışken bu nesneleri tanıyalım:
1-Sql Connection String (Sql Bağlantı Cümleciği)
Ado.Net ile veritabanı sorgularını çalıştırmak için kullanacağımız SQL sunucusunun bağlantı bilgileridir.Eğer daha önce Microsoft SQL Server'ın herhangi bir sürümünü kullandıysanız bu ekran size hiçte yabancı gelmeyecektir:
İşte Ado.Net buraya yazılan bilgileri baz alarak SQL sunucusuyla bağlantı kurar ve SQL komutlarını çalıştırır.
2-SqlConnection (SQL Bağlantı Aracı)
Sql bağlantı cümleciği aracılığıyla sorgularımızı sunucu tarafına ileten araçtır; burada dikkatinizi çekerim!
SqlConnectionString tamamen düz bir yazıdır ancak SqlConnection bu yazıyı kullanarak SQL sorgularını veritabanına
ileten aracın kendisidir.
3-SqlCommand (SQL Sorgusu)
SQL sorgularımızı bağlantı aracına taşıyan Ado.Net nesnesidir.
4-SQL Data Adapter (SQL Veri Adaptörü)
SqlConnection ile SqlCommand nesnelerini tek başına bünyesinde barındıran ve bünyesinde hem veri taşıyıcısını hem de
SQL sorgusunu barındıran araçtır.Bu iki bileşenin görevini tek başına yürütebildiği halde yinede SQL Connection String'e
ihtiyaç duyar.
5-Sql Data Reader (SQL Veri Okuyucusu)
SQL sorgumuz select ve türevi olup bir sonuç döndürüyorsa veritabanından okunan bilgiyi uygulamamıza taşıyarak kod
tarafında (C#,VB.Net) kullanamıza olanak tanır.Bu Ado.Net aracısı yalnızca veritabanından gelen sorguların sonuçlarını
satır satır okur.
6-Data Table (Veri Tablosu)
Tıpkı Microsoft Office Excel görevini gerçekleştiren bu yapı aslında Ado.Net mimarisinde olmayıp System.Data mimarisinin bir ürünüdür, ancak veritabanından select sorgusuyla gelen tablo yapısındaki verileri kolaylıkla barındırabildiği için Ado.Net projelerinde özel bir yeri vardır.
7-Data Set (Veri Seti)
Office programını kullanarak bir Excel belgesi oluşturduğunuzda alt menüde Sayfa1,Sayfa2.. gibi sekmeler dikkatinizi
çekmiştir ve her sayfa aynı dosya içinde farklı Excel tablosuna ifade etmektedir:
DataSet ise tıpkı bu mantıkla hareket ederek içerisinde birden çok DataTable barındırarak sanki birçok Excel sayfasını
farklı parçalara ayırmamızı sağlar.Bu sayede birden çok DataTable kullanmamız gerektiren projelerde uygun esneklik
sağlar.
8-SQL Connection State (SQL Bağlantı Konumu)
SQL Connection aracısının o andaki veritabanına olan bağlantı durum bilgisini verir.Yazılıma yeni başlayan birçok
yazılımcının en sık hata yaptığı noktalardan biridir çünkü bağlantı durumunun açık,kapalı ya da bozuk (broken) ihtimalleri
gözardı edilerek SQL sorgusunun sunucuya gönderilmeye çalışılmaktadır.
Eee, basit bir SQL sorgusunu çalıştırabilmek için bu kadar aracı tek seferde kullanacak mıyız? Tabi ki hayır!
Ado.Net Disconnected (bağlantısız,kesik) ve Connected (bağlı) olmak üzere iki farklı yapıya ayrılmaktadır..
A-Disconnected Mimari
Adı her ne kadar bağlantısız ya da kapalı gibi anlama karşılık gelse de aslında her türlü SQL sunucusuna bağlanan
bir ara mimaridir.
Bu mimarinin öğeleri; Sql Connection String, SqlConnection, SQL Data Adapter, DataTable, DataSet ve SQL Connection State'dir.
Connected mimariden farkı verileri çekme ve iletme biçimidir; veriler tek bir bağlantı üzerinde havuz gibi yığın halde
çekilerek SQL sunucusunu gereksiz meşgul etmeden çalıştırılır.İşte bu yüzden bağlantısız denilen bu yapıda yazılımcının
sorgu tipinin insert,update,delete mi yoksa select mi olduğunu başından belirlemesi istenir.
B-Connected Mimari
Disconnected mimariye göre daha yavaş ancak bilgileri satır satır okuyan bu yapının öğeleri; Sql Connection String, SqlConnection,SqlCommand, Sql Data Reader ve Connection State'dir.
Bağlı mimaride veriler sanki bir tablonun her satırını sırasıyla okunurmuşçasına çalışır ve bu yüzden kullanımında bir döngüye ihtiyaç duyulur, bu da genellikle while döngüsü ile gerçekleştirilir.
Bir yazılım projesinde Ado.Net ile çalışacağınız zaman hangi mimarinin kullanılacağı konusu iyi bir yazılım tecrübesi gerektirir çünkü veriler her iki mimaride rahatlıkla veritabanından getirilebilir ya da SQL sorguları çalıştırılabilir ancak yerine göre birinden birini tercih etmek daha sağlıklı sonuçlara ulaşmamızı sağlayacaktır.
Mimari kavramının dışında Ado.Net ile yapabileceklerimizi sıralayalım:
1- DDL Sorgular (Create,Alter,Drop)
2- DML Sorgular (Insert,Update,Delete,Select)
3- Stored Procedure'ler
4- View Nesneleri
5- SQL Function'lar (Fonksiyonlar)
6- TCL Sorgular (Commit,SavePoint,RollBack,Transaction)
7- Cursor
gibi gibi veritabanı tarafında kullanılabilecek sorguları çalıştırabiliyoruz.
Ayrıca bugün orta ve büyük çaplı projelerde kullanılan ORM (Object Relational Mapping - Nesne İlişkili Yapı) dediğimiz
Linq ve Entity Framework veritabanı araçlarının temeli Ado.Net'e dayanmakta ancak Ado.Net kadar esnek ve hızlı olamadıkları noktaları bulunmaktadır.O yüzden Ado.Net, Net Framework mimarisinin en sık kullanılan güçlü yapılarından biridir.
Bundan sonraki Ado.Net makalelerimizde BakkalDB örnek veritabanımızı kullanarak SQL sorgularını çalıştıracağız ve bol bol örnek uygulamalar gerçekleştireceğiz.
Bir sonraki makalede görüşmek üzere hoşçakalın esen kalın. :)