Обсуждение: TableName
AbstractJdbc2ResultSetMetaData.java Whay this is default public String getTableName(int column) throws SQLException { return ""; } and not this public String getTableName(int column) throws SQLException { return getBaseTableName(column); }
Looks like perhasp because it is not applicable for a resultSet. As per the the Java™ Platform, Standard Edition 6 API Specification. Interface ResultSetMetaData String getTableName(int column) throws SQLException Gets the designated column's table name. Parameters: column - the first column is 1, the second is 2, ... Returns: table name or "" if not applicable Throws: SQLException - if a database access error occurs Consider SELECT(1*2) resultSet. Does that have a table name? danap. Goran Popov wrote: > AbstractJdbc2ResultSetMetaData.java > > > Whay this is default > public String getTableName(int column) throws SQLException > { > return ""; > } > > and not this > public String getTableName(int column) throws SQLException > { > return getBaseTableName(column); > }
On Mon, 29 Oct 2012, Goran Popov wrote: > Whay this is default > public String getTableName(int column) throws SQLException > { > return ""; > } > For symmetry with getColumnName. Currently getColumnName returns the aliased column name so that "SELECT a AS b FROM c AS d" returns "b" for getColumnName. So we'd like to be able to return "d" for getTableName, but do not have sufficient information to do so, so we return "". My recollection of previous discussions was that getColumnName should return "a" and getColumnLabel should return "b". Then getTableName could return "c" without inconsistency. The problem is that a lot of code has been written assuming that getColumnName will return the aliased version, so we'd need a configuration option to determine which behavior to use. This makes it more work than just a straight switchover and is likely the reason this hasn't been done. Kris Jurka
>> Goran Popov wrote: >>> AbstractJdbc2ResultSetMetaData.java >>> >>> >>> Whay this is default >>> public String getTableName(int column) throws SQLException >>> { >>> return ""; >>> } >>> >>> and not this >>> public String getTableName(int column) throws SQLException >>> { >>> return getBaseTableName(column); >>> } > On 10/29/2012 05:21 PM, dmp wrote: >> Looks like perhasp because it is not applicable for a resultSet. >> As per the the Java™ Platform, Standard Edition 6 API Specification. >> >> Interface ResultSetMetaData >> >> String getTableName(int column) >> throws SQLException >> >> Gets the designated column's table name. >> >> Parameters: >> column - the first column is 1, the second is 2, ... >> Returns: >> table name or "" if not applicable >> Throws: >> SQLException - if a database access error occurs >> >> Consider SELECT(1*2) resultSet. >> Does that have a table name? >> >> danap. >> Goran Popov wrote: >> >> > No and that shoud be empty "". But when there is table name than should > be table name. I agree and later upon reflection knew that the reason for not returning the table name as such was more complicated as Kris has provided hindsight to. When I first came to this forum I read for insight and occasionally responded when I thought I could contribute. Sometimes I also asked questions like yours in order to point out perceived inconsistencies in the drivers behavior. Later I found out that just as Rome was not build in a day, but over years with many contributing no matter how modest. danap.