web-dev-qa-db-fra.com

Java - Comment obtenir le nom de la colonne dans le jeu de résultats

Bonjour, j'essaie de faire une erreur lorsqu'il n'y a pas d'élève correspondant .... et qu'il s'affichera comme ceci No matching records found et que je veux que le nom de la colonne soit toujours le même mais ne le sache toujours pas ... peut Quelqu'un me dit si c'est correct ??

Voici ma fonction pour cela ... et j'ajoute un commentaire là où j'ai mis l'erreur ... mais je ne sais pas comment obtenir le nom de la colonne

public void SearchTableStudent() {
        String tempSearchValue = searchStudent.getText().trim();
        boolean empty = true;
        sql = "SELECT student_id as 'Student ID',"
                + "concat(lastname, '  ,  ', firstname, ' ', middlename) as 'Name'"
                + "FROM user "
                + "WHERE CAST(student_id as CHAR) LIKE '%" + tempSearchValue + "%'";
        try {
            pst = conn.prepareStatement(sql);
            rs = pst.executeQuery();
            while(rs.next()) {
                table.setModel(DbUtils.resultSetToTableModel(rs));
                empty = false;
            }
            if(empty) {
                String error = "";
                table.setModel(new javax.swing.table.DefaultTableModel(
                    new Object [][] {
                        {"No matching records found",null}
                    },
                    new String [] {
     /** I WANT TO PUT THE SAME COLUMN NAME ON MY DATABASE SELECTED BUT DON't Know
 WHAT FUNCTION TO DO*/
                    }
                ));
            }
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, e.getMessage());
        }
    }

J'essaie comme ça mais m'a quand même donné la valeur NULL !!! ce code est en dessous de empty = false;

for(int i=0; i<table.getColumnCount(); i++) {
    test[i] = table.getColumnName(i);
}
11
JeraldPunx
ResultSetMetaData metaData = resultSet.getMetaData();
int count = metaData.getColumnCount(); //number of column
String columnName[] = new String[count];

for (int i = 1; i <= count; i++)
{
   columnName[i-1] = metaData.getColumnLabel(i);
   System.out.println(columnName[i-1]);
}
28
Prabhakaran

Essaye ça.

      ResultSetMetaData meta = resultset.getMetaData(); 

      Integer columncount = meta.getColumnCount();

      int count = 1 ; // start counting from 1 always

      String[] columnNames = new String[columncount];

      while(count<=columncount){

         columnNames [count-1] = meta.getColumnLabel(count);
         count++;

      }

Puisque vous vous attendez ici à obtenir l'alias des colonnes au lieu du nom de la colonne, vous devez utiliser ResultSetMetaData.getColumnLabel au lieu de ResultSetmetaData.getColumnName.

4
Ashok kumar

Obtenir ResultSetMetaData using ResultSet#getMetaData() :

ResultSetMetaData meta = rs.getMetaData();

Et puis pour obtenir le nom de colonne de la 1ère colonne:

String col1Name = meta.getColumnLabel(1);

De même pour obtenir le nom de colonne de la 2ème colonne:

String col2Name = meta.getColumnLabel(2);
2
anubhava

Obtenir les métadonnées

ResultSetMetaData metaData = rs.getMetaData();

Ensuite, vous pouvez faire:

String columnName = metaData.getColumnName(int index);
0
ppeterka

rs.getMetaData().getColumnName(int i);

et ne pas concatter le paramètre de requête!

0
kristu