Sql script query
Sql script query
İyi çalışmalar
Sql script nasıl çalıştıra bilirim. Yani birden fazla satırdan oluşan sql komutlarını çalıştırmak istiyorum.
Bunu yeni bir bileşen kullanmadan nasıl yaparım.
Sql script nasıl çalıştıra bilirim. Yani birden fazla satırdan oluşan sql komutlarını çalıştırmak istiyorum.
Bunu yeni bir bileşen kullanmadan nasıl yaparım.
Selamlar,
Bildiğim kadarı ile bahsedeyim, IB/FB kullanıyorsanız bu tür olaylar için SET TERM komutu ile scriptteki SQL komutlarını ayırabiliyorsunuz.
Bu şekilde extra bir bileşene ihtiyaç duymadan Delphi üzerindeki TQuery nesnesi ile yapabilirsiniz.
Microsoft SQL Server için bir şey yapmanıza gerek yok kendi ayrıştırabiliyor. (İçeride bir yorumlayıcısı var ve komut bitişlerini filan kendi algılayabiliyor) Bu sebeple herhangi bir ayıraç kullanmanıza gerek kalmıyor.
Kolay Gelsin.
Bildiğim kadarı ile bahsedeyim, IB/FB kullanıyorsanız bu tür olaylar için SET TERM komutu ile scriptteki SQL komutlarını ayırabiliyorsunuz.
Bu şekilde extra bir bileşene ihtiyaç duymadan Delphi üzerindeki TQuery nesnesi ile yapabilirsiniz.
Microsoft SQL Server için bir şey yapmanıza gerek yok kendi ayrıştırabiliyor. (İçeride bir yorumlayıcısı var ve komut bitişlerini filan kendi algılayabiliyor) Bu sebeple herhangi bir ayıraç kullanmanıza gerek kalmıyor.
Kolay Gelsin.
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Merhaba
Kuri_TLJ cevabınız için teşekkürler ama Çözemedim
. Aşağıda yazdığım kod "TERM" ifadesinin tanınmadığını belirterek hata veriyor. Kullanımda mı hata yaptım anlayamadım. Bu komutu nasıl kullanacağımı belirtebilirseniz beni memnun edersiniz. İyi çalışmalar.
Kuri_TLJ cevabınız için teşekkürler ama Çözemedim

Kod: Tümünü seç
SET TERM ^ ;
update RDB$FIELDS set RDB$FIELD_TYPE = 10 where RDB$FIELD_NAME = 'RDB$14'
SET TERM ;^
SET TERM ^ ;
ALTER TABLE MUHTASAR ADD CHKB10 SMALLINT DEFAULT 1
SET TERM ;^
Sorunu daha detaylı sorsaydım daha hızlı cevap alabilirdin. Yani FB/IB içinmi M$SQL içinmi vs gibi
IBX sürümünü güncelleştirmeni öneririm öncelikle şu an x.08 sürümü var (X delphi versiyonu). eski sürümlerde şu başa bela set term problemi çok vardı. Yeni sürümde bunu hallettiler. Yeni sürümleri borland'ın codecentral 'ından güncelleyebilirsin.
Set Term in amacı, ';' komut sonu olduğunu belirmek için kullanılıyor. Pascal/Delphi deki mantık. Ama bu procedure ve triger içinde problem yaratıyordu çünki StoredProcedure içinde bazı işlemler yapılması gerekiyor bu komutlarında sonuna ';' konulması gerekiyor ve buda derleme sırasında komut sonunu procedure sonu olarak algılanmasına sebep oluyordu. O yüzden bu set term komutunu koymuşlar. Bunun yaptığı iş ise geçici olarak sembolleri değiştirmek.
Yukarıdaki yazdırdığın satırlarda bende set term e gerek yok sadece sonlarına ';' koyman yeterli
Kolay gele
IBX sürümünü güncelleştirmeni öneririm öncelikle şu an x.08 sürümü var (X delphi versiyonu). eski sürümlerde şu başa bela set term problemi çok vardı. Yeni sürümde bunu hallettiler. Yeni sürümleri borland'ın codecentral 'ından güncelleyebilirsin.
Set Term in amacı, ';' komut sonu olduğunu belirmek için kullanılıyor. Pascal/Delphi deki mantık. Ama bu procedure ve triger içinde problem yaratıyordu çünki StoredProcedure içinde bazı işlemler yapılması gerekiyor bu komutlarında sonuna ';' konulması gerekiyor ve buda derleme sırasında komut sonunu procedure sonu olarak algılanmasına sebep oluyordu. O yüzden bu set term komutunu koymuşlar. Bunun yaptığı iş ise geçici olarak sembolleri değiştirmek.
Yukarıdaki yazdırdığın satırlarda bende set term e gerek yok sadece sonlarına ';' koyman yeterli
Kod: Tümünü seç
update RDB$FIELDS set RDB$FIELD_TYPE = 10 where RDB$FIELD_NAME = 'RDB$14' ;
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5
Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5
Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Merhaba arkadaşlar aynı dertten bende müzdaribim.
Firebird kullanıyorum ve mevcut database den bir metadata olurşturdum ibexpert ile .
ibexpert tin scrip executive ile aynı database yada değişik isimlerle oluşturabiliyorum sorun yok. Ama benim yapmak istediğim olay şu anki database
data2004.gdb olarak açıldı ben bunu delphi içerisinden data2005.gdb olarak açtırmak istiyorum tabiki içerisinde bulunan bütün table,triger, generator .vs .vs.
Amatörce birkaç deneme yaptım ibquery ile ama olmadı .
Database name missing şelinde hata aldım.....
Ben delphi 6 kulanıyorum ve yukarda bahsedilen ibx 7.08 galiba delphi 7 için delphi6 için nerden bulabilirim yada bu işlemi nasıl yapabilirim.
Yardımcı olacak arkadaşlarıma işimdide teşekkür ederim.
Saygılar ..
Firebird kullanıyorum ve mevcut database den bir metadata olurşturdum ibexpert ile .
ibexpert tin scrip executive ile aynı database yada değişik isimlerle oluşturabiliyorum sorun yok. Ama benim yapmak istediğim olay şu anki database
data2004.gdb olarak açıldı ben bunu delphi içerisinden data2005.gdb olarak açtırmak istiyorum tabiki içerisinde bulunan bütün table,triger, generator .vs .vs.
Amatörce birkaç deneme yaptım ibquery ile ama olmadı .
Database name missing şelinde hata aldım.....
Ben delphi 6 kulanıyorum ve yukarda bahsedilen ibx 7.08 galiba delphi 7 için delphi6 için nerden bulabilirim yada bu işlemi nasıl yapabilirim.
Yardımcı olacak arkadaşlarıma işimdide teşekkür ederim.
Saygılar ..
IBX update ini borland ın sitesinden codecentral dan yapabilirsin. Yanlış anlamadıysam sen db yide script ile create etmeye çalışıyorsun. Bunu script executer la yapamazsın. IBDatabase e path i ve dosyanın adını ver daha sonra CreateDatabase de, ozaman db yi create etmiş olursun, yanlız charset pagesize ları vermeyi unutma. Connect yerine CreateDatabase diyeceksin. Daha sonra bu db ye bağlanıp scriptlerini çalıştırabilirsin
kolay gele
kolay gele
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5
Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5
Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Sayın freeman söylediklerinizden anladığım kadarıyla
Kod: Tümünü seç
IBDATABASE1.Params.Add('user_name=SYSDBA');
IBDATABASE1.Params.Add('password=masterkey');
IBDATABASE1.Params.Add('lc_ctype=WIN1254');
IBDATABASE1.Params.add('sql_role_name=3');
IBDATABASE1.DatabaseName := 'd:\deneme.GDB';
IBDATABASE1.CreateDatabase;
şeklinde yaptım ama yine olmadı
Your user name and pasword are not defined. Mesajını alıyorum ...
Formun üzerinde sadece ibdatabase1 ve button var o kadar
:roll:
Kod: Tümünü seç
IBDATABASE1.Params.Add('user_name=SYSDBA');
IBDATABASE1.Params.Add('password=masterkey');
IBDATABASE1.Params.Add('lc_ctype=WIN1254');
//IBDATABASE1.Params.add('sql_role_name=3');
IBDATABASE1.DatabaseName := 'd:\deneme.GDB';
IBDATABASE1.CreateDatabase;
Kolay gele
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5
Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5
Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
sanırım eski kodu değiştirmişler
IBScript kullanarak önce db yi kendi ayarlarına göre create et, daha
sonra kullanacağın table yada Stored Procedure leri vs leri create.
Hepsini aynı script içinden halledebiliyorsun, ama tavsiyem parça parça yapman eğer hata ile karşılaşırsan müdahale etmen daha kolay olur, yoksa tüm script içinde hatayı bulman zor olabilir. IBExpert ile çıkartılan DDL i çalıştırabilirsin, deneme için ben böyle yaptım
Params.Text i direk gönderiyor sanırım buda create işlemi için parametreler uyuşmadığı için yani USER yerine user_name gittiği için olabilir. çok fazla derinlemesine inceleyemedim. Denemk için parametreye aşağıdaki script in db create kısmını yazıp denedim, (madem parametre direk gönderiliyor diye) ilk önceleri çalıştı ama daha sonra dekrar çalışmadı yani uydurma bir çözüm olucaktı.
aşağıdaki script i FB1.5 Delphi 7 IBX 7.08 TIBScript ile test ettim
Kolay gele

IBScript kullanarak önce db yi kendi ayarlarına göre create et, daha
sonra kullanacağın table yada Stored Procedure leri vs leri create.
Hepsini aynı script içinden halledebiliyorsun, ama tavsiyem parça parça yapman eğer hata ile karşılaşırsan müdahale etmen daha kolay olur, yoksa tüm script içinde hatayı bulman zor olabilir. IBExpert ile çıkartılan DDL i çalıştırabilirsin, deneme için ben böyle yaptım
Kod: Tümünü seç
procedure TIBDatabase.CreateDatabase;
var
tr_handle: TISC_TR_HANDLE;
begin
CheckInactive;
tr_handle := nil;
Call(
FGDSLibrary.isc_dsql_execute_immediate(StatusVector, @FHandle, @tr_handle, 0,
PChar('CREATE DATABASE ''' + FDBName + ''' ' + {do not localize}
Params.Text), SQLDialect, nil),
True);
end;
aşağıdaki script i FB1.5 Delphi 7 IBX 7.08 TIBScript ile test ettim
Kolay gele
Kod: Tümünü seç
SET SQL DIALECT 3;
SET NAMES WIN1254;
CREATE DATABASE 'd:\deneme.gdb'
USER 'SYSDBA' PASSWORD 'masterkey'
PAGE_SIZE 4096
DEFAULT CHARACTER SET WIN1254;
CREATE TABLE ALL_CONSTS (
SELF INTEGER NOT NULL,
ID INTEGER NOT NULL
);
/******************************************************************************/
/**** Primary Keys ****/
/******************************************************************************/
ALTER TABLE ALL_CONSTS ADD CONSTRAINT PK_ALL_CONSTS PRIMARY KEY (SELF);
* Fields descriptions */
DESCRIBE FIELD ID TABLE ALL_CONSTS
'1 Cins
2 Tür
3 Model
4 Atölye
5 Durum
6 Banko
';
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5
Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5
Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
IBX, Component paletindeki Interbase tabındaki bileşen setinin genel adı. Bende Delphi 7 olduğu için 6 da ne var yok bilemiyorum maalesef. Ama bunun update ini yaptıysan problem olmaması lazım.
Amin Cümlemizden...
Kolay gele
Amin Cümlemizden...
Kolay gele
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5
Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5
Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!