Erro no Insert Mysql (MariaDB)
Prezado(a)s, Bom Dia.
Seguindo meu dilema aqui.
Estou tendo um problema em fazer uma inserção no Mysql.
Esta é a minha query.
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
Como eu poderia resolver essa situação? Teria a ver com a acentuação?
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
Curtidas 0
Respostas
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
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
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.
coisa estranha: '111' deveria ser apresentado como 111 (supondo que o campo id seja numerico). por isso coloquei AsInteger.
GOSTEI 0
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.
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