Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Problema con Query (https://www.clubdelphi.com/foros/showthread.php?t=75230)

cheche358 06-08-2011 16:12:43

Problema con Query
 
Por amor a dios alguien que me diga posibles errores de esta consulta que no encuentro que vuuelta mas darle!! No me da error de sintaxis pero no me arroja ningun resultado:

SELECT * FROM INVENTARIO WHERE INVENTARIO.TIPO=' + Edt1.Text'

Caral 06-08-2011 17:22:12

Hola
Me parece que el signo de + esta separado de la cmilla y del edit, ademas hay una comilla detras del edit que no va, prueba asi:
Código Delphi [-]
'SELECT * FROM INVENTARIO WHERE INVENTARIO.TIPO = '+Edt1.Text
Saludos

leofuentes21 06-08-2011 17:40:11

hola
Puedes provar de esta manera sino te funciona
Código Delphi [-]
'SELECT * FROM INVENTARIO WHERE INVENTARIO.TIPO = '+quotedstr(Edt1.Text);
saludos

cheche358 06-08-2011 18:58:00

Muchas gracias a todos por sus respuestas, lo resolvi asi:

Código:

dbsmqry1.SQL.Clear;
dbsmqry1.SQL.Add('SELECT * FROM INVENTARIO WHERE TIPO=' + QuotedStr(edt1.Text));
dbsmqry1.Open;


ecfisa 06-08-2011 22:07:50

Hola cheche358.

Otra alternativa:
Código Delphi [-]
  dbsmqry1.SQL.Text:= 'SELECT * FROM VENTAS WHERE CONCEPTO = :VALOR';
  dbsmqry1.ParamByName('VALOR').AsString:= Edit1.Text;
  dbsmqry1.Open;

Saludos.

Chris 07-08-2011 01:20:11

Cita:

Empezado por cheche358 (Mensaje 408716)
Muchas gracias a todos por sus respuestas, lo resolvi asi:

Código:

dbsmqry1.SQL.Clear;
dbsmqry1.SQL.Add('SELECT * FROM INVENTARIO WHERE TIPO=' + QuotedStr(edt1.Text));
dbsmqry1.Open;


Utiliza el código que te ha proporcionado ecfisa. En informática hay algo que se le conoce cómo Ataque de Inyección de SQL. Tu código es completamente vulnerable a él.

Saludos,
Chris

cheche358 07-08-2011 04:26:52

Gracias por la recomendacion, ya me documente un poco al respecto.

Pero para matar la duda completamente...

La vulnerabilidad del codigo que escribi antes viene del QuotedStr ??

ecfisa 07-08-2011 04:51:27

Cita:

Empezado por cheche358 (Mensaje 408764)
Gracias por la recomendacion, ya me documente un poco al respecto.

Pero para matar la duda completamente...

La vulnerabilidad del codigo que escribi antes viene del QuotedStr ??

No exáctamente. Viene dado por que de ese modo permite armar la sentencia SQL mediante el Edit.
En cambio no tiene ninguna consecuencia pasar una sentencia SQL como valor de un parámetro. (Salvo no encontrar lo que se está buscando ;) )

Saludos.


La franja horaria es GMT +2. Ahora son las 04:30:17.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi