Erro no Insert Mysql (MariaDB)

24/03/2022

7

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

Responder

Posts

24/03/2022

Emerson Nascimento

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;

Responder

24/03/2022

Oswaldo

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)
Responder

24/03/2022

Emerson Nascimento

'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.

Responder

24/03/2022

Oswaldo

'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
Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários,
consulte nossa política de privacidade.

Aceitar