Количество в columns in the result set вы можете получить с кодом (как DB используется PostgreSQL):
//load the driver for PostgreSQL
Class.forName("org.postgresql.Driver");
String url = "jdbc:postgresql://localhost/test";
Properties props = new Properties();
props.setProperty("user","mydbuser");
props.setProperty("password","mydbpass");
Connection conn = DriverManager.getConnection(url, props);
//create statement
Statement stat = conn.createStatement();
//obtain a result set
ResultSet rs = stat.executeQuery("SELECT c1, c2, c3, c4, c5 FROM MY_TABLE");
//from result set give metadata
ResultSetMetaData rsmd = rs.getMetaData();
//columns count from metadata object
int numOfCols = rsmd.getColumnCount();
Но вы можете получить больше мета-информации о колонках:
for(int i = 1; i <= numOfCols; i++)
{
System.out.println(rsmd.getColumnName(i));
}
И, по крайней мере, не в последнюю очередь, вы можете получить информацию не только о таблице, но и о БД, как это сделать, вы можете найти here и here.
Было бы интересно понять, как драйвер CSV JDBC и реализация 'ResultSetMetaData' обрабатывают записи CSV переменной длины. например Если вы указали 'SELECT * FROM sample', и каждая строка содержала другое количество полей, будет ли количество столбцов пересмотрено для каждой строки, которая была повторена? – rhu