Veritabanı Ögelerine Giriş


Makale dizimizin bu bölümünde veritabanı öğelerine ve öğelerinin kullanımına giriş yapacağız.Bu makale veritabanı  öğelerinin kullanımı üzerine bir ön hazırlık niteliğinde olacaktır.Bundan sonraki makalelerimiz TTable öğesinden başlayıp Midas teorisine kadar geniş bir yelpazeyi bol örnekli ve öğelerin tüm özelliklerinin ayrıntılı açıklamaları ile devam edecektir.Bu bölüm daha önce hiç bir uygulamada veritabanı kullanmamış programcılara veritabanının  uygulamalarda nasıl kullanılacağı hakkında ön bilgi verecektir.

Daha önceki makalelerimizde veritabanı oluşturmak için gerekli olan tablooluşturmayı ve bunların arasındaki ilişkileri tanımlamayı öğrendiniz bundan sonra bu tabloların aliaslar yardımı ile nasıl uygulamalarda kullanılacağını öğreneceksiniz. Tablolara erişmek için Delphi bir dizi öğe kullanır bir uygulamada eğer uygulama içinde tablonuza yeni kayıt eklemek, tablonuzdan kayıt silmek yada kayıtlarınızı değiştirmek istiyorsanız en az üç adet öğeyi kombine kullanmanız gerekecek. Bunlardan biri TTable öğesidir.
ttable.gif (312 bytes)Table öğesi bir tabloya ulaşmak için kullanabileceğiniz en sorunsuz ve en kısa yoldur. Hiç bir kod yazmadan sadece Object Inspector yardımı ile bir tablo ile bağlantı kurabilirsiniz. Burada önemli olan tablonuzun bir alias altında tanımlı olmasıdır.Eğer tanımlı değilse bu tablonun içinde bulunduğu dizinin yolunu girerek de tabloya ulaşmanız mümkün olabilir.Fakat bu programınızın taşınabilirliğini azaltır.
tdbgrid.gif (358 bytes)Bu öğe çalışma anında görünmeyen bir öğedir. Bu öğe ile bağladığınız bir tabloyu elbette düzenlemek,tabloya kayıt eklemek yadatablodan kayıt silmek isteyeceksiniz. Ben bu bölümde TDBComponent'in bir üyesi olan TDBGrid'i kullanacağım. Çünkü bu öğe ile tablonuzda bulunan tüm kayıtları görebilir değiştirebilir,ekleyebilir yada silebilirsiniz. Bu öğe Delphi'nin Data Controls sekmesinin altındadır. Borland tabloların birden fazla öğe tarafından kullanılabilirliğini sağlamak için değişik bir metot geliştirmiştir. Bir TDataset kökenli veritabanı öğesi ile (TTable,TQuery vs.) bir TDBcomponent öğeleri arasında bir bağlantının kurulması için TDataSource öğesinin kullanılması gerekmektedir.
DataSource öğesi sadece ara istasyon olarak görev aln bir öğe pozisyonundadır ister yerel bir tablodan isterse uzak veritabanı birimlerinden yada TClientDataSet öğesinden gelen bir veriyi isteyen Veritabanı kontrollerine iletir. İstediğiniz kadar çok kontrol bağlayabilirsiniz.
Şimdi hep birlikte ilk veritabanı uygulamamızı yaratalım. Bunun için TTable,TDataSource,TDBGrid öğelerini kullanacağız. Ben bu uygulama örneği için DBDemos aliasının içinde olan bir tabloyu kullanmayı düşünüyüroum. Böylece sizde kendi bilgisayarınızda aynı uygulamayı gerçekleştirebilirsiniz.
dbapp01.gif (4043 bytes)yandaki şekildeki gibi bir form yaratın ve bu formun üzerine table,datasource ve dbgrid öğelerini yerleştirin. Formumuz çalıştığında table ve datasource öğeleri görünmez olacağı için bu öğeleri istediğiniz bir yere yerleştirebilirsiniz.
Table öğesini seçip object inspector'da özelliklerinin görüntülenmesini sağlayın.Table öğesinin değiştirilecek özellikleri aşağıdaki gibidir(öğenin özelliklerini değiştirirken lütfen sırayı takip edin):
Table Öğesinin Özellikleri
Özellik
Değeri
Açıklama
DatabaseName
DBDEMOS
Kullanacağımız veritabanının alias'ı.Bu özelliği kullanmadan da direk olarak tabloları çağırabiliriz fakat bu özellik taşınabilirliği büyük ölçüde arttırır.
TableName
customer.db
Kullanacağımız tablonun ismi. Açılan kutudan o veritabanında bulunan tüm tabloları görüntüleyebiliriz. biz Paradox tabloları üzerinde turduğumuzdan db uzantılı tabloları tercih edeceğiz.
Active
True
Bu özelliği TRUE yaptığımızda  tablomuz Table öğesi ile kullanıma hazır hale gelecektir.
Table öğesinin bu özelliklerini sırası ile ayarladıktan sonra Datasource öğesinin özelliklerini ayarlamamız gerekiyor.Datasource öğesini seçerek özelliklerinin görüntülenmesini sağlayın.Dataset özelliğini Table1 olarak atayın. Böylece herhangi bir DBComponent'i Table1 öğesine bağlama imkanına kavuşacağız.
DbGrid öğesini özelliklerinden Datasource özelliğini Datasource1 olarak ayarlayarak uygulamamızı tamamlıyoruz. Aşağıdaki şekilde bir görüntü oluşmazsa mutlaka bir şeyi eksik yapmışsınızdır demektir.
dbapp02.gif (6443 bytes)
uygulamayı çalıştırdığınızda bir kayıt eklemek isterseniz klavye tuşlarından yaralanabilirsiniz.Insert tuşu bir kayıt eklemenizi  F2 tuşu üzerinde bulunduğunuz kaydı değiştirebilmenizi sağlar.Ctrl+Delete tuşu üzerinde bulunduğunuz kaydı simenizi sağlar. Kayıtlar arasında dolaşmak istiyorsanız ok tuşlarını ve tab tuşunu kullanabilirsiniz.Eğer kayıtların içinde daha rahat dolaşmak istiyorsanız TDbNavigator öğesini ekleyebilir ve Datasource özelliğini Datasource1 yapabilirsiniz.
Dikkat ettiyseniz bu uygulamada bir satır kod bile yazmadık. Bu Delphi'nin bize sağladığı öğe geliştirme teorisinin bir armağanıdır.Fakat her veritabanı uygulaması bu kadar kolay hazırlanmayabilir özellikle birbiri ile bağlı tablolarda  bağlantılı tablodaki bir veriye göre anatablodan bir veri seçmemiz gerektiğinde bir kaç satır kod daha yazmamız gerekir. Bunun için TQuery öğesinin kullanılması gerekir.
TQuery öğesi ile tablolar birbiri ile birleştirilebilir iç içe sorgular yaratılabilir. TQuery öğesi TTable öğesinden daha yavaştır. Bunu çok kayıtlı bir veritabanında rahatlıkla görebilirsiniz.Fakat ağ üzerinde bir tablonun kayıtlarına ulaşılacaksa yada bir internet sunucusundan kayıtlar sorgulanacaksa TQuery öğesi Table öğesinden daha hızlı olabilir. Bu oluşumun sebebi  Table nenesinin tablodaki tüm kayıtlara erişmesi sonucu veri trafiğini çok arttırmasıdır.Query öğesi ise ağ üzerinde sorguyu Ulaşılan sunucunun veritabanı motoruna yollayıp istenilen kayıtları sorgulamasını ister.Dönen kayıt miktarı, eğer tüm kayıtların listelenmesi istenmemişse, Table öğesinin döndüreceği miktardan daha azdır.
Size Veritabanı uygulaması geliştirme aşamasında verebileceğim tek öğüt gerekli olmadıkça tüm kayıtları kullanıcıya göstermeyin. sadece tabloda ekleme silme ve değiştirme yapacakca tüm kayıtları görmesine gerek yok. Insanların doğası gereği belirli bir miktar bilgiyi bir anda kafalarında sorgulayabilirler. Bu miktardan fazlası kullanıcı için gereksizdir.
TQuery öğesi SQL dilini bilmenizi gerektirir. TQuery öğesi SQL anlatıdıktan sonra açıklanacağı için burada değinmeyeceğim.Table öğesi bittikten sonra DBComponent kontrollerinin kullanımına geçeceğim ardından SQL dilini altatan bir Makale dizisiyi yayınladıktan sonra Query öğesi ile Veritabanı uygulaması geliştirmek adlı makale dizisine geri döneceğim.

xxxxxx