webentwicklung-frage-antwort-db.com.de

Java - So erhalten Sie den Spaltennamen in der Ergebnismenge

Hallo ich versuche einen fehler zu machen, wenn es keinen passenden schüler gibt ... Und es wird so angezeigt No matching records found und ich will den spaltennamen immer noch den gleichen aber immer noch nicht herausfinden ... jemand sagt mir, ob das stimmt?

Hier ist meine Funktion dafür ... und ich füge dort einen Kommentar hinzu, wo ich den Fehler eingebe ... aber ich weiß nicht, wie man den Spaltennamen erhält

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());
        }
    }

Ich versuche es so, gab mir aber NULL !!! Dieser Code befindet sich unterhalb von 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

Versuche dies.

      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++;

      }

Da hier erwartet wird, dass Sie den Spaltenalias anstelle des Spaltennamens erhalten, müssen Sie ResultSetMetaData.getColumnLabel anstelle von ResultSetmetaData.getColumnName verwenden.

4
Ashok kumar

Holen Sie sich ResultSetMetaData mit ResultSet#getMetaData() :

ResultSetMetaData meta = rs.getMetaData();

Und dann den Spaltennamen der 1. Spalte zu erhalten:

String col1Name = meta.getColumnLabel(1);

Ähnlich, um den Spaltennamen der 2. Spalte abzurufen:

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

Holen Sie sich die Metadaten

ResultSetMetaData metaData = rs.getMetaData();

Dann können Sie tun:

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

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

und den Abfrageparameter nicht verketten!

0
kristu