Çalışma Anında Veritabanı ve Tablo Oluşturma

ÇALIŞMA ANINDA VERİTABANI ve TABLO OLUŞTURMA

Veritabanı olarak interbase kullanan arkadaşların çok işine yarayacağını düşündüğüm için bu makaleyi yazmak istedim.

Bismillah

Formun üzerine bir IBDatabase, bir IBTransaction ve bir IBSQL Nesnesi koyun.
IBSQL nesnesi yerine IBQuery de olabilir. Ama aşağıda anlatacaklarım IBSQl nesnesi üzerine olacaktır.

IBDatabase Nesnesi üzerine gelin ve params bölümüne aşağıdaki satırları girin.

USER 'SYSDBA'
PASSWORD 'masterkey'
PAGE_SIZE 4096
DEFAULT CHARACTER SET WIN1254

Yukardaki satırlar dikkat ederseniz Database nesnesini herhangi bir database'e bağlarken verdiğimiz parametrelerden yazdıklarımızdan farklı.
Default Character set satırı tercihe bağlıdır. Database inizin Character setini Türkçe olarak tanımlamak istiyorsanız yukardaki gibi WIN1254 olarak ayarlamanız gerekmektedir.


Forma bir buton koyarak onclick olatına aşağıdaki satırları yazın:

 
Şayet veritabanı adını Bir edit bileşeninden almak istiyorsanız:

Procedure TOlustur.SpeedButton1Click(Sender: TObject);
var
Yol:String;
Begin
Yol:=GetCurrentDir+'\'+Edit1.Text+'.GDB'; //Veritabanı adı hazırlanıyor

//Database ayarlanıyor
IBDatabase1.DataBaseName:=Yol;;
IBDatabase1.SQLDialect:=3;
IBDatabase1.LoginPrompt:=False;

//Database Oluşturuluyor
IBDatabase1.CreateDatabase;

//Database oluşturuldu artık table,view,generator ve stored procedure oluşturmaya geçebiliriz.
//Parametreler yenileniyor Normal bağlantı parametrelerine dönülüyor.
IBDatabase1.Connected:=False;
IBDatabase1.Params.Values['User_Name']:='SYSDBA';
IBDatabase1.Params.Values['PassWord']:='masterkey';
IBDatabase1.Params.Values['lc_ctype']:='WIN1254';
//Database Connect ediliyor
IBDatabase1.Connected:=True;
//Transaction Active ediliyor..
IbTransaction1.Active:=True;

//Table,index, view,generator ve stored procedurelerden 1 er tane örnek vereceğim
//Table oluşturuluyor

Try
IBSQL1.Close;
IBSQL1.SQL.Clear;
IBSQL1.SQL.Add('CREATE TABLE "VASIF" ("KNO" DOUBLE PRECISION NOT NULL,');
IBSQL1.SQL.Add('"VASIFLAR" VARCHAR(50) CHARACTER SET WIN1254 COLLATE PXW_TURK,');
IBSQL1.SQL.Add('"YEVMIYE" DOUBLE PRECISION,');
IBSQL1.SQL.Add('"TRH" TIMESTAMP,');
IBSQL1.SQL.Add('PRIMARY KEY ("KNO"))');
IBSQL1.Prepare;
IBSQL1.ExecQuery; //IBQuery kullanıyorsanız ExecQuery yerine ExecSQL yazacaksınız..
Finally
IBSQL1.Close;
end;

//İndex oluşturuluyor
Try
IBSQL1.Close;
IBSQL1.SQL.Clear;
IBSQL1.SQL.Add('CREATE INDEX VASIFLARX ON BELGE ("VASIFLAR")');
IBSQL1.Prepare;
IBSQL1.ExecQuery; //IBQuery kullanıyorsanız ExecQuery yerine ExecSQL yazacaksınız..
Finally
IBSQL1.Close;
end;

//View oluşturuluyor
Try
IBSQL1.Close;
IBSQL1.SQL.Clear;
IBSQL1.SQL.Add('CREATE VIEW "TOPLA" ("KNO","YIL","AY","DN","ODESASGUN","ODESASMAT",');
IBSQL1.SQL.Add('"GELIRVRGMAT","GELIRVERGISI","PIRIM") AS ');
IBSQL1.SQL.Add('SELECT KIMLIK.KNO,BORDRO.YIL,BORDRO.AY,BORDRO.DN,BORDRO.ODESASGUN,');
IBSQL1.SQL.Add('BORDRO.ODESASMAT,BORDRO.GELIRVRGMAT,BORDRO.GELIRVERGISI,');
IBSQL1.SQL.Add('(BORDRO.SSKISVEREN+BORDRO.ISSIZKURUM+BORDRO.SSKISCI+BORDRO.ISSIZISCI) FROM BORDRO,KIMLIK');
IBSQL1.SQL.Add('WHERE KIMLIK.KNO=BORDRO.DETAYNO');
IBSQL1.Prepare;
IBSQL1.ExecQuery; //IBQuery kullanıyorsanız ExecQuery yerine ExecSQL yazacaksınız..
Finally
IBSQL1.Close;
end;

//Generator oluşturuluyor
Try
IBSQL1.Close;
IBSQL1.SQL.Clear;
IBSQL1.SQL.Add('CREATE GENERATOR "VASIF_GEN"');
IBSQL1.Prepare;
IBSQL1.ExecQuery; //IBQuery kullanıyorsanız ExecQuery yerine ExecSQL yazacaksınız..
Finally
IBSQL1.Close;
end;


//Stored Procedure oluşturuluyor autoinc field için
IBSQL1.Close;
IBSQL1.SQL.Clear;
IBSQL1.SQL.Add('CREATE PROCEDURE "PROC_VASIF"');
IBSQL1.SQL.Add('RETURNS');
IBSQL1.SQL.Add('(');
IBSQL1.SQL.Add(' "NUM" INTEGER');
IBSQL1.SQL.Add(')');
IBSQL1.SQL.Add('AS');
IBSQL1.SQL.Add('BEGIN');
IBSQL1.SQL.Add('NUM = GEN_ID(VASIF_GEN,1);');
IBSQL1.SQL.Add('END');
IBSQL1.Prepare;
IBSQL1.ExecQuery; //IBQuery kullanıyorsanız ExecQuery yerine ExecSQL yazacaksınız..
Finally
IBSQL1.Close;
end;

IBDatabase1.Connected:=False;

İşte bu kadar...

Yukardaki table view oluşturma gibi işlemlerde birer tane örnek verilmiştir. Bunları sırasıyla
procedureler içine alarak veritabanınızı runtime olarak oluşturabilirsiniz...

Kolay gelsin.......

bimeks borland component database delphi delphi.net delphi dersleri firebird help interbase makale oracle seminer software sybase veritabanı web