Não estou conseguindo fazer um UPDATE no HSQLDB. O INSERT INTO, CREATE TABLE estão saindo, mas o UPDATE não. Não sei o que é. Não estou conseguindo enxergar o meu erro. Para CREATE e INSERT uso essa mesma função que me retorna um PreparedStatement.
Estou editando para acrescentar mais informação… O código da erro na hora de criar o PreparedStatement. O erro está no comando sql (ao que tudo indica). Mas eu não estou conseguindo ver erro alí.
Então, esse 1 do ps não está influenciando… Tenho mais valores nessa tabela. A minha intenção é atualizar mais de um desses valores de uma única vez (esse é apenas um desses valores). E como sei onde estão localizados, acabei fixando a linha.
Voltando ao problema. Depois que postei o comentário, eu verifiquei que o erro encontra-se na string do UPDATE.
Eu verifiquei a variável ps aqui, e ela chega igual a null na atribuição dos parâmetros. Eu recebo dois erros aqui:
1 - Na função que cria o PreparedStatement. Ocorre o erro do título (unexpected token: = required: ( in statement [UPDATE MJ SET Value = ? WHERE Row = ?]). (Verifiquei a variável ps, e ele chega igual a null na atribuição dos parâmetros);
2 - Na linha da atribuição dos parâmetros. (O ps é igual a null, então não tem como inserir os parâmetros).
Verifiquei a variável ps aqui, e ela é igual a null (não está gerando o PreparedStatement por conta da string UPDATE). Como não gera o PS, não tem como atribuir os parâmetros (ocorre o segundo erro). Alterar o ps.executeUpdate() não vai funcionar.
Entendi. Não seria de todo ruim testar o execute. Mas o erro está nesta string…
Eu vou tentar alterar o nome da tabela e das colunas para ver se isso influencia em alguma coisa. Hoje li sobre alguém que teve um erro parecido pelos nomes das tabelas e colunas que ele utilizou entrarem em conflito com nomenclaturas utilizadas pelo BD ou pelo provedor. Era com outro banco dados (não com o HSQLDB). Até tentei adotar a mesma solução, mas não funcionou comigo.
Isso mesmo! Não precisei nem alterar os campos para saber. Por “palavras reservadas” consegui encontrar esse link: As 1.226 palavras reservadas encontradas nos principais SGBD (SQL)
Que me levou até o arquivo Tokens.java e me fez encontrar a lista de palavras reservadas do HSQLDB. Não posso usar ROW e VALUE. Obrigado!
Será que tem como inserir uma palavra reservada com algum colchetes, aspas, aspas simples etc? Nesse tópico que li, um par de colchetes resolvia o problema. Tentei aqui e não deu certo. Tentei parênteses também e também não funcionou.