| sair | 25.06.2003 - 17:37:40 |
| Veritabanı olarak interbase kullanan arkadaşların çok işine yarayacağını
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 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ı ir edit bileşeninden almak istiyorsanız: rocedure 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....... | |