Acá dejo mi version del código que realiza la consulta con filtros a una Base MariaDB.
import java.sql.*;
public class GuitarJDBC {
static final String driver = "com.mysql.cj.jdbc.Driver";
static final String url = "jdbc:mysql://localhost:3306/GUITARS_SAMPLE";
static final String user = "DB_ADMIN";
static final String pass = "Mariadb";
static final String query = "select Id, Name from guitar where IsPremium = (select IsPremium from client where Id=?)";
public static void executeQuery(String IdUser) {
try {
Class.forName(driver);
Connection connection = DriverManager.getConnection(url, user, pass);
PreparedStatement preparedStatement = connection.prepareStatement(query);
preparedStatement.setString(1, IdUser);
ResultSet resultSet = preparedStatement.executeQuery();
while (resultSet.next()) {
int id = resultSet.getInt("Id");
String name = resultSet.getString("Name");
System.out.println("ID: " + id + " NAME: " + name);
}
resultSet.close();
preparedStatement.close();
connection.close();
} catch (SQLException | ClassNotFoundException e) {
e.printStackTrace();
}
}
}
El elemento especificamente que utilicé para la consulta con filtros fué: preparedStatement.setString(1, IdUser); el que me permitió enviar el parametro que se reemplaza por el signo ? en el query: select Id, Name from guitar where IsPremium = (select IsPremium from client where Id=?)
La ejecución de la clase se realiza con la linea: GuitarJDBC.executeQuery(“44”); el numero 44 es el Id de un cliente premium, y el 11 es el de uno no premium.
Acá dejo también el script de la BD con la info de prueba: sqlFile
¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.