Dúvida HSQLDB

5 respostas
skalinichenko

Boa tarde pessoal,

Faz pouco tempo, que comecei a utilizar este banco, o HSQLDB.
Desenvolvo com Oracle e MSSQL, mas devido ser apenas para teste, preferi utilizar um menor, mais fácil de configurar Pool e etc.
O problema que está apresentando, é quando tento inserir dados no mesmo!
Abro a conexão normalmente, mas seja qual for o comando SQL que eu faça (SELECT, INSERT, DELETE…), é apresentado a seguinte StackTrace:

java.sql.SQLException: Table not found in statement [INSERT INTO USUARIOS(NOME,ENDERECO,EMAIL) VALUES(?,?,?)] at org.hsqldb.jdbc.Util.throwError(Unknown Source) at org.hsqldb.jdbc.jdbcPreparedStatement.<init>(Unknown Source) at org.hsqldb.jdbc.jdbcConnection.prepareStatement(Unknown Source) at br.marcelo.banco.ConnectionFactory.insereDados(ConnectionFactory.java:65) at br.marcelo.testes.Home.main(Home.java:10)

Lógico, que não precisa ser um DBA para ver que a StackTrace diz que a tabela informada na sentença, não foi encontrada. Mas acredite, a tabela existe no banco!
A versão do HSQLDB que estou utilizando, é a 1.8.0.10.
Alguém sabe se tem bug na versão, ou alguma coisa de errado?
Se quiserem, posso passar o código da classe seguindo o Design Pattern Singleton, que utilizo também para outros bancos!

Att,
Marcelo

5 Respostas

Shelson

ela eh uma tabela temporaria ?

skalinichenko

Não…
Permanente!
Utiliza a mesma estrutura deste banco, para outro SGBD.

Marcelo_FS

Você tem certeza que está utilizando a mesma base no programa e pra verificar que as tabelas existem?

Uso o HSQLDB também, e ele tem algumas peculiaridades quanto ao caminho usado: é sempre relativo ao diretório de onde você está chamando.

Na dúvida, eu mandaria seu programa criar a base via código mesmo… se a tabela já existir ele vai lançar uma SLQException, caso contrário, cria…

skalinichenko

MarceloS:
Você tem certeza que está utilizando a mesma base no programa e pra verificar que as tabelas existem?

Uso o HSQLDB também, e ele tem algumas peculiaridades quanto ao caminho usado: é sempre relativo ao diretório de onde você está chamando.

Na dúvida, eu mandaria seu programa criar a base via código mesmo… se a tabela já existir ele vai lançar uma SLQException, caso contrário, cria…

Tenho certeza, que estou utilizando a mesma base…
A conexão abre e fecha normalmente. Até para fechar a mesma, estou utilizando um método com um comando próprio do HSQLDB e funciona!

public void shutdown() throws SQLException { Statement st = conn.createStatement(); st.execute("SHUTDOWN"); conn.close(); }
Referência: Hsqldb User Guide, Appendix B

Como nunca o usei, desconheço algumas das suas peculiaridades :?
Vou tentar o que você sugeriu e ver no que vai dar.
Vlw!

Marcelo_FS

Bem, abrir/fechar/executar comandos não significa que seja a mesma… ele permite que você acesse qualquer pasta e, se não existir uma base lá, ele cria… é o único motivo que eu consigo ver para ele não encontrar suas tabelas :slight_smile:

Criado 17 de dezembro de 2008
Ultima resposta 19 de dez. de 2008
Respostas 5
Participantes 3