Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
10
respostas

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

Eu fiz conforme exercício mas apareceu o seguinte erro no console, referente a linha do statement:

Conectado ao City Bank Exception in thread "main" java.sql.SQLSyntaxErrorException: user lacks privilege or object not found: CLIENTE 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 Jdbc.main(Jdbc.java:16) Caused by: org.hsqldb.HsqlException: user lacks privilege or object not found: CLIENTE at org.hsqldb.error.Error.error(Unknown Source) at org.hsqldb.error.Error.error(Unknown Source) at org.hsqldb.ParserDQL.readTableName(Unknown Source) at org.hsqldb.ParserDQL.readTableOrSubquery(Unknown Source) at org.hsqldb.ParserDQL.XreadTableReference(Unknown Source) at org.hsqldb.ParserDQL.XreadFromClause(Unknown Source) at org.hsqldb.ParserDQL.XreadTableExpression(Unknown Source) at org.hsqldb.ParserDQL.XreadQuerySpecification(Unknown Source) at org.hsqldb.ParserDQL.XreadSimpleTable(Unknown Source) at org.hsqldb.ParserDQL.XreadQueryPrimary(Unknown Source) at org.hsqldb.ParserDQL.XreadQueryTerm(Unknown Source) at org.hsqldb.ParserDQL.XreadQueryExpressionBody(Unknown Source) at org.hsqldb.ParserDQL.XreadQueryExpression(Unknown Source) at org.hsqldb.ParserDQL.compileCursorSpecification(Unknown Source) at org.hsqldb.ParserCommand.compilePart(Unknown Source) at org.hsqldb.ParserCommand.compileStatements(Unknown Source) at org.hsqldb.Session.executeDirectStatement(Unknown Source) at org.hsqldb.Session.execute(Unknown Source) ... 3 more

Meu Código Java é esse:

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

Connection connection = DriverManager.getConnection( "jdbc:hsqldb:hsql//localhost/city-bank", "SA", "");

System.err.println("Conectado ao City Bank");

Statement statement = connection.createStatement(); boolean execute = statement.execute("select * from cliente"); System.out.println(execute);

connection.close();

}

10 respostas

Bom dia Ederson ,

o primeiro erro é que não está encontrado a tabela "Cliente". existe essa tabela ?

também é necessário fechar o statement ao fim do código.

statement.close();
connection.close();

Sim, ela existe. Mas é com se o eclipse não estivesse encontrando -a. Coloquei o statement.close() e mesmo assim o erro persistiu. Se alguém do ALURA poder me ajudar agradeço.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
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/city-bank", "SA", "");
        PreparedStatement pst = connection.prepareStatement("select * from cliente");
        ResultSet rs = pst.executeQuery();
        while(rs.next()) {
            System.out.println(rs.getInt("retorne aqui os campos do seu banco, exemplo segue no modelo abaixo,"));
            System.out.println(rs.getString("id"));
            System.out.println(rs.getString("nome"));

            System.out.println("========= Fim da consulta =========");
        }
        connection.close();


    }
}

Obrigado pela ajuda, mas o erro persiste! ALGUÉM DA ALURA DISPONÍVEL???

Ederson, o HSQLDB é case sensitive, tente fazer as alterações no schema ou no código, e veja se resolve.

Tentei, mas não foi Douglas. Obrigado! ALGUM INSTRUTOR DO ALURA DISPONÍVEL?

solução!

Ederson ,

descobri o que está errado em seu código , erro na URL da conexão do banco de dados , está faltando ":"

segue seu código :

Connection connection = DriverManager.getConnection( "jdbc:hsqldb:hsql//localhost/city-bank", "SA", "");

URL correta :

Connection connection = DriverManager.getConnection( "jdbc:hsqldb:hsql://localhost/city-bank", "SA", "");

repare que depois da hsql vem um : para depois vir o //

alem disso é preciso realizar alteração no seu código , onde é preciso utilizar a classe ResultSet como o código abaixo e como o Felipe Mostrou na resposta acima , segue o código completo :

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

        Connection c = DriverManager.getConnection("jdbc:hsqldb:hsql://localhost/city-bank","SA","");
        System.out.println("Conexão aberta");

        Statement stm = c.createStatement();
        boolean resultado = stm.execute("SELECT * FROM Cliente");
        ResultSet rs = stm.getResultSet();

        while(rs.next()){
            int id = rs.getInt("id");
            String nome = rs.getString("nome");

            System.out.println(id);
            System.out.println(nome);

        }
        rs.close();
        stm.close();
        c.close();
    }

espero ter ajudado, Bons estudos .

Celso... Muito obrigado mesmo cara, de coração. Deu certo! Um erro besta e por falta d eatenção, mas vale como experiência. Muito obrigado, Deus te abençoe.

Ederson ,

fiquei testando aqui e não encontrava o erro , mas depois que percebi .

fico feliz que conseguiu resolver o problema .

Bons estudos

Valeu cara!