Yorumları: 305
Konuları: 49
Kayıt Tarihi: 26-12-2016
Rep Puanı: 545 Acemi
28-09-2018, Saat: 12:59
(Son Düzenleme: 28-09-2018, Saat: 13:03, Düzenleyen: Lord_Ares.)
Merhaba çok kullanıcılı program örneklerini incelerken Query ve Table kullanımlarının ikisininde benzer becerileri olduğunu ama genelde query kullanıldığını gördüm. Gördüğüm örneklere bakarak , acaba bizlermi yanlış kullanıyoruz diye düşünmeden edemedim. Query ile kayıt ekleme, silme sorgulama yapabiliyorsak..
1) Table nezaman kullanacağız ? Veya tam tersi ?
2) Üçüncü bir şık ise Acaba kayıt ekleme silmeleri table ile yapıp sadece sorgularda mı query kullanmalıyız doğru olan bu mu ?
Birde kayıt ekleme yöntemlerine ufak bir örnek verirmisiniz. Bazı örnekler insert ile yaptıktan sonra commit yapmış. bazısı yapmamış updatesql bileşeni kullanmış. Commit edecekmiyiz etmicekmiyiz
Bildiklerinizi paylaştığınız için şimdiden teşekkürler..
Yorumları: 483
Konuları: 80
Kayıt Tarihi: 28-12-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 2.019 Programcı
Benimde cevabını merakla beklediğim bir soru
kendi kullandığım tabloya kayıt ekleme kodunu paylaşıyorum.
Tüm bilgileri delphican dan öğrendim.
try // sevk dosyasına ana kayıtları için konuldu hata varsa uyar çık yoksa ana bilgileri işle
data_form.sevk_data_yaz('INSERT INTO SEVK (SEVK_TRH, SEVK_SAAT, SEVK_KARGO, SEVK_KARGO_TEL, '+
'SEVK_KARGO_CEP, SEVK_PLAKA, SEVK_ACK_1, SEVK_ACK_2, SEVK_ACK_3, SEVK_BAYI, '+
'SEVK_GIDEN_SAG, SEVK_GIDEN_SOL, SEVK_FIS_NO, SEVK_BELGE_NO) ' +
'VALUES ('+
QuotedStr(datetostr(Date_tarih.Date)) + ', '+
QuotedStr(timetostr(date_saat.time)) + ', '+
QuotedStr(cmb_kargo.Text) + ', ' + QuotedStr(cmb_kargo_tel.Text) + ', '+
QuotedStr(cmb_kargo_cep.Text) + ', ' + QuotedStr(edit_plaka.Text) + ', '+
QuotedStr(edit_aciklama_1.Text) + ', ' + QuotedStr(edit_aciklama_2.Text) + ', '+
QuotedStr(edit_aciklama_3.Text) + ', ' + QuotedStr(cmb_bayi.Text) + ', '+
QuotedStr(sag_kapi.Text) + ', ' + QuotedStr(sol_kapi.Text) + ', '+
QuotedStr(edit_fis_no.Text) + ', ' + QuotedStr(edt_belge_no.Text)
+ ')');
except
on E: Exception do
begin
mesaj1 := 'Sevk işlemleri kaydedilemedi. Veritabanı bağlantısı başarısız: ' + E.Message;
Application.MessageBox(PWideChar(mesaj1), 'Hata', MB_OK + MB_ICONERROR);
exit; // hareketlere geçmeden çık
end;
end;
"…De ki: "Hiç bilenlerle bilmeyenler bir olur mu? Şüphesiz, temiz akıl sahipleri öğüt alıp-düşünürler" (Zümer Suresi, 9)
Yorumları: 4.224
Konuları: 379
Kayıt Tarihi: 07-07-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 16.975 Üstad
28-09-2018, Saat: 13:46
(Son Düzenleme: 28-09-2018, Saat: 13:48, Düzenleyen: TescilsizUzman.)
Merhaba,
Table genellikle sabit dataset'ler için kullanılıyor. Örneğin Üniversite, Fakülte, Bölüm vb.
Table daha çok LookUp, Locate gibi kayıt üzerinde gezinme işlemlerinde veya sabit listelerde kullanılıyor.
Query, isminden de anlaşılacağı üzere dinamik sorgular oluşturmak için kullanılıyor. Dataset sabit değildir, uygulamada kullanıcı davranışına göre dataset üzerindeki veri de değişir.
Aynı zamanda kayıt silme (delete), kayıt güncelleme (update), kayıt ekleme (insert) ve bir SQL scriptin hedef veri tabanı üzerinde çalıştırılması (Alter, Create vb.) gibi daha bir çok SQL işlemlerinde kullanılmaktadır.
Query kullanımında dikkat etmeniz gereken en önemli husus; parametrik SQL oluşturarak işlem yapmaktır.
Birçok SQL Injection işlemi parametrik olmayan SQL ifadelerine yerleşerek, ciddi zarar verebiliyorlar.
Dinamik bir veri trafiğinde, herhangi bir commit işlemine gerek kalmadan, Execute metodu ile geçerli işi commit etmiş olursunuz.
Eş zamansız çalışan sistemlerde ise kullanılan bileşen özelliklerine bağlı olarak commit işlemi ihtiyaç doğrultusunda belli periyotlarla gerçekleştirilir.
Yorumları: 305
Konuları: 49
Kayıt Tarihi: 26-12-2016
Rep Puanı: 545 Acemi
Teşekkürler üstadım nefis bir açıklama olmuş.
Yorumları: 395
Konuları: 24
Kayıt Tarihi: 02-01-2017
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 2.172 Programcı
Table ya da query olması önemli değil. Önemli olan veritabanından programa gereksiz veri trafiği oluşturuyor musunuz?
Table nesnesi daha az esnek olduğu için genelde tablonun tamamını programa çekme eğilimindedir ve bu pek istenmeyen bir durumdur. Query nesnesine de tüm kayıtları çekecek bir sql yazıp çalıştırdığınızda table nesnesinden bir farkı kalmaz.
Table'ın da avantajı insert, update , delete işlemlerinde kolaylık sağlaması. Query nesnesinde bu biraz zor olmaktadır.
Bazı bağlantı kütüphaneleri table ve query nesnelerinin bu iyi özelliklerini birleştirip dataset adında bir nesneye sahiptirler. Bu nesneler table gibi davranırlar ama arka planda query gibi hareket ederler. Gerekli olan SELECT , INSERT , UPDATE ve DELETE sql cümlelerini siz yazarsınız. Bu yazdıklarınıza göre işlemleri yaparlar. Ben genelde bu tür nesneler kullanıyorum.
Yorumları: 305
Konuları: 49
Kayıt Tarihi: 26-12-2016
Rep Puanı: 545 Acemi
Firebird için firedac kullandığımızda bahsetmiş olduğunuz dataset bileşeninden sanırım mahrum kalıyoruz. Bağlantı bileşenleri ve seçenekleri biraz fazla olunca ve ben gibi bu bileşenlere acemiyseniz, ortaya tam bir anlam karmaşası çıkıyor haliyle konuyu anlamak zorlaşıyor. Mesela örneklere bakarak bir deneme yapmak öğrenmek istedim( Firedac için yazı , video bulmak çok zor olasa da.. ). Formuma FDConnection, FDTransaction, FDQuery ve datasurce ekleyip bir kayıt eklemek istedim. Nasıl yapılır diye baktığımda, biri butona ekle komutu yazarken bir diğeri farklı bileşene , bir başkası ilgili veritabanına yazıp komut ile tetiklemiş. Tabiri caiz ise , ışık görmüş tavşan gibi kaldım ortada Nereye ne yazmak doğru nasıl kullanılır diye bakayım derken saatler geçmiş. Şimdi ise Firedac kullanmaktan vazgeçip interbase bileşenlerine bakıyorum. En azından örnek gösterimler bulabiliyorum. Bu bileşen karşası içinde doğru başlangıç yapıp doğruyu öğrenmek sanırım epey zor olacak.. Hadi hayırlısı )
Yorumları: 616
Konuları: 66
Kayıt Tarihi: 05-10-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 3.270 Uzman
(28-09-2018, Saat: 22:48)Lord_Ares Adlı Kullanıcıdan Alıntı: Firebird için firedac kullandığımızda bahsetmiş olduğunuz dataset bileşeninden sanırım mahrum kalıyoruz. Bağlantı bileşenleri ve seçenekleri biraz fazla olunca ve ben gibi bu bileşenlere acemiyseniz, ortaya tam bir anlam karmaşası çıkıyor haliyle konuyu anlamak zorlaşıyor. Mesela örneklere bakarak bir deneme yapmak öğrenmek istedim( Firedac için yazı , video bulmak çok zor olasa da.. ). Formuma FDConnection, FDTransaction, FDQuery ve datasurce ekleyip bir kayıt eklemek istedim. Nasıl yapılır diye baktığımda, biri butona ekle komutu yazarken bir diğeri farklı bileşene , bir başkası ilgili veritabanına yazıp komut ile tetiklemiş. Tabiri caiz ise , ışık görmüş tavşan gibi kaldım ortada Nereye ne yazmak doğru nasıl kullanılır diye bakayım derken saatler geçmiş. Şimdi ise Firedac kullanmaktan vazgeçip interbase bileşenlerine bakıyorum. En azından örnek gösterimler bulabiliyorum. Bu bileşen karşası içinde doğru başlangıç yapıp doğruyu öğrenmek sanırım epey zor olacak.. Hadi hayırlısı )
Firedac veya unidacla devam etmenizi öneririm daha sonra farklı bir rdbms'e geçmek istediğinizde veya aynı anda farklı bir rdbms kullanmak istediğinizde daha az emek harcarsınız.
“Do. Or do not. There is no try.”
|