RunTime Interbase Veritabanı ve table v.s. oluşturma

Yazdığınız makaleleri ve üyelerimizin işine yarayacağını düşündüğünüz kodlarınızı gönderebilirsiniz. Bu foruma soru sormayın!
Cevapla
sair
Kıdemli Üye
Mesajlar: 288
Kayıt: 16 Haz 2003 04:41
Konum: Kastamonu
İletişim:

RunTime Interbase Veritabanı ve table v.s. oluşturma

Mesaj gönderen sair »

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:


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;

İş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.......


Not:Kodlarımızı code tagı içine alırsak daha okunaklı olur.
aslangeri
Geçip gideriz bizde ağızsız,dilsiz ve sorgusuz
İstanbul gibi düşeriz iki kıtaya birden...
En aşağılık düş, en büyük sevdadan belki
Erkek ölümler; bir uzun iç çekişle büyür göğsümüz
palandoken
Üye
Mesajlar: 151
Kayıt: 16 Eki 2006 10:43
Konum: ERZURUM

hata verdi

Mesaj gönderen palandoken »

unavailable database diye bir hata veriyor.
akıllanma , aklını başına toplama , toparlanma , kendisini derleme bu dünyaya ait bir vazife.
ahirette nasıl olsa aklın başına gelecek.
Cevapla