Admin
Mesaj Sayısı : 215 Kayıt tarihi : 10/04/10 Yaş : 34 Nerden : Bilginler Forum'dan
| Konu: Delphi, MySQL ve Zeos Bileşenleri Perş. Nis. 29, 2010 8:11 am | |
| MySQL, Delphi ve Zeos Bileşenleri
Bir kaç yıl evveline kadar ağ uygulamalarında SQL-Server, ORACLE, Interbase başlıca olmak üzere bildik veri tabanlarını kullanırdım. Bugünse bir web tasarımı işinde tanışıp kaynaştığım MySQL benim için ister ağ, ister web isterse lokal uygulamalarda olsun kullandığım vazgeçilmez bir standart oldu. Belki tüm teferruatı ile MySQL'e hakim olmamı gerektiren bir zorunluluk olmadığından, yada MySQL buna fırsat vermeden benim tüm teferruatıma hakim olduğundan şimdi hangi projeye elimi atsam tek favorim MySQL.
Tabi benim gibi yazılımcıyım diye geçinip birden fazla dillede haşır neşir olmak durumundaysanız MySQL ile ilgili güncel bilgileride takip etmek zorundasınız.
Bu makalade MySQL veri tabanlarının Delphinin tüm sürümleri için nasıl kullanılabileceğini basitçe anlatacak ve bize delphi ortamında MySQL kullanımını kolaylaştıran Zeos bileşenlerinin bazılarından bahsedeceğim. MySQL ile uygulama geliştimek için Zeos bileşenleriyle sınırlı değilsiniz. Alternatifler bu makalenin dışında yer almaktadır.
Zeos MySQL Bileşenleri
Öncelikle [Linkleri görebilmek için üye olun veya giriş yapın.] veya [Linkleri görebilmek için üye olun veya giriş yapın.] adresinden ücretsiz edinebileceğiniz Zeos bileşenlerini indirmenizi ve her daim elinizin altında bulundurmanızı öneririm.
İnternetten indirdiğimiz ve bir klasör altında topladığımız bileşenleri delphi ortamına yüklemek için sırasıyla aşağıdaki işlemleri yapıyoruz.
- Bileşenlerle birlikte gelen ve lib klasörü altında bulanan DLL dosyalarını windows sistem klasörü altına kopyalın.Bütün DLL dosyaları olmasa bile en azından kullandığınız MySQL sürümüne bağlı olanları kopyalamalısnız. Örneğin benim sistemimde hem MySQL 4.1.10a-nt hemde MySQL 5.0 sürümü olduğundan libmysql41.DLL dosyası system32 klasörümde kopyalanmış durumda.
- Kullandığınız delphi versiyonuna uygun klasör altına yerleştirilmiş package dosyalarını bulun.
- Delphi bileşen yükleme diyalog penceresine gelerek veya ZeosDbo.bpg dosyasını çift tıklayarak aşağıdaki dosyaları yazıldığı sırada derleyin.
- ZCore.bpl
- ZParseSql.bpl
- ZPlain.bpl
- ZDbc.bpl
</LI>
- Derleme işlemi sonunda herhangi bir hata almanız durumuda delphi Source Search seçeneklerini ayarlayıp tekrar deneyin. Normalde hiç bir hata iletisiyle karşılaşmamanız gerekir. Bileşen yükleme ekranında Install seçeneğiyle derlenmiş bileşenleri VCL'ye kaydettirin.
- Doğru yükleme işlemi sonunda VCL bileşen paletinize Zeos Access sekmesi oluşturulmuş ve ilgili bileşenler bu sekmeye yerleştirilmiş olarak görünmelidir.
MySQL Veri Tabanıyla Basit Bir Örnek Uygulama Tasarımı
Öncelikle pratik kazanmak amacıyla uygulamızda kullanmak üzere Ornek isimli veri tabanı ve kodlar isimli tek bir tablo tasarlayalım. kodlar tablosunun yapısı aşağıdaki gibi olsun. Kodlar : CREATE TABLE kodlar ( id bigint(20) unsigned NOT NULL auto_increment, kod blob, tarih date default NULL, PRIMARY KEY (id), UNIQUE KEY id (id), KEY id_2 (id) ) ENGINE=MyISAM DEFAULT CHARSET=latin5; Delphide yeni bir proje başlatalım. Proje ana formu üzerine aşağıdaki Zeos bileşenlerini koyarak kullanacağımız bileşenleri projemize dahil edelim.
- TZConnection bileşeni
- TZQuery bileşeni
- TDataSource
- TDBGrid
MySQL Ornek veri tabanına bağlantı için kullanacağımız TZConnection nesnesinin aşağıdaki özelliklerini anlatıldığı biçimde Object Inspector üzerinde değiştirelim.
AutoCommit : True Catalog : Ornek Connected : False DataBase : Ornek HostName : localhost LoginPrompt : false Password : MySql root kullancısının şifresi Port : 3306 Protocol : mysql-4.1 - 4.1 ve üstü Mysql versiyonları için User : root ReadOnly : false
TZConnection nesnesi için bazı özellikleri irdeleyelim.
AutoCommit : Veriler üzerinde yapılan ekleme ve düzeltme işlemlerinin veri tabanına otomatik post edilip edilmeyeceği
Catalog : Kullanılacak veri tabanı katalog ismi Connected : Bağlantı kur - Bağlantıyı kes DataBase : Veri tabanı ismi HostName : Veri tabanı servisinin çalıştığı bilgisayar.(IP adresi) LoginPrompt : Oturum açma işleminde kullanıcıdan şifre girmesi istenecekmi Password : Oturum açma işleminde kullanılacak şifre Port : MySQL srvisinin haberleşme port adresi. Varsayılan 3306'dır. Protocol : Connection nesnesinin kullanacağı veri tabanı prokolünün adı User : Oturum açmak için kullanıcı adı Readonly : Veri tabanı salt okunur moddamı çalışacak
Bir sorgu kümesi elde etmek için kullanacağımız TZQuery bieleşenin özelliklerini Object Inspector üzerinde aşağıdaki gibi ayarlalım.
Connection : ZConnection1 ReadOnly : False SQL : Select * from kodlar
Yukarıda anlatılan özellikleri ayarlamakla Veri tabanımızı ve kodlar adlı tablomuzu kullanmak için ayarlamış olduk. Forma yerleştirdiğiniz DataSource bileşenin DataSet özelliğine ZQuery1 değerini verip, Dbgrid nesnesinin DataSource özelliğinede DataSource1 olarak ayarladığınızda veri tablo üzerinde yerel ve diğer tablolarla yaptığımız her tür işlemi yapabiliriz. TZQuery bileşenin active özelliğini true yaptığınızda tasarım kipinde verilen dbgrid içinde listelendiğini görürsünüz.
Önemli hatırlatma : SQL Hizmet birimi veri tabanları uzak bilgisayar üzerinde konuşlu olacaklarından DbGrid benzeri bileşenlerle kayıtların listelenmesi tavsiye edilen bir tutum değildir.
ZQuery bileşenin diğer özellik ve yöntemleri standart TQuery bileşeni ile aynıdır. VCL paletinde Zeos Access sekmesine ZQuery'den başka birde TZReadOnlyQuery bileşeni yerleştirilir. Adından anlaşılacağı üzere salt okunur modda sorgulama işlemleri yapmak ve performansı artırmak için tasarlanmıştır. Bir başka Zeos bileşeni olan TZTable bileşenide TTable ile aynı işi yapmak üzere tasarlanmıştır.
Makaleyi Çalışma anında bir TZReadOnlyQuery bileşeni oluşturup kullanan bir yöntemi yazarak bitirmek istiyorum. //* ID.si verilen kaydın Kategori ve UstID'sini bul *// Procedure TForm_Banka_Verisi_Ekle.GetKategoriIsmi(Const ID : Integer;Out UstID:Integer;Out KategoriIsmi[Resimleri görebilmek için üye olun veya giriş yapın.]tring); Var Q : TZReadOnlyQuery; begin try Q := TZReadOnlyQuery.Create(Self); Q.Connection := dm.ZConnection1; Q.Sql.Add('Select id,ust_id,kategori from kategoriler where id ='+#39+IntToStr(ID)+#39); Q.Open; if Not Q.Eof then begin UstID := Q.Fields[1].AsInteger; KategoriIsmi := Q.Fields[2].AsString; end; finally Q.Close; Q.Free; end; end;//* GetKategoriIsmi *// *** ALINTIDIR *** | |
|