07 Haziran 2005

Zengin yedek kulubesi - 2

Şimdi dbexpress ile ufak bir örnek yapacaz. Bu örnekteki amaç tek bir uygulama ile iki farklı veritabanına aynı yapı içerisinde kayıt eklemek, düzenlemek ve silmek... bunun için gerekli olan alet edevatımız şu şekilde : 1- Firebird 1.5 Kullanacağımız birinci veritabanı sunucusu 2- IBExpert Firebird yönetim aracı 3- MySql 4.1 Kullanacağımız ikinci veritabanı sunucusu 4- MySql Front MySql yönetim aracı 5- dbExpress driver for MySQL (http://crlab.com/dbx/download.html) Delphi 6 ile gelen mysql sürücüleri ile mysql 4.1 ile bi türlü bağlantı kuramadım. Bende bunu yükledim. Oluşturmamız gereken tablomuz oldukça basit
CREATE TABLE KURUMLAR (
    KURUMID   INTEGER,
    KURUMADI  VARCHAR(20)
);

Mysql için database adını tedarik olarak oluşturdum.
Çalışma anında programın görüntüsü
Programı yavaş yavaş inşaa ediyoruz.
Tasarım anında programın görünümü
1- SQLConnection1 : Veritabanı sunucusuna bağlanmamızı sağlayan bileşen. 2- SQLTable1 : Veritabanındaki tablolara bağlanacak bileşenimiz. 3- DataSetProvider1 : SqlTable1 bileşenimizde ki verileri ClientDataset üzerine taşımamıza yardım edecek olan bileşen. 4- ClientDataSet1 : Verileri grid üzerinde göstermek ve diğer işlemleri yapmak için gerekli olan bileşenimiz. 5- SQLMonitor1 : Arka planda neler oluyor ? Programı inşaa etmeye başlayalım. İlk önce Firebirde ve Mysql bağlanmak için gerekli olan bağlantıları oluşturalım.

Firebird bağlantısını gerçekleştiren kod
procedure TForm1.Button7Click(Sender: TObject);
begin
SQLConnection1.Close;
SQLConnection1.CloseDataSets;
ClientDataSet1.Close;
SQLConnection1.ConnectionName :=  'dbExFirebird';
SQLConnection1.DriverName     :=  'interbase';
SQLConnection1.GetDriverFunc  :=  'getSQLDriverINTERBASE';
SQLConnection1.LibraryName    :=  'dbexpint.dll';
SQLConnection1.VendorLib      :=  'GDS32.DLL';
SQLConnection1.Params.Clear;
SQLConnection1.Params.Add('DriverName=Interbase');
SQLConnection1.Params.Add('BlobSize=-1');
SQLConnection1.Params.Add('CommitRetain=False');
SQLConnection1.Params.Add('Database=F:\Developers\Delphi\Samples\'+
'Database\dbExpress\Ornek4\data.fdb');
SQLConnection1.Params.Add('ErrorResourceFile=');
SQLConnection1.Params.Add('LocaleCode=0000');
SQLConnection1.Params.Add('Password=masterkey');
SQLConnection1.Params.Add('RoleName=RoleName');
SQLConnection1.Params.Add('ServerCharSet=WIN1254');
SQLConnection1.Params.Add('SQLDialect=1');
SQLConnection1.Params.Add('Interbase TransIsolation=ReadCommited');
SQLConnection1.Params.Add('User_Name=sysdba');
SQLConnection1.Params.Add('WaitOnLocks=True');
SQLConnection1.Open;
ClientDataSet1.Open;
Caption := cntBaslik + ' - Veritabanı :' + cntFirebird;
StatusBar1.Panels[1].Text := cntFirebird;

end;

Bu da mysql bağlantısını yapan kodlarımız
procedure TForm1.Button8Click(Sender: TObject);
begin
SQLConnection1.Close;
SQLConnection1.CloseDataSets;
ClientDataSet1.Close;
SQLConnection1.ConnectionName :=  'dbExMySql';
SQLConnection1.DriverName     :=  'MySQL (Core Lab)';
SQLConnection1.GetDriverFunc  :=  'getSQLDriverMySQL';
SQLConnection1.LibraryName    :=  'dbexpmda.dll';
SQLConnection1.VendorLib      :=  'libmysql.dll';
SQLConnection1.Params.Clear;
SQLConnection1.Params.Add('DirverName=MySQL (Core Lab)');
SQLConnection1.Params.Add('BlobSize=-1');
SQLConnection1.Params.Add('HostName=localhost');
SQLConnection1.Params.Add('DataBase=tedarik');
SQLConnection1.Params.Add('User_Name=root');
SQLConnection1.Params.Add('Password=123');

SQLConnection1.Open;
ClientDataSet1.Open;
Caption := cntBaslik + ' - Veritabanı :' + cntMySql;
StatusBar1.Panels[1].Text := cntMySql;
end;

---> Program şu anda kayıt ekleme, silme, düzenleme işlemlerini gayet güzel yapıyor. Gerçi bağlantılar falan biraz hamal işi oldular ama ilk örnek için gayet başarılı sayılır bence :) Örnek projeyi buradan indirebilirsiniz.
Yorum Gönder