düşündüğüm için bu makaleyi yazmak istedim.
Bismillah
RunTime Interbase Veritabanı ve table oluşturma
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
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ı ir edit bileşeninden almak istiyorsanız:
Kod: Tümünü seç
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;
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.......
Not:Kodlarımızı code tagı içine alırsak daha okunaklı olur.
aslangeri