Correction EX05 DisplayConsole string[]
Pour créer une méthode DisplayConsole qui peut s'adapter au nombre de champs à afficher, vous pouvez utiliser une liste ou un tableau de chaînes de caractères (String[] ou List<String>) comme argument. Cette méthode concaténera les éléments de la liste ou du tableau pour former une chaîne de caractères unique, que vous pourrez ensuite afficher avec System.out.println.
Voici un exemple d'implémentation en utilisant un tableau de chaînes de caractères (String[])
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
// Exemple d'utilisation
String[] data1 = {"Nom: John", "Poids_moyen: 70"};
DisplayConsole(data1);
String[] data2 = {"Nom: Jane", "Poids_moyen: 65", "Couleur_id: 3"};
DisplayConsole(data2);
}
private static void DisplayConsole(String[] data) {
String result = String.join(", ", data);
System.out.println(result);
}
}
- La méthode
DisplayConsoleprend un tableau de chaînes de caractères (String[]) en argument. - Elle utilise
String.joinpour concaténer les éléments du tableau avec une virgule et un espace comme séparateurs. - Ensuite, elle affiche le résultat avec
System.out.println.
Cette méthode est flexible et peut gérer n'importe quel nombre de champs. Vous pouvez passer un tableau avec autant d'éléments que nécessaire, et la méthode les concaténera et les affichera correctement.
Créer une Class pour afficher les résultats dans la console
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
public class ResultSetTableDisplay {
public static void display(ResultSet resultSet) throws SQLException {
ResultSetMetaData metaData = resultSet.getMetaData();
int columnCount = metaData.getColumnCount();
// Affichage des en-têtes de colonnes
for (int i = 1; i <= columnCount; i++) {
if (i > 1) System.out.print(", ");
System.out.print(metaData.getColumnName(i));
}
System.out.println();
// Affichage des lignes de données
while (resultSet.next()) {
for (int i = 1; i <= columnCount; i++) {
if (i > 1) System.out.print(", ");
System.out.print(resultSet.getString(i));
}
System.out.println();
}
}
}
Utilisation :
Pour utiliser cette classe, vous devez simplement passer un ResultSet à la méthode display après avoir exécuté votre requête SQL. Par exemple :
public class Main {
public static void main(String[] args) {
// ... (initialisation de la connexion et exécution de la requête)
ResultSet resultSet = statement.executeQuery("SELECT * FROM votre_table");
try {
ResultSetTableDisplay.display(resultSet);
} catch (SQLException e) {
e.printStackTrace();
}
}
}
Explications :
- La classe
ResultSetTableDisplayutiliseResultSetMetaDatapour obtenir des informations sur les colonnes duResultSet. - Elle affiche d'abord les noms des colonnes, puis parcourt le
ResultSetpour afficher chaque ligne de données. - Les données sont séparées par des virgules pour une lisibilité simple, mais vous pouvez ajuster le formatage selon vos besoins.
Cette approche vous permet d'afficher les résultats de n'importe quelle requête SQL sous forme de tableau de manière générique, sans avoir à écrire un code d'affichage spécifique pour chaque requête.
Ajout d'une méthode pour retuner du JSON
Convertir les données d'un ResultSet en JSON, vous pouvez créer une méthode supplémentaire dans la classe ResultSetTableDisplay. Cette méthode parcourra le ResultSet et utilisera une bibliothèque de manipulation JSON comme org.json pour construire un tableau JSON représentant les données. Voici comment vous pourriez procéder :
D'abord, assurez-vous d'inclure la dépendance org.json dans votre projet. Si vous utilisez Maven, ajoutez ceci à votre fichier pom.xml : click droit "Add Starter"
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20210307</version>
</dependency>
Ensuite, ajoutez la méthode suivante à votre classe ResultSetTableDisplay :
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import org.json.JSONArray;
import org.json.JSONObject;
public class ResultSetTableDisplay {
// ... (autres méthodes)
public static JSONArray resultSetToJson(ResultSet resultSet) throws SQLException {
JSONArray jsonArray = new JSONArray();
ResultSetMetaData metaData = resultSet.getMetaData();
int columnCount = metaData.getColumnCount();
while (resultSet.next()) {
JSONObject obj = new JSONObject();
for (int i = 1; i <= columnCount; i++) {
String columnName = metaData.getColumnName(i);
Object value = resultSet.getObject(i);
obj.put(columnName, value);
}
jsonArray.put(obj);
}
return jsonArray;
}
}
Utilisation :
Pour utiliser cette méthode, vous pouvez faire quelque chose comme ceci :
public class Main {
public static void main(String[] args) {
// ... (initialisation de la connexion et exécution de la requête)
ResultSet resultSet = statement.executeQuery("SELECT * FROM votre_table");
try {
JSONArray json = ResultSetTableDisplay.resultSetToJson(resultSet);
System.out.println(json.toString(2)); // Affichage formaté du JSON
} catch (SQLException e) {
e.printStackTrace();
}
}
}
Explications :
- La méthode
resultSetToJsoncrée unJSONArray, qui représente une liste d'objets JSON. - Pour chaque ligne du
ResultSet, unJSONObjectest créé et rempli avec les données de la ligne, en utilisant les noms de colonnes comme clés. - Chaque
JSONObjectest ajouté auJSONArray. - La méthode retourne le
JSONArraycomplet, qui peut être converti en chaîne de caractères JSON pour l'affichage ou d'autres utilisations.
Cette approche vous permet de convertir facilement les résultats de n'importe quelle requête SQL en JSON.