2011-12-16 202 views
5

使用Delphi 2010,我使用TSQLQuery和TSQLConnection連接到遠程MySQL服務器。我已經使用了SQL查詢如下:如何獲取SQL查詢的結果?

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

SQLQuery1.Open; // Open sql connection 

我應該怎麼做才能列出或顯示這個查詢選擇的數據?

當我鍵入

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

,我認爲它在列表中顯示的最後一項。但我想顯示每個項目,因爲我可以在PHP中使用foreach循環。我怎樣才能爲每個物品創建一個TLabel?

+1

順便說明,這樣你的代碼SQL是通常的方式,允許「SQL注入」。做一個登錄表,聰明的用戶可以讀整個表。您應該使用「SQL參數」,即email =:email和login_pass =:password。 在沒有首先「清理」它們的情況下連接字符串是很危險的,因爲用戶可以輸入「正確」字符並完全改變查詢含義。 – 2011-12-16 19:56:20

+0

使用參數將會跳過這些值,但是您需要過濾掉NULL。另外,用LIKE子句過濾出`%`和`_`。 – 2011-12-16 20:39:38

回答

12

你只是遍歷結果集像

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;