2011-12-16 12 views
5

Utilizando Delphi 2010, he utilizado TSQLQuery y TSQLConnection para conectarme a un servidor MySQL remoto. He utilizado una consulta SQL de la siguiente manera:¿Cómo obtengo los resultados de una consulta SQL?

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

SQLQuery1.Open; // Open sql connection 

¿Qué debo hacer para listar o visualizar los datos seleccionados por esta consulta?

Cuando escribo

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

creo que está mostrando el último elemento de la lista. Pero quiero mostrar cada elemento, como pude con el ciclo foreach en PHP. ¿Cómo podría crear, por ejemplo, un TLabel para cada artículo?

+1

Como nota aparte, el que forma el código SQL es la forma habitual para permitir una "inyección SQL". Hazlo para una tabla de inicio de sesión, y un usuario inteligente puede leer toda la tabla. Debe usar "parámetros SQL", es decir, donde email =: email y login_pass =: contraseña. Cadena concatenada sin primero "desinfectarlas" es peligrosa porque un usuario puede ingresar los caracteres "correctos" y cambiar por completo el significado de su consulta. –

+0

El uso de parámetros escapará de los valores, pero querrá filtrar 'NULL'. Además, filtra '%' y '_' con cláusulas LIKE. –

Respuesta

12

Sólo iterar sobre el conjunto de resultados como

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, fuiste más rápido. Quería crear también las etiquetas para cada fila :) – TLama

+2

y si la consulta ya está activa y en el último registro, navegue hasta el registro "Primero" antes de realizar un bucle. –

+0

Si encuentra que su aplicación se congela, ha olvidado el 'Próximo', que es un error fácil. –

Cuestiones relacionadas