Обсуждение: 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.