erro DBEXPRESS incluindo registro
situação:
1)delphi 2007 + MYSQL Server 5
2) Componentes DBExpress na ordem de conexão: TSQLCOnnection-
>TSQLQuery->TDataSetProvider->TCLientDataSet
3)ClientDataSet está com propriedade ProviderName apontado
para o DataSetProvider; DataSetProvider está propriedade
dataset apontado para a query; Query está com propriedade
sqlconnection apontado para a devida TSQLCOnnection; a SQL da
TQuery é SELECT * FROM TB_CONTROL_PARAMS; A TQuery e
TClientDataSet estão com os fields da tabela populados, e o
campo chave primária tem ProviderFlags
[pfInUpdate,pfInWhere,pfInKey] enquanto que os campos
restantes são [pfInUpdate,pfInWhere]
DatSetProvider tem propriedade UpdateMode upWhereAll
4) chamo no evento OnCLick do botão uma inclusão de registro,
a tabela está vazia, a chave primária é INT o resto é tudo
VARCHAR:
cdsControlParams.Open;
cdsControlParams.Append;
cdsControlParams.FieldByName(´ControlId´).Value:= 1;
cdsControlParams.FieldByName(´FieldName´).Value:= ´teste´;
...outros campos...
cdsControlParams.FieldByName(´BlobKind´).Value:= ´teste´;
cdsControlParams.Post;
if cdsControlParams.ApplyUpdates(0)>0 then
showmessage(´teve erro´);
5) O step over indica que até a linha de POST tudo funciona.
Ao ser acionado o ApplyUpdates ocorre a exceção:
exception Class TDBXError with message ´You have an error in
your SQL syntax; check the manual that corresponds to your
MySQL server version for right syntax tO use near´....aqui vem
os nomes dos campos da tabela...´at line 10
ALGUÉM SABE O POR QUE DO ERRO??????????
:?:
1)delphi 2007 + MYSQL Server 5
2) Componentes DBExpress na ordem de conexão: TSQLCOnnection-
>TSQLQuery->TDataSetProvider->TCLientDataSet
3)ClientDataSet está com propriedade ProviderName apontado
para o DataSetProvider; DataSetProvider está propriedade
dataset apontado para a query; Query está com propriedade
sqlconnection apontado para a devida TSQLCOnnection; a SQL da
TQuery é SELECT * FROM TB_CONTROL_PARAMS; A TQuery e
TClientDataSet estão com os fields da tabela populados, e o
campo chave primária tem ProviderFlags
[pfInUpdate,pfInWhere,pfInKey] enquanto que os campos
restantes são [pfInUpdate,pfInWhere]
DatSetProvider tem propriedade UpdateMode upWhereAll
4) chamo no evento OnCLick do botão uma inclusão de registro,
a tabela está vazia, a chave primária é INT o resto é tudo
VARCHAR:
cdsControlParams.Open;
cdsControlParams.Append;
cdsControlParams.FieldByName(´ControlId´).Value:= 1;
cdsControlParams.FieldByName(´FieldName´).Value:= ´teste´;
...outros campos...
cdsControlParams.FieldByName(´BlobKind´).Value:= ´teste´;
cdsControlParams.Post;
if cdsControlParams.ApplyUpdates(0)>0 then
showmessage(´teve erro´);
5) O step over indica que até a linha de POST tudo funciona.
Ao ser acionado o ApplyUpdates ocorre a exceção:
exception Class TDBXError with message ´You have an error in
your SQL syntax; check the manual that corresponds to your
MySQL server version for right syntax tO use near´....aqui vem
os nomes dos campos da tabela...´at line 10
ALGUÉM SABE O POR QUE DO ERRO??????????
:?:
Imaia
Curtidas 0
Respostas
Imaia
10/02/2009
:idea:
já resolvi. para os colegas desenvolvedores aí vai a solução do problema que me parecia de difícil solução:
não existe erro nenhum no uso e configuração dos componentes e código. Acontece que eu usei um token ou palavra reservada de query no MYSQLServer, a palavra é Left. Ao usar o nome de um campo como Left gera-se o erro, tentem:
insert into tb_teste (id,Left) values (1,´resolvido´);
temos:
MySQL Database Error: 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 ´Left) values (1,´resolvido´)´ at line 1
o mais curioso é que o mysql permite criar o campo sem reclamar, mas gera exceção ao tentar fazer qualquer insert neste campo. se o campo Left não for usado a inserção funciona também. heheh
valeu gente!!!
já resolvi. para os colegas desenvolvedores aí vai a solução do problema que me parecia de difícil solução:
não existe erro nenhum no uso e configuração dos componentes e código. Acontece que eu usei um token ou palavra reservada de query no MYSQLServer, a palavra é Left. Ao usar o nome de um campo como Left gera-se o erro, tentem:
insert into tb_teste (id,Left) values (1,´resolvido´);
temos:
MySQL Database Error: 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 ´Left) values (1,´resolvido´)´ at line 1
o mais curioso é que o mysql permite criar o campo sem reclamar, mas gera exceção ao tentar fazer qualquer insert neste campo. se o campo Left não for usado a inserção funciona também. heheh
valeu gente!!!
GOSTEI 0