web-dev-qa-db-fra.com

Imprimer les données dans ResultSet avec les noms de colonnes

Je récupère les noms de colonnes d'une base de données SQL via Java. Je sais que je peux aussi récupérer les noms de colonnes de ResultSet. J'ai donc cette requête SQL

 select column_name from information_schema.columns where table_name='suppliers'

Le problème est que je ne sais pas comment obtenir les noms de colonne de ResultSet et mon code est

public void getAllColumnNames() throws Exception{

String sql = "SELECT column_name from information_schema.columns where table_name='suppliers'";

PreparedStatement ps = connection.prepareStatement(sql);
ResultSet rs = ps.executeQuery(sql);
 // extract values from rs


}
25
user1hjgjhgjhggjhg
ResultSet resultSet = statement.executeQuery("SELECT * from foo");
ResultSetMetaData rsmd = resultSet.getMetaData();
int columnsNumber = rsmd.getColumnCount();
while (resultSet.next()) {
    for (int i = 1; i <= columnsNumber; i++) {
        if (i > 1) System.out.print(",  ");
        String columnValue = resultSet.getString(i);
        System.out.print(columnValue + " " + rsmd.getColumnName(i));
    }
    System.out.println("");
}

Référence: Impression du résultat de ResultSet

62
Zeb

1) Au lieu de PreparedStatement utiliser Statement

2) Après l'exécution de la requête dans ResultSet, extrayez les valeurs à l'aide de rs.getString() en tant que:

Statement st=cn.createStatement();
ResultSet rs=st.executeQuery(sql);
while(rs.next())
{
    rs.getString(1); //or rs.getString("column name");
}
8
Java Enthusiast

utiliser en outre comme

rs.getString(1);
rs.getInt(2);

1, 2 est le numéro de colonne de la table et de l'ensemble int ou string selon le type de données de coloumn

3
swapnil gandhi

Regardez la documentation . Vous avez commis les erreurs suivantes. Tout d'abord, ps.executeQuery() n'a pas de paramètre. Au lieu de cela, vous avez passé la requête SQL.

Deuxièmement, en ce qui concerne la déclaration préparée, vous devez utiliser le ? symbole si vous souhaitez transmettre des paramètres. Et plus tard le lier en utilisant

setXXX(index, value) 

Ici xxx représente le type de données.

1
Ysr Shk

Pour ce que vous essayez de faire, vous pouvez utiliser PreparedStatement au lieu de Statement. Votre code peut être modifié

String sql = "SELECT column_name from information_schema.columns where table_name='suppliers';";

Statement s  = connection.createStatement();
ResultSet rs = s.executeQuery(sql);

J'espère que cela t'aides.

0
Pranav