Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   materializar consulta mysql (https://www.clubdelphi.com/foros/showthread.php?t=94511)

pepesoft 12-03-2020 05:14:21

materializar consulta mysql
 
hola amigos necesito de su ayuda, no puedo resolver esta consulta con TUniQuery de los componentes DEVART con conexión a una base de datos mysql. Siempre me da error.
los campos contienen informacion cifrada con AES. Y el texto para la muestra es cifrado.
Código Delphi [-]
    with TUniQuery do
    begin
      Close;
      SQL.Clear;
      SQL.Add('SELECT * FROM usuarios ');
      SQL.Add('WHERE usuario = :usuario ');
      SQL.Add(' AND password = :password ' );
      ParamByName('usuario').AsString  := 'ULKTKFeJbZjKbMVusjc+pZ2GiVRti+XCwNec1OHEnCc=';
      ParamByName('password').AsString := 'SJLU/tvWf9Op2gf7RK/G01eNY8l4X5+zRDBHcrKHPEk=';
      Open;
    end;
este es el error
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version
for the right syntax to use near 'and password = SJLU/tvWf9Op2gf7RK/G01eNY8l4X5+zRDBHcrKHPEk=' at line 3

espero alguna forma de solucion para este problema.

Arturo.Molina 12-03-2020 08:10:33

Cita:

Empezado por pepesoft (Mensaje 536233)
hola amigos necesito de su ayuda, no puedo resolver esta consulta con TUniQuery de los componentes DEVART con conexión a una base de datos mysql. Siempre me da error.
los campos contienen informacion cifrada con AES. Y el texto para la muestra es cifrado.

Código Delphi [-]
with TUniQuery do begin
  Close;
  SQL.Clear;
  SQL.Add('SELECT * FROM usuarios ');
  SQL.Add('WHERE usuario = :usuario ');
  SQL.Add(' AND password = password ' );
  ParamByName('usuario').AsString  := 'ULKTKFeJbZjKbMVusjc+pZ2GiVRti+XCwNec1OHEnCc=';
  ParamByName('password').AsString := 'SJLU/tvWf9Op2gf7RK/G01eNY8l4X5+zRDBHcrKHPEk=';
  Open;
end;
este es el error

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version
for the right syntax to use near 'and password = SJLU/tvWf9Op2gf7RK/G01eNY8l4X5+zRDBHcrKHPEk=' at line 3

espero alguna forma de solucion para este problema.

Buenos días, no uso mysql ni los Devart, pero podría ser por los caracteres "especiales" que llevan los párametros de la consulta ( slash, igual... ).
Yo intentaría encerrar las cadenas entre comillas:

Código Delphi [-]
ParamByName('usuario').AsString  := QuotedStr( 'ULKTKFeJbZjKbMVusjc+pZ2GiVRti+XCwNec1OHEnCc=' );
ParamByName('password').AsString := QuotedStr( 'SJLU/tvWf9Op2gf7RK/G01eNY8l4X5+zRDBHcrKHPEk=' );

kuan-yiu 12-03-2020 08:19:14

Password es una palabra reservada en SQL, casi siempre. Si tienes un campo en una tabla que se llama así, tienes un conflicto

Casimiro Notevi 12-03-2020 09:50:42

Falta el "dos puntos"
AND password = password
AND password = :password

kuan-yiu 12-03-2020 09:53:58

Cita:

Empezado por Casimiro Notevi (Mensaje 536240)
Falta el "dos puntos"
AND password = password
AND password = :password

Creo que no, yo al menos veo :p en el código, jeje, que será ": p" pero sin el espacio

Casimiro Notevi 12-03-2020 10:00:51

Cita:

Empezado por kuan-yiu (Mensaje 536242)
Creo que no, yo al menos veo :p en el código, jeje, que será ": p" pero sin el espacio

No lo veía, lo he editado poniendo el [noparse]:p[/noparse] para que quede claro.

pepesoft 12-03-2020 18:29:01

Código Delphi [-]
ParamByName('usuario').AsString  := QuotedStr( 'ULKTKFeJbZjKbMVusjc+pZ2GiVRti+XCwNec1OHEnCc=' );
ParamByName('password').AsString := QuotedStr( 'SJLU/tvWf9Op2gf7RK/G01eNY8l4X5+zRDBHcrKHPEk=' );
Gracias amigos por salir en mi ayuda, lo que me sugiere Arturo.Molina funciona. Pero mi consulta va, que este valor o ambos
Código Delphi [-]
ULKTKFeJbZjKbMVusjc+pZ2GiVRti+XCwNec1OHEnCc=
lo obtengo mediante una variable string, e ahí el error que no encuentro forma de acomodarlo

Casimiro Notevi 12-03-2020 18:44:57

¿Para qué el quotdstr?
ParamByName('password').AsString := QuotedStr( 'SJLU/tvWf9Op2gf7RK/G01eNY8l4X5+zRDBHcrKHPEk=' );
Eso lo que hace es poner comilla dobles a la cadena.

pepesoft 13-03-2020 18:35:04

Cita:

Empezado por Casimiro Notevi (Mensaje 536256)
¿Para qué el quotdstr?
ParamByName('password').AsString := QuotedStr( 'SJLU/tvWf9Op2gf7RK/G01eNY8l4X5+zRDBHcrKHPEk=' );
Eso lo que hace es poner comilla dobles a la cadena.

Tienes mucha razón, la cadena ya no sería la misma que se quiere comparar con la de la base de datos. y es otro problema.

Casimiro Notevi 13-03-2020 20:13:26

Yo me he perdido y no sé ya qué problema tienes exactamente y qué pasos has dado y qué resultados has obtenido, ni cómo está ahora la situación.


La franja horaria es GMT +2. Ahora son las 11:03:28.

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