Erro no Insert Mysql (MariaDB)

MySQL

Banco de Dados

MariaDB

24/03/2022

Prezado(a)s, Bom Dia.
Seguindo meu dilema aqui.

Estou tendo um problema em fazer uma inserção no Mysql.
Esta é a minha query.
SQLCampo.SQL.Add(''INSERT INTO campo(id, campo) VALUES ('' + FieldByName(''Código'').AsString + '', '''''' + FieldByName(''campo'').AsString + '''''')'');
SQLCampo.ExecSQL;


First chance exception at $7790ECE2. Exception class TDBXError with message ''You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''INSERT INTO campo(id, campo) VALUES (111, ''SEM DEFINIÇÃO'')'' at line 2''. Process ConectorGB.exe (4024)

Se eu pego essa mesma query e insiro diretamente no gerenciador do Mysql, ela roda sem problemas
INSERT INTO campo(id, campo) VALUES (111, ''SEM DEFINIÇÃO'')


Como eu poderia resolver essa situação? Teria a ver com a acentuação?
Oswaldo

Oswaldo

Curtidas 0

Respostas

Emerson Nascimento

Emerson Nascimento

24/03/2022

tente passando os valores como parâmetros. assim você não precisa se preocupar com esse monte de aspas.
SQLCampo.SQL.Add('INSERT INTO campo(id, campo) VALUES ( :ValorID, :ValorCampo )');
SQLCampo.ParamByName('ValorID').AsInteger := FieldByName('Código').AsInteger;
SQLCampo.ParamByName('ValorCampo').AsString := FieldByName('Campo').AsString;
SQLCampo.ExecSQL;

GOSTEI 0
Oswaldo

Oswaldo

24/03/2022

tente passando os valores como parâmetros. assim você não precisa se preocupar com esse monte de aspas.
SQLCampo.SQL.Add('INSERT INTO campo(id, campo) VALUES ( :ValorID, :ValorCampo )');
SQLCampo.ParamByName('ValorID').AsInteger := FieldByName('Código').AsInteger;
SQLCampo.ParamByName('ValorCampo').AsString := FieldByName('Campo').AsString;
SQLCampo.ExecSQL;



Olá Emerson, Bom dia. Obrigado pela ajuda.
Fiz os ajustes, mas continua o erro. Agora, a acentuação bagunçou, como se tivesse mudado o charset.

First chance exception at $7790ECE2. Exception class TDBXError with message 'You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'INSERT INTO campo(id, campo) VALUES ( '111' , 'SEM DEFINIÇÃO' )' at line 2'. Process ConectorGB.exe (26300)
GOSTEI 0
Emerson Nascimento

Emerson Nascimento

24/03/2022

'You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'INSERT INTO campo(id, campo) VALUES ( '111' , 'SEM DEFINIÇÃO' )' at line 2'.

coisa estranha: '111' deveria ser apresentado como 111 (supondo que o campo id seja numerico). por isso coloquei AsInteger.

GOSTEI 0
Oswaldo

Oswaldo

24/03/2022

'You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'INSERT INTO campo(id, campo) VALUES ( '111' , 'SEM DEFINIÇÃO' )' at line 2'.

coisa estranha: '111' deveria ser apresentado como 111 (supondo que o campo id seja numerico). por isso coloquei AsInteger.



Sim, ele é um INT
GOSTEI 0
POSTAR