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

Dúvida no Ex. 3 da Aula 5 - Connection Pool e Datasources

quando tento executar a classe Testa Listagem recebo o erro abaixo: Exception in thread "main" java.lang.NullPointerException at org.hsqldb.DatabaseURL.parseURL(Unknown Source) at org.hsqldb.jdbc.JDBCDriver.getConnection(Unknown Source) at org.hsqldb.jdbc.pool.JDBCPooledDataSource.getPooledConnection(Unknown Source) at org.hsqldb.jdbc.JDBCPool.getConnection(Unknown Source) at br.com.raquelzinha.jdbc.ConnectionPool.getConnection(ConnectionPool.java:27) at br.com.raquelzinha.jdbc.TestaListagem.main(TestaListagem.java:15)

Código:


package br.com.raquelzinha.jdbc;

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

public class TestaListagem {


    public static void main(String[] args) throws SQLException{
        ConnectionPool database = new ConnectionPool();

        for(int i = 0; i<100; i++){
            Connection connection = database.getConnection();

            Statement statement = connection.createStatement();
            boolean resultado = statement.execute("select * from Produto");
            ResultSet resultSet = statement.getResultSet();

            while (resultSet.next() == true)
            {
                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();
        }
    }




}
5 respostas

Olá Raquel! Você poderia enviar a sua classe ConnectionPool para eu dar uma olhada? Ao que parece o erro está nela.

Raquel, quando cria esse objeto ConnectionPool database = new ConnectionPool();

o database fica nulo, dai quando vc chamar qualquer método dele vai te estourar um nullpointer, ve a construção desse ConnectionPool se realmente gera o objeto corretamente com o método getConnection te devolvendo uma conexão

Essa é a minha classe connectionPool. Pelo que vi no vídeo parece estar igual a que foi feita:

package br.com.raquelzinha.jdbc;

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

import javax.sql.DataSource;

import org.hsqldb.jdbc.JDBCPool;

public class ConnectionPool {

    private DataSource dataSource;

    ConnectionPool(){
        JDBCPool pool = new JDBCPool();
        pool.setURL("jdbc:hsqldb:hsql://localhost/loja-virtual");
        pool.setUser("SA");
        pool.setPassword("");
        this.dataSource = pool;
    }

    Connection getConnection() throws SQLException {
//        Connection connection = 
    //            DriverManager.getConnection("jdbc:hsqldb:hsql://localhost/loja-virtual", "SA", "");

        Connection connection = dataSource.getConnection();
        return connection;
    }

}
solução!

Oi Raquel, tudo bem?

Tente usar o método setUrl em vez de setURL durante a construção do DataSource:

ConnectionPool(){
        JDBCPool pool = new JDBCPool();
        pool.setUrl("jdbc:hsqldb:hsql://localhost/loja-virtual");
        pool.setUser("SA");
        pool.setPassword("");
        this.dataSource = pool;
    }

Abraços!

Ah agora funcionou! Obrigada!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software