Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

Erro ao conectar no hsql

Estou fazendo o curso de Java e JDBC e no primeiro exercício dá a seguinte mensagem:

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)

Segui os passo corretamente, criei a tabela Produto no HSQL Database Manager , usei o prompt como adm conforme vi em um post de um fórum da Alura, mas não adiantou.

Segue meu código:

package br.com.caelum.jdbc;

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

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();
        resultSet.next();
        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();
        connection.close();
    }

}
6 respostas

Fala Adalberto, tudo bem?

Pelo erro que você reportou o JDBC não está encontrando a entidade PRODUTO no seu banco de dados.

Você chegou a criar a tabela PRODUTOS pelo cmd?

CREATE TABLE Produto (
    id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, 
    nome VARCHAR(255), 
    descricao VARCHAR(255)
)

Fala Otávio, tudo bem! Eu criei a tabela Produto no HSQL Database Manager, conforme o curso

Alberto criou a tabela produto tudo em maiúsculo ou seguiu a nomenclatura certa? Produto pq em alguns sistemas operacionais faz diferenças letras maiúsculas e minúsculas, como por exemplo Ubuntu

Fiz este teste também Michel. Estava com o P maiúsculo daí no código fiz a chamada com o P maiúsculo

Adalberto faz um teste?

Da um system.out.println na varivel resutado.

system.out.println(resultado);

o valor ta true ou false?

solução

Dá true... Consegui resolver aqui... refiz todo o curso a partir do início. e instalei novamente o hsqldb.jar. Não deu mais erro. Obrigado a todos pela ajuda!