Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Dúvida no Ex. 2 da Aula 1 - Trabalhando com um banco de dados

Prezados, estou com um problema no exercício 2. Executei o processo de servidor de banco de dados hsql com sucesso via terminal. No client executei as linhas com comandos sql com sucesso e ao executar o "select * from Produto" vejo as linhas retornando também com sucesso.

O problema que ao executar a classe via Eclipse:

package br.com.caelum.jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class TestaListagem {

    public static void main(String[] args) throws SQLException {

        Connection connection = DriverManager.getConnection(
                "jdbc:hsqldb:hsql://localhost/loja-virtual", "SA", "");
        Statement statement = connection.createStatement();
        boolean resultado = statement.execute("select * from Produto");
        ResultSet resultSet = statement.getResultSet();
        while (resultSet.next()) {
            int id = resultSet.getInt("id");
            String nome = resultSet.getString("nome");
            String descricao = resultSet.getString("descricao");
            System.out.println(id);
            System.out.println(nome);
            System.out.println(descricao);
        }
        resultSet.close();
        statement.close();
    }

}

Ocorre a exception:

Exception in thread "main" java.sql.SQLSyntaxErrorException: user lacks privilege or object not found: PRODUTO at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source) at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source) at org.hsqldb.jdbc.JDBCStatement.fetchResult(Unknown Source) at org.hsqldb.jdbc.JDBCStatement.execute(Unknown Source) at br.com.caelum.jdbc.TestaListagem.main(TestaListagem.java:16)

O problema é que tenho certeza que a tabela Produto existe, poque consigo ver os resultados pelo client do hsql. Podem me ajudar?

Obrigado.

4 respostas

Paulo,

o nome da tabela Produto é com P maiúsculo mesmo

verifica exatamente qual o nome da tabela e coloque na query .

outra coisa , feche o connection ao fim do código .

resultSet.close();
        statement.close();
connection.close();
solução!

Celso, primeiramente obrigado. Verifiquei que no utilitário org.hsqldb.util.DatabaseManager a opção Type estava selecionada como servidor em memória (In-Memory) sendo que o correto é Engine Server. Os inserts criados por mim só estavam em memória, quando a execução via eclipse ocorria ele procurava no padrão Server (jdbc:hsqldb:hsql://localhost/loja-virtual) e por isso não encontrava a tabela Produto. Somente troquei o type e executei os inserts novamente.

Mais uma vez obrigado pela ajuda!

Att.

Paulo ,

que bom que resolveu . obrigado pela explicação assim também fico conhecendo o tipo de erro .

estarei fechando o tópico .