2011-12-16 150 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;