Good catch, I believe you are correct.  I'll patch it up today.

- Morgan

On Thu, 19 Apr 2001, Dave Dribin wrote:

> Hello,
> 
> I was just playing around with the 04/19 version of the JDBC tag
> library and trying to run the example pages.  I am using Oracle as a
> back-end database and using a JNDI named datasource under Resin 1.2.3.
> I am getting the following exception while running the jndijdbc.jsp
> page:
> 
> javax.servlet.jsp.JspTagException: Could not find column named id
>         at 
>org.apache.taglibs.jdbc.resultset.BaseGetterTag.getColumnNumber(BaseGetterTag.java:245)
>         at 
>org.apache.taglibs.jdbc.resultset.BaseGetterTag.getPosition(BaseGetterTag.java:111)
>         at 
>org.apache.taglibs.jdbc.resultset.GetNumberTag.doStartTag(GetNumberTag.java:149)
> 
> I tracked down the problem to this line in the JSP:
> 
>       <td><sql:getNumber colName="id" format="CURRENCY" locale="en_GB"/></td>
> 
> Now, it turns out that if I use all caps for the column name like "ID"
> rather than "id" it works.  I think this is due to the fact that I am
> running Oracle and it is probably passing back the column names in all
> caps regardless of how the table was created.  However, colName should
> probably be doing a case insensitive compare.  I narrowed it down to
> this bit of code in BaseGetterTag.java:
> 
>    236        for (int i = 1; i <= cntColumn; i++) {
>    237          if (strName.equals (meta.getColumnName (i))) {
>    238            return i;
>    239          }
>    240        }
> 
> Changing line 237 to use String.equalsIgnoreCase() should fix it.  SQL
> is not case sensitive, right?
> 
> -Dave
> 

Reply via email to