Erro ao utilizar PreparedStatement

Boa tarde galera!

Seguinte, estou tentando utilizar o PreparedStatement para efetuar a contagem de registros numa tabela do banco de dados, porém quando execute o código abaixo ele dá um erro. Ao debugar, notei que o erro está na linha que estou atribuindo ao PreparedStatement (this.pst) o prepareStatement.

O servidor retorna isso:
“SEVERE: Servlet.service() for servlet jsp threw exception java.lang.NullPointerException”

Alguém pode me ajudar?

Grato pela atenção!

[code]public int count() {
int lines = 0;

try {
    this.mysql.connect();
		
    this.pst = this.con.prepareStatement("SELECT count(*) AS count FROM customer;");
		
    this.rs = this.pst.executeQuery();
    this.rs.next();
		
    lines = this.rs.getInt("count");
		
    this.pst.close();
    this.rs.close();
} catch (SQLException e) {
    e.printStackTrace();
} finally {
    this.mysql.disconnect();
}
	
return lines;

}[/code]

Tenta tirar o ; ao final da sql, e também ao invés de getInt(“count”), tente getInt(1)

Já tentei, o erro continua! Sei que a conexão com o banco de dados está ok, pois efetuo outras ações no banco de dados, via Java, e funcionam tranquilamente. Somente quando utilizo PreparedStatement dá erro. Quando uso o Statement vai certinho :expressionless:

Mais alguma sugestão?

Grato!

O stacktrace não retorna a linha onde foi o exceção? Tente também fechar o result set antes do prepared statement.

Retorna sim, e é exatamente a mesma linha que encontrei no debug, a de atribuição do prepareStatement ao PreparedStatement!

this.pst = this.con.prepareStatement("SELECT count(*) AS count FROM customer;");

PS: Inverti a posição dos “close()” e o erro persiste =\

Grato pela atenção

Mostra o código de conexão, que atribui à esse objeto con o Connection com o MySQL… provavelmente tá lá o problema…

Na realidade o problema não está na conexão, pois ao executar comandos através do Statement, usando a mesma conexão, funciona tranquilamente. Mas pra desencargo de consciência:

MySQL.java

[code]public void connect() {
try {
String serverString = “jdbc:mysql://” + this.server + “/” + this.databaseName;

	Class.forName(this.driver);
	this.connection = DriverManager.getConnection(serverString, this.user, this.password);
} catch (SQLException e) {
	e.printStackTrace();
} catch (ClassNotFoundException e) {
	e.printStackTrace();
}

}

public Connection getConnection() {
return this.connection;
}

public void setConnection(Connection connection) {
this.connection = connection;
}[/code]

Database.java

[code]private Connection con;

public Database() {
this.mysql = new MySQL();
this.con = this.mysql.getConnection();
}
[/code]

Até mais!

Tenta o seguinte, antes do mysql.getConnection() da classe Database, tenta mysql.connect() e depois mysql.getConnection()…

Putz, que mancada! hehhehe

Brigadão velho, o problema era esse mesmo…

Atribuir o valor da conexão antes de chamá-la não dá!

Valeu galera, brigadão pela ajuda!

Pra ficar show de bola, no construtor da classe MySQL, já chama o connect()… :wink:

É, acho que é melhor! hehehee

Até mais