2015-09-03 26 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; 
}