2011-12-16 2 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 

Я думаю, что это отображение самого последнего элемента в списке. Но я хочу отображать каждый элемент, как я мог, с циклом foreach в PHP. Как я могу создать, например, TLabel для каждого элемента?

+1

Как в стороне записки, как вам код SQL является обычным способом, чтобы позволить «SQL-инъекции». Сделайте это для таблицы входа, и умный пользователь может прочитать всю таблицу. Вы должны использовать «параметры SQL», то есть где email =: email и login_pass =: password. Конкатенация строки без первой «дезинфекции» их опасна, потому что пользователь может ввести «правильные» символы и полностью изменить ваш запрос. –

+0

Использование параметров позволит избежать значений, но вы хотите отфильтровать «NULL». Кроме того, отфильтруйте '%' и '_' с предложениями LIKE. –

ответ

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; 
+1

+1, вы были быстрее. Я хотел создать также метки для каждой строки :) – TLama

+2

, и если запрос уже активен и на последней записи, перейдите к записи «Первая» перед циклом. –

+0

Если вы обнаружите, что ваше приложение зависает, вы забыли 'Next', что является легкой ошибкой. –

Смежные вопросы