Estou tentando realizar uma consulta no Banco de Dados, porém está retornando o seguinte erro:
run:
java.lang.NullPointerException
Houve um erro:null
at com.br.ProgramaEmpresaPrincipal.ConexaoTeste.main(ConexaoTeste.java:14)
CONSTRUÍDO COM SUCESSO (tempo total: 0 segundos)
Com posso resolver o problema?
Código
import com.br.ProgramaEmpresaDao.ConexaoDb;
import java.sql.Statement;
public class ConexaoTeste {
public static void main (String[] args){
try{
Statement smtp = (Statement) ConexaoDb.con.createStatement();
String Consulta;
Consulta = "select nome from cliente";
smtp.executeUpdate(Consulta);
}catch(Exception ec){
ec.printStackTrace();
System.out.println("Houve um erro:" + ec.getMessage());
}
}
}
Há também uma confusão de conceitos ai, o método executeUpdate() serve para update, insert, delete, etc… para consultas você precisa usar o método executeQuery(), que irá retornar um ResultSet, alías, deixo um exemplo usando PreparedStatement, evite usar Statement…
Segue exemplo…
String Consulta = "select * from cliente";
PreparedStatement smtp = ConexaoDb.con.prepareStatement(Consulta);
ResultSet rs = smtp.executeQuery();
while (rs.next()) {
System.out.println("Coluna 1: " + rs.getString(0)); //por indice da coluna
System.out.println("Coluna 1: " + rs.getString("nome")); //por nome da coluna
}
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package com.br.ProgramaEmpresaDao;
/**
*
* @author romulo.barros
*/
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
public class ConexaoDb {
//Possibilita instancias
public static Connection con = null;
public static void Conectar() {
System.out.println("Conectando ao banco...");
try{
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/empresa","root","Admin12");
System.out.println("Conectado.");
}catch (ClassNotFoundException ex) {
System.out.println("Classe não encontrada, adicione o driver nas bibliotecas.");
Logger.getLogger(ConexaoDb.class.getName()).log(Level.SEVERE, null, ex);
}catch(SQLException e) {
System.out.println(e);
throw new RuntimeException(e);
}
}
}
Em nenhum ponto você chama o método Conectar(), por isso a conexão está nula…
É, do jeito que está, a qualquer momento sua conexão pode ficar null por estar pública e estática, enfim… sugiro fortemente você estudar uma outra forma de implementar seu connection…