Firebird embedded db ve onun içinde tablo oluşturmak için kullandığım kodlarım şöyle:
Kod: Tümünü seç
with FDPhysFBDriverLink1 do begin
Release;
VendorLib:=App_path+'\fbembed.dll';
DriverID:='FB';
end;
with FDConnection1 do begin
Params.Clear;
Params.Add('DriverID=FB');
Params.Add('Database='+App_path+DBPath);
Params.Add('Protocol=Local');
Params.Add('User_Name=sysdba');
Params.Add('Password=masterkey');
Params.Add('CharacterSet=UTF8');
Params.Add('ExtendedMetadata=True');
Params.Add('CreateDatabase=Yes');
Connected:=True;
end; //db sorunsuz oluşturuluyor
//tabloları oluştur
With FDQuery1 do
begin
Active := False;
Connection := FDConnection1;
SQL.Clear;
SQL.Add( 'CREATE TABLE SETTINGS ( ' );
SQL.Add( 'ID BIGINT NOT NULL PRIMARY KEY' );
SQL.Add( ', CONFKEY VARCHAR(150) ' );
SQL.Add( ', CONFVALUEEN VARCHAR(1000) ' );
SQL.Add( ', CONFVALUETR VARCHAR(1000) ' );
SQL.Add( ', CONFVALUEES VARCHAR(1000) ' );
SQL.Add( ' );' );
ExecSQL;
SQL.Clear;
SQL.Add( 'CREATE SEQUENCE SETTINGS_ID_SEQ;');
ExecSQL;
SQL.Clear;
SQL.Add('ALTER SEQUENCE SETTINGS_ID_SEQ RESTART WITH 1;');
ExecSQL;
SQL.Clear;
SQL.Add('CREATE TRIGGER SETTINGS_ID_TRG FOR SETTINGS');
SQL.Add('ACTIVE BEFORE INSERT POSITION 0');
SQL.Add('AS BEGIN');
SQL.Add('IF ((new.ID IS NULL) OR (new.ID <= 0)) THEN');
SQL.Add('BEGIN');
SQL.Add('new.ID = GEN_ID(SETTINGS_ID_SEQ, 1);');
SQL.Add('END');
SQL.Add('END');
ExecSQL;
SQL.Clear;
SQL.text:=( 'INSERT INTO SETTINGS '+
'(CONFKEY,CONFVALUEEN,CONFVALUETR,CONFVALUEES) VALUES '+
'("ChannelName","Test Channel","Test Kanalı","Test Channel")' );
ExecSQL;
insert komutunda sorun çıkıyor Channelname unknown column diye. Sorun ne olabilir?