2011-12-16 34 views
5

Delphi 2010'u kullanarak uzak bir MySQL sunucusuna bağlanmak için TSQLQuery ve TSQLConnection'ı kullandım. aşağıdaki gibi bir SQL sorgusu kullandık:SQL sorgusunun sonuçlarını nasıl alırım?

SQLQuery1.SQL.Text := 'SELECT * FROM registered WHERE email="'+email+'" and login_pass="'+password+'"'; 

SQLQuery1.Open; // Open sql connection 

Ne listelemek veya bu sorgu tarafından seçilen verileri görüntülemek için ne yapmalıdır? Ben

SQLQuery1['who']; // The resault is : James Kan 

yazdığınızda

ben listede en son öğeyi görüntülüyor düşünüyorum. Ama PHP'deki foreach döngüsüyle olabildiğince her bir öğeyi görüntülemek istiyorum. Her bir öğe için nasıl bir TLabel oluşturabilirim?

+1

gibi resultset üzerinde yineleme "SQL Enjeksiyon" izin vermek için olağan bir yoldur. Giriş tablosu için yapın ve akıllı bir kullanıcı tüm tabloyu okuyabilir. "SQL parameters" i kullanmalısınız, yani e-posta =: email ve login_pass =: password. İlk "sıhhileştirme" olmaksızın dizgiyi birleştirmek, bir kullanıcı "uygun" sahnelere girebildiğinden ve sorgunuzu tamamen anlamlandırabileceğinden, tehlikeli bir durumdur. –

+0

Parametreleri kullanmak, değerlerden kaçar, ancak 'NULL' öğesini filtrelemek isteyeceksiniz. Ayrıca, LIKE cümleleriyle '%' ve '_' filtreleyin. –

cevap

12

sadece yolu size kod SQL, bir kenara not olarak

SQLQuery1.Open; 
SQLQuery1.First; // move to the first record 
while(not SQLQuery1.EOF)do begin 
    // do something with the current record 
    ... 
    // move to the next record 
    SQLQuery1.Next; 
end; 
+1

+1, daha hızlıydınız. Ayrıca her satır için etiketleri oluşturmak istedim :) – TLama

+2

ve eğer sorgu zaten aktif ve son kayıtta, döngüden önce 'İlk 'kayda gidin. –

+0

Uygulamanızın donduğunu görürseniz, 'Next'i unutmuşsunuzdur, ki bu kolay bir hatadır. –

İlgili konular