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

erro ao usar Pool

quando tento me conectar ao banco usando um pool de conexão ele da um erro de null point exception, quando uso da forma convencional funciona normalmente, segue o código.

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

import javax.sql.DataSource;

import org.hsqldb.jdbc.JDBCPool;

public class DataBase {

    private DataSource dataSource;

     DataBase() {
        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;
    }

}

caso eu descente a linha de cima e comente a de baixo tudo funciona normalmente, onde está o erro?

8 respostas

Ramires, Bom dia !

a classe Database está dentro do pacote jdbc ?

pois é preciso estar junto no pacote , e pelo que vi não está em nenhum pacote

package br.com.caelum.jdbc;

Celso, Bom dia!

Estava no pacote padrão, mas eu criei um novo pacote como você recomendou, e mesmo assim o erro persiste.

package br.com.BancoDeDados.jdbc; 
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

import javax.sql.DataSource;

import org.hsqldb.jdbc.JDBCPool;

public class DataBase {

    private DataSource dataSource;

     DataBase() {
        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;
    }

}

ele aparece alguma mensagem de erro ?

se aparece poste a mensagem de erro ! só para analisar o que está acontecendo .

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.BancoDeDados.jdbc.DataBase.getConnection(DataBase.java:24)
    at br.com.BancoDeDados.jdbc.TestaDB.main(TestaDB.java:25)

linha 24 é Connection connection = dataSource.getConnection();

solução!

Ramires,

seguinte o erro esta na seguinte linha :

pool.setURL("jdbc:hsqldb:hsql://localhost/loja-virtual");

onde na verdade é :

pool.setUrl("jdbc:hsqldb:hsql://localhost/loja-virtual");

somente o U é maiúsculo .

espero ter ajudado , Bons estudos

Corretíssimo Celso, muito Obrigado, mas para que seria o método serURL? com tudo maiúsculo ?

Ramires,

olha procurei no javadoc sobre o método setURL e não encontrei nada a respeito .

não sei para que serve esse método não

ta ok, muito obrigado.