Consultas SQL con ‘IN’ en Java o Groovy:
En Java:
1. Consulta básica con ‘IN’:
“`java
String[] ids = {“1”, “3”, “5”};
String sqlQuery = “SELECT * FROM tabla WHERE id IN (” + String.join(“,”, ids) + “)”;
“`
2. Consulta parametrizada con ‘IN’:
“`java
List ids = Arrays.asList(“1”, “3”, “5”);
String sqlQuery = “SELECT * FROM tabla WHERE id IN (” + String.join(“,”, Collections.nCopies(ids.size(), “?”)) + “)”;
PreparedStatement statement = connection.prepareStatement(sqlQuery);
for (int i = 0; i < ids.size(); i++) {
statement.setString(i + 1, ids.get(i));
}
ResultSet resultSet = statement.executeQuery();
```
En Groovy:
1. Consulta básica con 'IN':
```groovy
def ids = ["1", "3", "5"]
def sqlQuery = "SELECT * FROM tabla WHERE id IN (${ids.join(',')})"
```
2. Consulta parametrizada con 'IN':
```groovy
def ids = ["1", "3", "5"]
def sqlQuery = "SELECT * FROM tabla WHERE id IN (${ids.collect{ '?' }.join(',')})"
def preparedStatement = connection.prepareStatement(sqlQuery)
ids.eachWithIndex { id, index ->
preparedStatement.setString(index + 1, id)
}
def resultSet = preparedStatement.executeQuery()
“`
Recuerda que debes reemplazar “tabla” con el nombre real de la tabla en tu base de datos y establecer la conexión adecuada antes de ejecutar las consultas.
He escrito una consulta SQL:
select sum(amount) as totalAmount
from employee_account
where id = 29967
and repayment_status in ("MARKEDPAID", "PAID", "PENDING", "OVERDUE");
Esta consulta funciona bien en la consola de MySQL. Tengo que ejecutar esta consulta en Java usando:
String query = "";
int id = 123;
Connection connection = // código de conexión
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(query);
Escribo la consulta:
query = "select sum(amount) as totalAmount from employee_account where id = " + id + " and repayment_status in ";
¿Cómo paso "MARKEDPAID", "PAID", "PENDING", "OVERDUE"
en la consulta de cadena anterior?
davy.ai
Para pasar los valores
MARKEDPAID, PAID, PENDING, OVERDUE
en la cadena de consulta, puedes utilizar una declaración preparada y establecer los valores de los parámetros en la consulta SQL. Aquí tienes un ejemplo de fragmento de código:En este fragmento de código,
?
se utiliza como marcador de posición para los parámetros en la consulta SQL. Los valores se establecen utilizando los métodosps.setInt
yps.setString
, que corresponden al índice del parámetro y al valor, respectivamente. Eli+2
en el métodops.setString
se utiliza para establecer el índice del parámetro a partir de 2 porque el primer parámetro ya se utiliza para elid
.