Her ne kadar daha önce ADO.NET kitabımın önsözünü sizlerle paylaşmış olsam bile şimdiye kadar bu kitap hakkında fazla konuşmadım. Birkaç yönüyle rakipsiz olan bu kitaba dikkatinizi çekmek istiyorum. İlk söylemek istediğim şudur: Zaman zaman forumlardaki soruları cevaplamaya çalışıyorum. Şimdiye kadar C# ve Visual Basic ile program yazanların forumlardaki ADO.NET konulu hangi sorusuna cevap verdiysem her seferinde ADO.NET kitabımdan Copy-Paste yaptım. Çünkü bu kitapta ADO.NET konusunda yolun başında olanların karşılaşmaları muhtemel bütün sorulara cevap vermeye çalıştım. Örneğin bana ADO.NET’le ilgili olarak gerek mail olarak gerekse MSN’de sorulan her 3 sorudan birisinde mutlaka SQL Server veritabanı kullanan uygulama için kurma programının nasıl hazırlanacağı soruluyor.

Önce şu ADO.NET nedir sorusuna cevap verelim. Visual Basic 3.0’te veritabanı işlemleri yapılırken kullanılan teknolojinin adı DAO yani Database Access Object’i. DAO, Microsoft tarafından geliştirilen JET adlı veritabanı motorunu ve Windows’la gelen ODBC sürücülerini kullanıyordu. Microsoft firması bir süre sonra Visual Basic programcıları ADO’yu yani ActiveX Data Objects’i geliştirdi. 2002 yılında piyasaya verilen ilk .NET Framework sürümüyle birlikte ise ADO.NET programcıların istifadesine sunuldu. .NET Framework’le gelip veritabanı işlemleri yapılırken yararlanılan sınıfların hepsine birden ADO.NET adı verilmektedir. Başka bir deyişle bu kitapta ağırlıklı olarak veritabanı işlemleriyle ilgili .NET sınıflarından söz edilmektedir.
Bu kitabı kaleme alırken şu okur grubunu hedefledim:Daha önce C# hakkında az çok bilgi edinmiş olmasına rağmen C# uygulamalarında veritabanı işlemlerini yapmakta zorlananlar. Bu hedef okur grubu içinde daha önce SQL Server’la hiç ilgilenmemişlerin olabileceğini düşünerek SQL Server hakkında özet bilgi vermeyi denedim. Yani daha önce SQL Server’la hiç çalışmamış hiç uğraşmamış olanlar bile bu kitabı okuduklarında rahatlıkla SQL Server’ı kurup veritabanı hazırlayıp C# uygulaması dahilinde istedikleri veritabanı işlemlerini yapabilir duruma gelirler. Bu arada Access veritabanlarının güvenliğiyle ilgili olarak bu kitapta yazılanların bu kitabın yayınlandığı günlerde başka kaynaklarda bulunma ihtimali çok düşüktü. Aradan 1 yıldan fazla zaman geçince yeni çıkan kitap veya yayınlanan makalelerde Access veritabanlarının güvenlikle ilgili özelliklerinden söz edilmiş olabilir. Bu kitabı hepsiburada.com'dan talep edebilirsiniz.
Şimdi size ADO.NET kitabımdan alınma 2 sayfa vereceğim. Bu sayede bu kitapta konuların nasıl anlatıldığı konusunda az da olsa fikir sahibi olacaksınız.
“Bildiğiniz gibi formun üzerine yerleştirilen nesneler ile DataTable nesnesinin alanları arasında bağlantı kurulurken ve satırların arasında dolaşılırken Binding ve CurrencyManager sınıflarından yararlanılmaktadır. ADO.NET’in bu işlemleri daha kolay yapmanıza imkan sağlayan BindingSource sınıfı bulunmaktadır. Bu sınıfın nasıl kullanıldığını adım adım anlatmak için veritabanından veri çekmek yerine bir dizi değişken tanımlayıp bilgi aktardım.
string[] dizi;
private void Form1_Load(object sender, EventArgs e)
{
dizi = new string[5];
dizi[0] = "Adana";
dizi[1] = "Adıyaman";
dizi[2] = "Afyon";
dizi[3] = "Ağrı";
dizi[4] = "Amasya";
}
Bu şekilde dizi değişken tanımlayıp bilgi aktardıktan sonra Toolbox’tan yararlanıp forma bir BindingSource nesnesi yerleştirdim. Proje çalıştırıldığında dizi değişkenin ilk elemanın içeriği TextBox’ta görüntülenecek.

Kısaca belirtmek gerekirse BindingSource sınıfına CurrencyManager sınıfının ek özellikler kazandırılmış hali denilebilir. Projenin formunu bu şekilde düzenledikten sonra formun Load olayını temsil eden metoda bir satır ekleyerek BindingSource nesnesinin DataSource özelliğine tanımlayıp bilgi aktardığım dizi değişkenin adını aktardım.
private void Form1_Load(object sender, EventArgs e)
{
dizi = new string[5];
dizi[0] = "Adana";
dizi[1] = "Adıyaman";
dizi[2] = "Afyon";
dizi[3] = "Ağrı";
bindingSource1.DataSource =dizi;
textBox1.DataBindings.Add("Text", bindingSource1, "");
}
Toolbox’tan yararlanarak forma yerleştirdiğim BindingSource nesnesinin DataSource özelliğine dizi değişkenin adını aktardığım için BindingSource nesnesi dizi değişkenin içeriğine sahip olur. Şimdi bu BindingSource nesnesinden okuma yapacağım. BindingSource nesnesinin aktif satırı elde edilirken Current özelliğinden yararlanılmaktadır. Current özelliği Object tipinde bilgi içerdiği için object tipinde bir değişken tanımlayıp Current özelliğini bu değişkene aktardım.
string[] dizi;
private void Form1_Load(object sender, EventArgs e)
{
dizi = new string[5];
dizi[0] = "Adana";
dizi[1] = "Adıyaman";
dizi[2] = "Afyon";
dizi[3] = "Ağrı";
dizi[4] = "Amasya";
bindingSource1.DataSource = dizi;
object nesne = bindingSource1.Current;
textBox1.Text = nesne.ToString();
}
Hiç şüpheniz olmasın bazı arkadaşlar hemen itiraz edip bu metnin ne özelliği var diye soracaklardır. Bu metnin tek özelliği var: Bu metni ve kitaptaki devamını okuyan herkes 15 dakikada BindingSource sınıfı hakkında net bilgiye sahip olur. Yoksa forma TextBox yerleştirip mevcut DataTable’ın bir alanı ile bu TextBox arasında bağlantı kurmayı görsel olarak yapmak zor değildir. Ne ki BindingSource sınıfı hakkında bilgi sahibi olmayanlar geri planda nelerin olduğunu bilmeden ezbere işlemler yaparlar.