Subject | Re: [IB-Java] Re: getXXX(colname) doesn't work with calculated columns and aliases |
---|---|
Author | David Jencks |
Post date | 2001-05-23T19:12:16Z |
Hi,
yikes.
cts is the jdbc compliance test suite from sun. I found it once but lost
it. I don't know how hard it is to find anything in it.
Since I'm working on a ic replacement I'm reluctant to devote much time to
ic.
One possibility for you if you don't want to get too involved in ic
internals might be to write a wrapper driver that wraps ic, replacing the
resultset ( and maybe resultsetmetadata) with classes that map column names
the way you want. JBoss (www.jboss.org) has a generic wrapper to convert
type 1 jdbc drivers to fake XADatasources, although this doesn't replace
resultsets, just the connections.
As a totally different approach, can you just define a lot of views and
select from them? if you have calculated columns you're not going to be
writing to them anyway.
Thanks
david jencks
yikes.
cts is the jdbc compliance test suite from sun. I found it once but lost
it. I don't know how hard it is to find anything in it.
Since I'm working on a ic replacement I'm reluctant to devote much time to
ic.
One possibility for you if you don't want to get too involved in ic
internals might be to write a wrapper driver that wraps ic, replacing the
resultset ( and maybe resultsetmetadata) with classes that map column names
the way you want. JBoss (www.jboss.org) has a generic wrapper to convert
type 1 jdbc drivers to fake XADatasources, although this doesn't replace
resultsets, just the connections.
As a totally different approach, can you just define a lot of views and
select from them? if you have calculated columns you're not going to be
writing to them anyway.
Thanks
david jencks
On 2001.05.23 11:49:21 -0400 Dietrich Schulten wrote:
> Hi David,
>
> David Jencks <davidjencks@...> schrieb:
>
> I'm in a typical go-between situation: OpenOffice's jdbc connection
> (www.openoffice.org) can't work with Interbase calculated columns and
> aliases, and that is the primary "itch" I want to scratch.
> Now the question is: fix the driver or fix the application. Since we're
> talking OSS I'm in this happy situation :-)
>
> In OpenOffice (and BTW StarOffice 5.2, too) the gui database components
> are based on column names. This is astonishing first, but from the
> component user's perspective it makes sense. You want to drop an edit
> field, assign a column name and go on, you don't want to use ordinal
> numbers or draw distinctions between labels and column names. If you have
>
> ambiguous names you use aliases to be sure which field you're referring
> to.
>
> In JDBC the situation seems to be the exact opposite:
>
> "When a getXXX method is called with a column name and several columns
> have the same name, the value of the first matching column will be
> returned. "
>
> -> Never rely on unique names in applications. I've heard this and
> listened
> as well ;-)
>
> But the resultset javadoc continues:
> "The column name option is designed to be used when column names are used
>
> in the SQL query that generated the result set. For columns that are NOT
> explicitly named in the query, it is best to use column numbers. If
> column names are used, there is no way for the programmer to guarantee
> that they actually refer to the intended columns."
>
> -> The question is what that means. It could mean: you should completely
> avoid column names and only use column numbers. It could also mean: while
>
> the primary way are ordinal numbers, you *might* use getXXX(colname) if
> the
> user explicitly named every column in the query using AS.
>
> The JDBC driver mmMySql, for instance, seems to allow getXXX(colname) and
>
> findColumn(colname) for aliased columns. The effect is, there are no
> problems with mySql and Star/OpenOffice as long as you use aliases for
> ambiguous column names.
> In Interclient both colname based methods fail for every aliased column,
> not only calculated columns. IOW, no Interbase calculated columns and no
> aliases in StarOffice.
>
> If you want to offer column names to the end user, you must map ordinal
> numbers, real column names and labels somewhere - either in the driver or
>
> in every application that uses JDBC. The mmMySQL approach to invent the
> wheel only once isn't completely silly, if we set the murky JDBC spec
> aside for a moment.
>
> The key to this is the possibility to use aliases in getXXX(colname) and
> findColumn(colname). The Interclient approach is clean and well, as long
> as you don't want to use a calculated column in a gui component.
>
> At least this whole issue is worth thinking about. A minimal approach
> could be to allow findColumn(colname) and getXXX(colname) to find
> aliases. If I'm not mistaken that would mean first search aliases
> (getColumnLabel), then real column names (getColumnName). E.g. in your
> example where you swapped two columns this would lead to the expected
> result.
>
> > The only other resource to consult I can think of is the cts. Have you
> > looked at it? Pointers to tests there would be appreciated.
>
> I'd like to take a look. What is the cts?
>
> Greetings,
> Dietrich
>
> To unsubscribe from this group, send an email to:
> IB-Java-unsubscribe@egroups.com
>
>
>
> Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/
>
>
>
>