Solucionado (ver solução)
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!