Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
7
respuestas

Statement Cannot be resolved to e type

Este es mi código:

public List<?> listar() throws SQLException { Connection conn = DriverManager.getConnection( "jdbc:mysql://localhost/control_de_stock?useTimeZone=true&serverTimeZone=UTC", "root", "**");

*ESTE ES El STATEMENT QUE ME DA ERROR * Statement statement = conn.createStatement();

    boolean result  = statement.execute("SELECT id, nombre,descripcion, cantidad FROM PRODUCTO");
    System.out.println(result);
    conn.close();    
    return new ArrayList<>();
}

Exception in thread "main" java.lang.Error: Unresolved compilation problem: Statement cannot be resolved to a type

7 respuestas

Lo resolví usando en lugar de " Statement statement = conn.createStatement();" usé "PreparedStatement statement = conn.prepareStatement(sql); "

public List<?> listar() throws SQLException { Connection conn = DriverManager.getConnection( "jdbc:mysql://localhost/control_de_stock?useTimeZone=true&serverTimeZone=UTC", "root", "*");

//    Statement statement = conn.createStatement();

    String sql = "SELECT id, nombre,descripcion, cantidad FROM PRODUCTO";

    PreparedStatement statement = conn.prepareStatement(sql);

    boolean result  = statement.execute(sql);

    System.out.println(result);
    conn.close();        
    return new ArrayList<>();
}

Esto está bien? porqué no funciona como lo indica el Profesor y así si?

Al final, el profe usa la interface PreparedStatement. Segun explica es mejor asi. El empiece con lo basico y enseña muchas veces con la forma menos recomendable para que entendamos mejor los contras y podamos apreciar mejor los pros.

Hola Stevenson, entiendo la metodología de enseñanza, lo que no entiendo es porqué me da error el Eclipse y no compila al ponerlo como él lo hace, en la metodología quisas menos recomendable. Saludos y gracias por tu respuesta.

Comparte la clase completa

Esta es la clase:

public List<Map<String,String>> listar() throws SQLException {

    Connection conn = DriverManager.getConnection(
            "jdbc:mysql://localhost/control_de_stock?useTimeZone=true&serverTimeZone=UTC", "root", "marilin55");
//para poblar la tabla uso un comando select, que en java son Statement    
//    Statement statement = conn.createStatement();

    String sql = "SELECT id, nombre,descripcion, cantidad FROM PRODUCTO";
    PreparedStatement statement = conn.prepareStatement(sql);
//este statement me permite ejecutar el Query

    boolean result  = statement.execute(sql); //Esto es para saber si tengo una lista -devuelve un boolean para indicar que es listado V o  F

    ResultSet resultset = statement.getResultSet();

 List<Map<String,String>> resultado = new ArrayList<>();

    //recorro resulset con next

    while (resultset.next()) {
        Map<String,String> fila = new HashMap<>();
        fila.put("id", String.valueOf(resultset.getInt("ID")));
        fila.put("nombre", resultset.getString("nombre"));
        fila.put("descripcion", resultset.getString("descripcion"));
        fila.put("cantidad", String.valueOf(resultset.getInt("cantidad")));

        resultado.add(fila);
    }

    conn.close();        
    return resultado;
}

Hola Marina! Compartiste la version que funciona, parece. Yo esperaba ver la que no funciona (sin PreparedStatement).

Le puse la // (doble barra) para que no de error. y abajo la PreparedStatement, es exactamente la misma clase, no me deja no escribir Statement statemenr = conn.createStatement(); porque da error

// Statement statement = conn.createStatement();

String sql = "SELECT id, nombre,descripcion, cantidad FROM PRODUCTO";
PreparedStatement statement = conn.prepareStatement(sql);