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 
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()… 
É, acho que é melhor! hehehee
Até mais