2015-09-03 4 views
2

Я хочу, чтобы проверить, если DateTimeCheck столбец существует до считывая значения:Как проверить существование столбца в таблице

private void parseResultSet(ResultSet ride) { 
    if (ride.getDate("DateTimeCheck") != null) 
      this.RideDate = df.format(ride.getDate("DateTimeCheck")); 

} 

Этот код по-прежнему обеспечивает эту ошибку:

java.sql.SQLException: Column 'DateTimeCheck' not found. 

Как исправить Это?

+1

См http://stackoverflow.com/questions/696782/retrieve-column-names-from-java-sql-resultset – Jayan

+0

Конечно, вы знаете, что вы не должны использовать '' SELECT * в запросы в коде, не так ли? Таким образом, ваш код, создавший 'ResultSet', будет знать, запросил ли он соответствующий столбец. См. [В чем причина не использовать select *?] (Http://stackoverflow.com/questions/321299/what-is-the-reason-not-to-use-select) – Andreas

+0

@ Andreas Я не вижу выберите * везде, даже старую версию вопроса. Я могу быть чрезвычайно плотным, пожалуйста, простите. – Drew

ответ

3

Вы можете использовать ResultSetMetadata, чтобы проверить существование столбца.

private static boolean hasColumn (RestultSet rs, String column) { 
    RestulSetMetaData md = rs.getMetaData(); 
    int colCount = md.getColumnCount(); 
    for (int i = 1; i <= colCount; ++i) { // Note that column indexes are 1-based 
     if (column.equalsIgnoreCase(rs.getColumnName(i))) { 
      return true; 
     } 
    } 
    return false; 
} 
Смежные вопросы