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 DisplayConsole prend un tableau de chaînes de caractères (String[]) en argument.
  • Elle utilise String.join pour 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 ResultSetTableDisplay utilise ResultSetMetaData pour obtenir des informations sur les colonnes du ResultSet.
  • Elle affiche d'abord les noms des colonnes, puis parcourt le ResultSet pour 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 resultSetToJson crée un JSONArray, qui représente une liste d'objets JSON.
  • Pour chaque ligne du ResultSet, un JSONObject est créé et rempli avec les données de la ligne, en utilisant les noms de colonnes comme clés.
  • Chaque JSONObject est ajouté au JSONArray.
  • La méthode retourne le JSONArray complet, 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.

Modifié le: lundi 13 novembre 2023, 08:01