Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   MySQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=21)
-   -   insertando datos en una tabla en mysql 5.7.11 con la función AES_ENCRYPT (https://www.clubdelphi.com/foros/showthread.php?t=91529)

chino150 26-02-2017 02:52:48

insertando datos en una tabla en mysql 5.7.11 con la función AES_ENCRYPT
 
Hola a todos tengo un problem insertando datos en una tabla en mysql 5.7.11 con la función AES_ENCRYPT, estoy usando delphi seattle y zeos, me da un error de sintaxis de sql, también como utilizo AES_DECRYPT cuando el usuario hace el login


Código Delphi [-]
procedure TForm1.btnSafeClick(Sender: TObject);
var
User: String;
Role: String;
Pass: String;
begin

User := txtName.Text;
Role := cbRole.Text;
Pass := txtPassword.Text;

      Zquery1.Close;
      Zquery1.SQL.Clear;
      Zquery1.SQL.Add ('INSERT into users(u_username,u_rolecode,u_password)VALUES("User", "Role", AES_ENCRYPT("Pass", "abcd")');
      Zquery1.ExecSQL;


Muchas gracis

Casimiro Notevi 26-02-2017 13:07:03

¿Y el error?

chino150 26-02-2017 16:37:52

Cita:

Empezado por Casimiro Notevi (Mensaje 513731)
¿Y el error?

raised exception class EZSQLException with message 'SQL Error: You have an error in your syntax; check the manual that corresponds to your MySql server version for the right syntax to use near "at line 1".

aposi 26-02-2017 23:48:29

prueba con los parametros con comillas simples

Código Delphi [-]
Zquery1.SQL.Add ('INSERT into users(u_username,u_rolecode,u_password)VALUES("User", "Role", AES_ENCRYPT('Pass', 'abcd')');

http://www.w3resource.com/mysql/encr..._encrypt().php

chino150 27-02-2017 00:41:08

Cita:

Empezado por aposi (Mensaje 513735)
prueba con los parametros con comillas simples

Código Delphi [-]
Zquery1.SQL.Add ('INSERT into users(u_username,u_rolecode,u_password)VALUES("User", "Role", AES_ENCRYPT('Pass', 'abcd')');

http://www.w3resource.com/mysql/encr..._encrypt().php

no funciona me da este error ')'expected put identifier 'Pass" found

aposi 27-02-2017 00:44:35

Código Delphi [-]
Zquery1.SQL.Add ('INSERT into users(u_username,u_rolecode,u_password)VALUES("User", "Role", AES_ENCRYPT(''Pass'', ''abcd'')');


las comillas de pass y abcd sin simples

chino150 27-02-2017 00:52:20

Cita:

Empezado por aposi (Mensaje 513738)
Código Delphi [-]
Zquery1.SQL.Add ('INSERT into users(u_username,u_rolecode,u_password)VALUES("User", "Role", AES_ENCRYPT(''Pass'', ''abcd'')');


las comillas de pass y abcd sin simples

da el mismo error que al principio error de syntax

Casimiro Notevi 27-02-2017 01:12:55

Código SQL [-]
INSERT into users (u_username, u_rolecode, u_password) 
VALUES ('User', 'Role', AES_ENCRYPT('Pass','abcd') )

Ejecuta esa sentencia con tu programa "manager" de msysql

chino150 27-02-2017 01:36:30

Cita:

Empezado por Casimiro Notevi (Mensaje 513740)
Código SQL [-]
INSERT into users (u_username, u_rolecode, u_password) 
VALUES ('User', 'Role', AES_ENCRYPT('Pass','abcd') )

Ejecuta esa sentencia con tu programa "manager" de msysql

funciona bien pero en delphi no

Casimiro Notevi 27-02-2017 01:52:24

Pues danos más información, no podemos trastear tu pc y tu código :)

chino150 27-02-2017 02:04:09

Cita:

Empezado por Casimiro Notevi (Mensaje 513742)
Pues danos más información, no podemos trastear tu pc y tu código :)

Código Delphi [-]
procedure TForm1.btnSafeClick(Sender: TObject);
var
User: String;
Role: String;
Pass: String;
begin

User := txtName.Text;
Role := cbRole.Text;
Pass := txtPassword.Text;

      Zquery1.Close;
      Zquery1.SQL.Clear;
      Zquery1.SQL.Add ('INSERT into users(u_username,u_rolecode,u_password)VALUES("User", "Role", AES_ENCRYPT("Pass", "abcd")');
      Zquery1.ExecSQL;

este es el código, uso delphi seattle, mysql 5.7.11 y zeos

aposi 27-02-2017 03:07:43

passa todos los valores por parametro

chino150 27-02-2017 03:32:09

Cita:

Empezado por aposi (Mensaje 513744)
passa todos los valores por parametro

Intenté hacerlo asi y me sale un error que los param's no existen

jafera 27-02-2017 12:04:08

Yo cuento 4 parentesis a la izquierda "(" y tres a la dereacha ")"
A ver si es esto.

Saludos

Josep

roman 27-02-2017 15:42:57

Es como dice jafera. Falta el paréntesis de cierre del VALUES.

LineComment Saludos

chino150 28-02-2017 03:19:06

Cita:

Empezado por roman (Mensaje 513766)
Es como dice jafera. Falta el paréntesis de cierre del VALUES.

LineComment Saludos

Código Delphi [-]
 Zquery1.SQL.Add ('INSERT into users(u_username,u_rolecode,u_password)VALUES("User", "Role", AES_ENCRYPT("Pass", "abcd"))');

ok este codigo esta funcionando pero no guarda la información escrita en txtName y cbRole lo que está guardando es User y role

Casimiro Notevi 28-02-2017 11:54:02

Cita:

Empezado por chino150 (Mensaje 513782)
ok este codigo esta funcionando pero no guarda la información escrita en txtName y cbRole lo que está guardando es User y role

Como dice Neftali: "A mejores preguntas, mejores respuestas" ;)
Es que llevamos varios días "tirándote de la lengua" para que des información :)
Dices que no se guarda esos datos, así que la pregunta lógica es: ¿has verificado que esas variables tienen valores o acaso están vacías? ¿puede ser que alguna sea campo clave y ya exista, por lo que no permita duplicarla?

roman 28-02-2017 15:51:37

Cita:

Empezado por chino150 (Mensaje 513782)
Código Delphi [-]
Zquery1.SQL.Add ('INSERT into users(u_username,u_rolecode,u_password)VALUES("User", "Role", AES_ENCRYPT("Pass", "abcd"))');

ok este codigo esta funcionando pero no guarda la información escrita en txtName y cbRole lo que está guardando es User y role

Yo creo que todos dábamos por sentado que estabas poniendo sólo ejemplos y no los datos reales. Si la sentencia de arriba es exactamente la que tienes en tu programa, pues claro que lo que va a guardar en la base de datos son las palabras textuales "User" y "Role". Para pasar los valores de tus controles txtName y cbRole debes poner tu sentencia con parámetros:

Código Delphi [-]
Zquery1.SQL.Add ('INSERT into users(u_username,u_rolecode,u_password) VALUES(:user, :role, AES_ENCRYPT("Pass, "abcd"))');

y sustituirlos por los valores de los controles:

Código Delphi [-]
Zquery1.ParamByName('user').AsString := txtName.Text;
Zquery1.ParamByName('role').AsString := cbRole.Text;

LineComment Saludos

chino150 01-03-2017 00:03:41

Cita:

Empezado por roman (Mensaje 513794)
Yo creo que todos dábamos por sentado que estabas poniendo sólo ejemplos y no los datos reales. Si la sentencia de arriba es exactamente la que tienes en tu programa, pues claro que lo que va a guardar en la base de datos son las palabras textuales "User" y "Role". Para pasar los valores de tus controles txtName y cbRole debes poner tu sentencia con parámetros:

Código Delphi [-]
Zquery1.SQL.Add ('INSERT into users(u_username,u_rolecode,u_password) VALUES(:user, :role, AES_ENCRYPT("Pass, "abcd"))');

y sustituirlos por los valores de los controles:

Código Delphi [-]
Zquery1.ParamByName('user').AsString := txtName.Text;
Zquery1.ParamByName('role').AsString := cbRole.Text;



LineComment Saludos

Gracias el codigo arriba funciono


La franja horaria es GMT +2. Ahora son las 11:07:10.

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