Обсуждение: TableName

Поиск
Список
Период
Сортировка

TableName

От
Goran Popov
Дата:
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);
     }


Re: TableName

От
dmp
Дата:
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);
> }



Re: TableName

От
Kris Jurka
Дата:

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


Re: TableName

От
dmp
Дата:
 >> 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.