0

Básicamente quiero conectar mi clase con un squema de MYSQL. Tengo el servidor levantado pero me tira NullPointerException, no se que pasa. Debe ser algún problema de versiones? Estoy usando MYSQL 8.

Mi clase conexión:

public class Conexion {

    private static final String url = "jdbc:mysql://localhost:3306/control_clientes?useSSL=false&useTimezone=true&serverTimezone=UTC";
    private static final String userName = "root";
    private static final String pass = "admin"; 

    public static Connection getConnection() throws SQLException {
        return DriverManager.getConnection(url, userName, pass);
    }

    public static void close(ResultSet rs) {
        try {
            rs.close();
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
    }

    public static void close(PreparedStatement p) {
        try {
            p.close();
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
    }

    public static void close(Connection conn) {
        try {
            conn.close();
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
    }
}

y mi clase ClienteDaoJDBC (Que es donde llamo a la conexión)

public class ClienteDaoJDBC {

    ArrayList<Cliente> clientes = new ArrayList<Cliente>();
    private final String SQL_SELECT = "SELECT idcliente, nombre, apellido, email, telefono, saldo FROM cliente";

    public ArrayList<Cliente> conseguirlistadoClientes() {

        PreparedStatement p = null;
        ResultSet rs = null;
        Connection conn = null;
        try {
            conn = Conexion.getConnection();
            p = conn.prepareStatement(SQL_SELECT);
            rs = p.executeQuery();

            while (rs.next()) {
                Cliente c = new Cliente(
                        rs.getInt("idcliente"), rs.getString("nombre"), rs.getString("apellido"), rs.getString("email"), rs.getString("telefono"), rs.getDouble("saldo"));
                clientes.add(c);
            }
        } catch (SQLException ex) {
            ex.printStackTrace(System.out);
        } finally {
            Conexion.close(conn);
            Conexion.close(rs);
            Conexion.close(p);
        }
        return clientes;
    }

ENTIENDO QUE NO SE ME ESTE CONECTANDO A LA BASE. NECESITO SABER POR QUE ME LO TRAE COMO NULL A LA CONEXIÓN.

Riaven
  • 3,379
  • 5
  • 14
  • 31
  • Posible duplicado de [¿Cuál es la solución a todos los errores NullPointerException presentes, pasados y futuros?](https://es.stackoverflow.com/questions/42977/cu%c3%a1l-es-la-soluci%c3%b3n-a-todos-los-errores-nullpointerexception-presentes-pasados) – BetaM Nov 11 '19 at 23:55

2 Answers2

3

Antes de DriverManager.getConnection(url, userName, pass); Te falta registrar el driver de MySQL

Class.forName("com.mysql.jdbc.Driver");

También posiblemente te falte el jar de mysql en tu proyecto.

abrahamhs
  • 3,376
  • 1
  • 16
  • 39
0

Para poder trabajar con MySQL en Java, primero se debe de añadir al proyecto la librería de MySQL JDBC Driver


A continuación se debe de crear en la clase conexión una nueva instancia de la clase que trae la librería anteriormente mencionada:

Class.forName("com.mysql.jdbc.Driver").newInstance();

Lo anterior crea una nueva instancia de la clase Driver que posee la librería de MySQL sin parámetros, esto permite poder comunicarse con la base de datos.

Una vez inicializada e instanciada, ya se puede crear la conexión con la base de datos, otorgando la url de la misma, el nombre de usuario y la pass del mismo.

DriverManager.getConnection(url, userName, pass);
Riaven
  • 3,379
  • 5
  • 14
  • 31