Cevap: SQL VE TQUERY Dev Arşiv...
TQuery Metotları 1) CREATE
Örnek bir query nesnesi oluşturur. constructor Create(AOwner: TComponent);
Bu çağrı boş bir SQL ifade listesi oluşturur. SQL durum listesi için Onchange olay durumunu ayarlar. Data link (veri bağlantısını ) kurar. Requestlive özelliğini False yapar, ParamCheck özelliğini true yapar ve RowsAffected 'ı -1 yapar. 2) DESTROY
Query nesnesini yokeder. destructor Destroy;
Destroy çağrısını direk olarak çağırır. Bunu çağırmak yerine Free methodunu çağırın ve query'nin daha önceden serbest bırakılmadığından emin olun .Destroy serverdan bağlantıyı keser, SQL ifadesini, parametre listesini,veri bağlantısını, SQL ikili saklama bölgesini temizler ve kendisinin kalıtsal Destroy işlemini başlatır. 3) EXECSQL
Query için SQL ifadesini çalıştırtır. procedure ExecSQL;
Execsql' i INSERT,DELETE,UPDATE çağrılarını yapmak için kullanın. Aynı zamanda veri tanımlama durumlarını çalıştırmak için de kullanılır
NOT: Select ifadelerinde Execsql yerine Open 'ı kullanın.
Execsql eğer SQL hazırlanmadıysa SQL' in çalıştırılması için SQL ifadesi oluşturur. Hız artırmak için ExecSQL ilk defa çağrıldığında , bundan önce Prepare çağrısı kullanılmalıdır.
Örnek: Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('Delete from Country where Name = ''Argentina''');
Query1.ExecSQL; 4) PARAMBYNAME
Özel parametre ismine dayanan parametre bilgisine ulaşır. function ParamByName(const Value: string): TParam;
Value getirilecek bilginin parametre ismidir. ParamByName parametrenin değerini çalışma anında değiştirmek için kullanılır.
Örneğin aşağıdaki ifade Soyad adı verilen parametredeki aktif değeri bir edit kutusuna alır. Edit1.Text := Query1.ParamByName(' Soyad ').AsString;
Select ifadelerinde parametreler boş olamaz fakat Update ve Insert ifadelerinde boş olabilir.
Örnek2 var Buffer: Pointer;
{ Custno alanının hafızada tutabilmek için gerekli yer ayır}
GetMem(Buffer, Query1.ParamByName('CustNo').GetDataSize);
{ Datayı al }
Query1.ParamByName('CustNo').GetData(Buffer); 5) PREPARE
BDE' ye ve sunucuya yürütme öncesi optimizasyon için bir sorgu gönderir. procedure Prepare;
Prepare' ı BDE' ye sahip olmak için ve uzak veri tabanı sunucusunu sorgu için kaynaklarını yerleştirmesi ve ek optimizasyonlar gerçekleştirmesini sağlamak için kullanın. Prepare' ı uygulamadan önce çalıştırmak performansı artırır. Sorgu işi bitince Unprepare yapmak performans yönünden iyi olur.
NOT: Bir sorgunun yazısını çalışma anında değiştirirseniz sorgu otomatikman kapanır ve UnPrepare yapılır.
Örnek: if not Query1.Prepared then
begin
Query1.Close;
Query1.Prepare;
Query1.Open
end; 6) UNPREPARE
Daha önceden hazırlanan sorgu için ayrılan kaynakları boşaltır. procedure UnPrepare;
UnPrepare metodunu ,server ve client lardaki daha önceden hazırlanan sor-gular için ayrılan kaynakları serbest bırakmak amacıyla çağırın. Query met-nini çalışma anında değiştirirseniz query otomatik olarak kapanır ve Unprepare metodu çağrılır. TDBDataSet' den Gelen Metotlar 7) CHECKOPEN
Borland Database Engine (BDE) çağrısının sonucunu kontrol eder. function CheckOpen(Status: DBIResult): Boolean;
CheckOpen' ı bir BDE çağrısının tabloya erişmek isterken hata döndürüp döndürmediğini belirlemekte kullanın. Durum bir önceki çağrının dönüş sonucudur. Eğer erişim başarılıysa true döner. Eğer durum Paradox tablosuna erişmek için yeterli haklara sahip olunmadığını belirtiyorsa CheckOpen veri tabanı oturumunun GetPassword moduyla kullanıcıya şifreyi girmesini ister. Eğer doğru şifre girilirse sonuç true olur. Diğer durumlarda tablo erişim işleminin başarılamadığını belirten False görünür 8) CLOSEDATABASE
Veri tabanı oturumu ile ilişkilendirilen veri tabanı bağlantısını keser. procedure CloseDatabase(Database: TDatabase);
Bu metodu kalıcı veya geçici veri tabanı bağlantısını kesmede kullanılır. Bu çağrı veri tabanı öğe referans sayısını azaltır ve bu sayı 0 olursa ve veri tabanı öğesinin KeepConnection özelliği False ise bu çağrı hem geçici hem de kalıcı veri tabanı öğelerin ilişkisini keser.
NOT: Kalıcı veri tabanı için bu metot çağrıldığında bağlantı kesilmez bunun için veri tabanı öğesinin Close metodunu direk olarak çalıştırmak gerekir.
Geçici veri tabanı öğeleri veri tabanıyla ilişkilendirilen son tablo kapandığında otomatik olarak kapanır. Fakat bir uygulama bu işi daha erken yapmak isteyebilir. Eğer oturumun KeepConnections özelliği true ise (Varsayılan budur) geçici veri tabanı öğesiyle kurulan bağlantı bu çağrıyla kapanmaz. Veri tabanı nesnesini serbest bırakmak için bağlantılarını kapattıktan sonra oturumun DropConnections metodunu çağırın. 9) OPENDATABASE
Tablo içeren veri tabanını açar. function OpenDatabase: TDatabase;
OpenDatabase' i tablo içeren veri tabanına bağlanmak veya geçici veri tabanı öğesi oluşturup veri tabanına bağlamak için kullanınız. DatabaseName özelliği açılacak veri tabanını belirtir. OpenDatabase şu anki oturumu aktif yapar. DatabaseName özelliğinin var olan veri tabanı nesnesinin özelliklerine uyup uymadığına bakar. Uymuyorsa OpenDatabase geçici veri tabanı nesnesi oluşturur. Bunu da DatabaseName parametresini DatabaseName özelliğine atayarak yapar. Sonunda OpenDatabase veri tabanının Open metodunu veri tabanı sunucusuna bağlanmak için çağırır. Daha sonra oturumun veri tabanı referans sayısını bir artırır. TBDEDATASET' DEN GELEN METOTLAR 10) APPLYUPDATES
Cache bellekteki tablo bilgilerini veri tabanına yazar. procedure ApplyUpdates;
Bu metotla cache bellekteki bilgiler saklanmak amacıyla veri tabanına alınır ama değişiklikler veri tabanına işlenmez . Uygulama açık bir şekilde veri tabanı öğelerinin Commit metodunu ,eğer yazma başarılıysa ,onaylamak için çağırmalıdır. Veya veri tabanının Rollback metodunu eğer hata varsa, geri almak amacıyla kullanınız.
Veri tabanına başarılı bir yazma işleminden ve veri tabanının Commit metoduna yapılan başarılı bir çağrıdan sonra uygulama CommitUpdates metodunu ön belleklenmiş (cache) tampon belleğini temizlemek amacıyla çağırmalıdır.
NOT: Her bir tablonun ApplyUpdates metodunu çağırmaktansa veri tabanı öğesinin ApplyUpdates metodunu çalıştırmak daha doğru bir iş olacaktır.
Veri tabanının ApplyUpdates metodu değişiklikleri onaylama veya transferleri geri alma işlemlerini otomatik yaptığı gibi işlem tamamlanınca cache belleği değişken temizler. StartTransaction, ApplyUpdates, Commit, Rollback Örneği
Aşağıdaki prosedür bir tuş ile nasıl tablonun değişikliklerinin kaydedileceğini gösterir. procedure ApplyButtonClick(Sender: TObject);
begin
with CustomerQuery do
begin
Database1.StartTransaction;
try
ApplyUpdates; {database'e değişiklikleri yaz};
Database1.Commit; {hata yoksa onayla };
except
Database1.Rollback; {hata varsa değişiklikleri geri al};
raise; {hata durumu oluştur}
end;
CommitUpdates; {Başarı durumunda cache'i temizle}
end;
end; 11) BOOKMARKVALID
Belirtilmiş yer iminin geçerliliğini test eder. type TBookmark = Pointer; function BookmarkValid(Bookmark: TBookmark): Boolean; override;
Belirtilen yer iminin doğru bir değere atanıp atanmadığını kontrol etmek için kullanılır. Bookmark test edilecek yer iminin ismidir.
BookmarkValid yerimi doğruysa true , aksi halde False döndürür. 12) CANCEL
Eğer aktif kayıt kaydedilmediyse yapılan düzenlemeleri iptal eder. procedure Cancel;
Cancel kaydı önceki konumuna döndürür ve tablo durumunu dsBrowse' a getirir. Bu metot o alana illegal veri girildiğinde veya kullanıcı istediği zaman çağrılır. Örneğin TDBNavigator bileşeni bir Cancel düğmesi içerir.
Aşağıdaki örnek kullanıcıya değişiklikleri onaylamasını isteyen bir diyalog görüntüler .Kullanıcı Yes' e basarsa değişiklikler kaydedilecek yoksa iptal edilecek. if MessageDlg('Update Record?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then
Table1.Post
else
Table1.Cancel; 13) CANCELUPDATES
Cache' teki tablonun güncellenmiş haline ait verileri siler ve tabloyu eski konumuna döndürür. procedure CancelUpdates;
Tablo kapandıysa veya CachedUpdates özelliği False ayarlandıysa CancelUpdates otomatik olarak çağrılır.
NOT: Tek bir kaydı geri almak için RevertRecord 'u kullanın. 14) COMMITUPDATES
Cache'teki güncellenmiş tampon belleği temizler procedure CommitUpdates;
CommitUpdates 'i ApplyUpdates' i başarıyla uyguladıktan sonra ve veri tabanı öğelerinin Commit metodundan sonra tampon belleği temizlemek için kullanın. Güncellemeleri yaptıktan sonra cache belleği temizlemek demek cache'in boşalacağını şu durumlar hariç garanti eder: işlenemeyecek kayıtlar ve OnUpdate Record ve OnUpdateErrror durum olay kontrollerince atlanan kayıtlar .
Bir uygulama kayıtları cache' teyken bile değiştirmeye çalışabilir .
CommitUpdates' ten sonra yapılan kayıt düzenlemeleri cached update bufferını tekrar kullanılabilir hale getirir ve yapılan değişikliklerin veri tabanına kaydedilmesi için bir alt çağrıya ihtiyaç duyar. 15) COMPAREBOOKMARKS
İki bookmark arasındaki ilişkiyi belirler. Type TBookmark = Pointer; function CompareBookmarks(Bookmark1, Bookmark2: TBookmark): Integer;
İki bookmark'ın aynı olup olmadığını belirlemek için kullanın. Eğer bookmarklar farklı ise 1 döndürür, aynıysa veya ikisi de boş ise 0 döndürür. 16) CONSTRAINTCALLBACK
ConstraintCallBack tablonun BDE sabit katmanıyla ilişki kurmasına izin veren bir geri çağrım fonksiyonudur. function ConstraintCallBack(Re Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir. DsInfoReq; var ADataSources: DataSources): DBIResult; stdcall;
Bazı BDE fonksiyonları tabloda veya kendi alanındaki sabitler hakkında bilgi sağlanması için bir ger çağrıma ihtiyaç duyarlar. ConstraintCallBack' in adresini bu fonksiyonlara direk API çağrısı yaparken parametre olarak kullanın. 17) DISABLECONSTRAINTS
Tablodaki sunucu sabitlerinin uygulamalarını pasif yapar. procedure DisableConstraints;
Sunucu sabit uygulamalarının geçici kaynakta yer işgal etmesini engellemek için kullanırız. Uygulama tablo içinde ilerlerken sabitleri geçici olarak pasif yaparak performansı artırır.
NOT: DisableConstraints' i çağırmak referans sayısını artırır. Referans sa-yısı 0 dan fazla olduğu sürece tablo için sabitler pasif yapılır. Sabitleri yanlışlıkla pasif yapmamak için çağrılarınızı gruplandırın. 18) ENABLECONSTRAINTS
Tablo girişleri için sunucu sabit uygulamalarını aktif eder. procedure EnableConstraints;
Bu çağrıyı daha önceden DisableConstraints ile pasif edilen uygulama sunucu sabitlerini aktif etmek için kullanın.
NOT: Bu çağrıyı kullanmak referans sayısını azaltır. Bu referans sayısı 0 ise tablo için sabitler aktif olur. Sabitleri yanlışlıkla pasifleştirmemek için bunu kullanın. |