Java – 如何在结果集上获取列名

你好,我试图在没有匹配的学生时发生错误……它会显示如下No matching records found ,我希望列名仍然相同,但仍然没有弄清楚……可以告诉一下我,如果这是对的?

inheritance人我的function…我在那里添加评论,我把错误…但我不知道如何获得列名

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

我尝试这样但仍然给我NULL! 此代码低于empty = false;

 for(int i=0; i<table.getColumnCount(); i++) { test[i] = table.getColumnName(i); } 

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

尝试这个。

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

从这里开始,您期望获取列别名而不是列名,因此您必须使用ResultSetMetaData.getColumnLabel而不是ResultSetmetaData.getColumnName。

使用ResultSet#getMetaData()获取ResultSetMetaData

 ResultSetMetaData meta = rs.getMetaData(); 

然后获取第一列的列名:

 String col1Name = meta.getColumnLabel(1); 

与获取第二列的列名相似:

 String col2Name = meta.getColumnLabel(2); 

获取元数据

 ResultSetMetaData metaData = rs.getMetaData(); 

然后你可以这样做:

 String columnName = metaData.getColumnName(int index); 
  • ResultSetMetaData doc

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

并且不要连接查询参数!