Erro de sintaxe na instrução INSERT INTO

17 respostas
S

Olá pessoal, sou muito lleiga, gostaria que podessem me esclarecer, estou com o seguinte problema:
tive que mexer no B.D(Access) o qual antes estava tudo como tipo Texto…
agora os que são data, Data/Hora…
antes funcionava… agora não funciona… para salvar estou usando tudo getText()… será assim mesmo???
tive que tirar as mascaras dos campos data, o qual agora aparece assim:980-05-05 00:00:00… o que devo fazer para arruma isso???
quando salvo da o seguinte erro:

java.sql.SQLException: [Microsoft][Driver ODBC para Microsoft Access] Erro de sintaxe na instrução INSERT INTO.
        at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6957)
        at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7114)
        at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(JdbcOdbc.java:3110)
        at sun.jdbc.odbc.JdbcOdbcStatement.execute(JdbcOdbcStatement.java:338)
        at sun.jdbc.odbc.JdbcOdbcStatement.executeUpdate(JdbcOdbcStatement.java:288)

no botão alterar também é parecido:

java.sql.SQLException: [Microsoft][Driver ODBC para Microsoft Access] Erro de sintaxe na instrução UPDATE.
        at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6957)
        at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7114)
        at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(JdbcOdbc.java:3110)
        at sun.jdbc.odbc.JdbcOdbcStatement.execute(JdbcOdbcStatement.java:338)
        at sun.jdbc.odbc.JdbcOdbcStatement.executeUpdate(JdbcOdbcStatement.java:288)

O que devo fazer???

Faz tempo que estou tentando resolver, não estou conseguindo, deve ser algo muito simples mas alem do meu conhecimento, conto com a ajuda de vocês …
é muito frustante, ficar horas na frente do computador e não conseguir ver resultados…

17 Respostas

T

O nome do campo é “numero-clie” ou “numero_clie”?

Se for “numero-clie”, ele deve ficar entre colchetes:

[numero-clie]

para evitar confusão com o sinal de subtração (-)

S

Então foi um erro de digitação, mas já tentando senar esse erro, para evitar, eu copiei o nome das colunas do B.D e colei ai na aplicação,
rsr não era para ser “numero-clie”, mas o B.D esta igual ao codigo!
vou alterar imediatamente!!!

T

Só queria encher um pouco o saco de quem definiu o nome das colunas da tabela, porque o certo é “propriedade” (que rima com “igualdade” e “verdade”), não “propriendade” (que rima com “leviandade”).

S

Obrigada thingol

agora pelo menos esta salvando, mas em seguida aparece a seguinte msg de erro:

java.sql.SQLException: [Microsoft][Driver ODBC para Microsoft Access] Instrução SQL inválida. 'DELETE', 'INSERT', 'PROCEDURE', 'SELECT' ou 'UPDATE' esperado.
        at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6957)
        at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7114)
        at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(JdbcOdbc.java:3110)
        at sun.jdbc.odbc.JdbcOdbcStatement.execute(JdbcOdbcStatement.java:338)
        at sun.jdbc.odbc.JdbcOdbcStatement.executeQuery(JdbcOdbcStatement.java:253)

o que ele quer dizer? o Insert está lá…

S

se desabilitar o JOptionPane que emite essa msg de erro, o que não deve ser nada correto, porque se emite a msg é porque deve ter alguma coisa,
acho que resolveria, mas o som do pâ continuará…

após a inclusão ele deveria atualizar os dados… mas devido a esse erro,
eu tenho que fazer uma ação para forçar a atualização, ele não esta atualizando “automático”…

T
con_cliente.resultset = con_cliente.statement.executeQuery("Selected * from cliente");

É “select”, não “selected”. Dica: sempre que for digitar um comando no seu programa, teste-o antes no próprio banco e veja se não dá algum problema. É mais fácil que alguém faça isso por você (no caso o banco), que você mesmo.

S

Eu mudei e agora não salva mais…

java.sql.SQLException: [Microsoft][Driver ODBC para Microsoft Access] Tipo de dados imcompatível na expressão de critério.
        at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6957)
        at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7114)
        at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(JdbcOdbc.java:3110)
        at sun.jdbc.odbc.JdbcOdbcStatement.execute(JdbcOdbcStatement.java:338)
        at sun.jdbc.odbc.JdbcOdbcStatement.executeUpdate(JdbcOdbcStatement.java:288)

java.sql.SQLException:[Microsoft][Driver ODBC para Microsoft Acssess] Erro de sintaxe na cláusula ORDER BY. O sql passado foi: select * from cliente order bynome_clie

TangZero

Suemy:
Eu mudei e agora não salva mais…

java.sql.SQLException: [Microsoft][Driver ODBC para Microsoft Access] Tipo de dados imcompatível na expressão de critério.
        at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6957)
        at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7114)
        at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(JdbcOdbc.java:3110)
        at sun.jdbc.odbc.JdbcOdbcStatement.execute(JdbcOdbcStatement.java:338)
        at sun.jdbc.odbc.JdbcOdbcStatement.executeUpdate(JdbcOdbcStatement.java:288)

java.sql.SQLException:[Microsoft][Driver ODBC para Microsoft Acssess] Erro de sintaxe na cláusula ORDER BY. O sql passado foi: select * from cliente order bynome_clie

não seria

select * from cliente order by nome_clie

???

T

Vou repetir a dica.

Sempre que for digitar um comando SQL no seu programa, teste-o antes no próprio banco e veja se não dá algum problema.
É mais fácil que alguém faça isso por você (no caso o banco), que você mesma (pelo que imagino, você não pegou ainda as manhas de ver se está sobrando ou faltando algum espaço, ou se as palavras estão digitadas erradamente. Isso leva algum tempo para pegar o jeito*, então não fique encabulada.)

S

thingol : então eu não sei mexer estou começando agora… essa dica que vc postou, como seria ? tenho que usar esse comando Sql? estou usando o access… como faço esses testes???
É até vergonhoso, mas mexo muito pouco no access, estou aprendendo agora
vou precisar muito pegar rapido a manha, porque tenho muitas mensagens de erro pela frente… e tenho que poupar um pouco a paciencia de vcs né?!

TangZero: puxa vida

era isso que estava faltando!!!
tinha que tirar o selected que estava errado e colocar select;

e em vez de chamar meu método ordenação (o qual eu dava um order by dentro dele), ocorrendo o erro.

era só colocar order by direto

Obrigadão para todos, e ainda tem mais msg de erros pela frente!

TangZero

Suemy:
thingol : então eu não sei mexer estou começando agora… essa dica que vc postou, como seria ? tenho que usar esse comando Sql? estou usando o access… como faço esses testes???
vou precisar muito pegar rapido a manha, porque tenho muitas mensagens de erro pela frente… e tenho que poupar um pouco a paciencia de vcs né?!

TangZero: puxa vida :smiley:

era isso que estava faltando!!!
tinha que tirar o selected que estava errado e colocar select;

e em vez de chamar meu método ordenação (o qual eu dava um order by dentro dele), ocorrendo o erro.

era só colocar order by direto

Obrigadão para todos, e ainda tem mais!

Pois é. Você tinha colocado dessa maneira:

con_cliente.executeSQL("select * from cliente order by" + ordenacao);

Devia estar assim:

con_cliente.executeSQL("select * from cliente order by " + ordenacao); // faltou um espaço depois do "by"

Espero ter ajudado.

S

Bastante obrigada!!!

no caso do botão alterar, seria o mesmo erro???

java.sql.SQLException: [Microsoft][Driver ODBC para Microsoft Access] Erro de sintaxe na instrução UPDATE.
        at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6957)
        at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7114)
        at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(JdbcOdbc.java:3110)
        at sun.jdbc.odbc.JdbcOdbcStatement.execute(JdbcOdbcStatement.java:338)
        at sun.jdbc.odbc.JdbcOdbcStatement.executeUpdate(JdbcOdbcStatement.java:288)
TangZero

Provável erro nessa linha:

"obs_clie='"+tf_observacao.getText()+"',"+  
"'where codigo_clie = "+tf_codigo.getText()+"'";

Altere para:

"obs_clie='"+tf_observacao.getText()+"' "+
"where codigo_clie = '"+tf_codigo.getText()+"'";

Acho que agora vai… :wink:

S

Ainda não parece que esta dando o mesmo erro:

java.sql.SQLException: [Microsoft][Driver ODBC para Microsoft Access] Erro de sintaxe na instrução UPDATE.
        at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6957)
        at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7114)
        at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(JdbcOdbc.java:3110)
        at sun.jdbc.odbc.JdbcOdbcStatement.execute(JdbcOdbcStatement.java:338)
        at sun.jdbc.odbc.JdbcOdbcStatement.executeUpdate(JdbcOdbcStatement.java:288)

pesquisei sobre tratar erro e em uma postagem e disseram para usar esse (erro.printStackTrace(); )
aparece esse mont de at sun … desculpe a ignorância, mas pra que serve???

TangZero

Tente:

"obs_clie='"+tf_observacao.getText()+"' "+
" where codigo_clie like '"+tf_codigo.getText()+"' ";

Não sei mais o que pode ser. :?

S

achei!!! tinha um sinal de + onde não deveria estar :shock:

e no finalzinho eu testei assim e funcionou!!!

"pessoa_clie= '" +pessoa+"',"+
                    "obs_clie= '" +tf_observacao.getText()+  
                    "' where codigo_clie = " +tf_codigo.getText();

Vlwww a todo muito obrigada!!!

Tudo permissão de Deus na minha vida!

TangZero

Parabéns…

Muito bom mesmo! :lol:

Criado 20 de agosto de 2008
Ultima resposta 20 de ago. de 2008
Respostas 17
Participantes 3