× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.


  • Subject: JDBC and columns with quote characters in their names
  • From: "McCallion, Martin" <MccalliM@xxxxxxxxxxxxxxxx>
  • Date: Tue, 3 Apr 2001 17:31:17 +0100

I'm using JDBC to work with a DB2/400 database.  However, it so happens
that the database's column names have double quotes in them, so they
appear like "OrderID".  Note that the double-quote characters are
actually part of the name.  This happens when you create the database by
exporting from another system (in this case MS Access), but you can put
similar values into a CREATE TABLE statement in interactive SQL on the
400.

The trouble is that SQL is meant to be case insensitive.  If, in
interactive SQL, you create a table with a column name of "ORDERID", it
will be created as ORDERID.  But if you create it as "OrderID", it will
be created as "OrderID".  Again, I stress that the quote characters are
_part of the name_.

Now, this causes a problem when connecting to the the database using
JDBC: the driver strips off the quotes and passes the naked string to
the database, which converts it to upper case and says "Column ORDERID
not found".

I can get round this in some statements by using the database's quote
character, like this:

        dbMetaQuoteStr = conn.getMetaData().getIdentifierQuoteString();
        sqlString.append(dbMetaQuoteStr + keyFields[i] +
dbMetaQuoteStr);

This works, for example, in a SELECT statement.  However, the problem I
am having is when I come to write a record to the database.  The code:

        rs.insertRow();

(where rs is a ResultSet) throws an SQLException: [SQL0206] Column
ORDERID not in specified tables.  Presumably the same thing will happen
with updateRow(), too.

It seems to me that I somehow have to get the database's quote character
into the column names that are held by the ResultSet object, but I don't
see how that is possible.

It's clearly a bug if you can create a legal column name one way, but
can't use it another way; and since I'm using the JTOpen version of the
Toolbox, I can look at the source and see where this happens, so I
suppose I _could_ try to fix it and offer my fix to the community; but
I'm not sure I want to open that can of worms right now.  Plus, when our
product goes out to clients, there's no guarantee that they would have
the latest version of the toolbox, or indeed, be using the toolbox at
all.

Has anyone come across this?  Is there a workaround?

TIA,

Martin.

--                                                                     
Martin McCallion                 
Midas-Kapiti International
Work:  mccallim@midas-kapiti.com
Home: martin.mccallion@ukonline.co.uk

Apologies for the length of this sig, but company policy says:
This email message is intended for the named recipient only.  It may be
privileged and/or confidential.  If you are not the intended named
recipient of this email then you should not copy it or use it for any
purpose, nor disclose its contents to any other person.  You should
contact Midas-Kapiti International as shown below so that we can take
appropriate action at no cost to yourself.

Midas-Kapiti International Ltd, 1 St George's Road, Wimbledon, London,
SW19 4DR, UK
Email: Postmaster@midas-kapiti.com Tel: +44 (0)208 879 1188 Fax: +44
(0)208 947 3373
Midas-Kapiti International Ltd is registered in England and Wales under
company no. 971479 
+---
| This is the JAVA/400 Mailing List!
| To submit a new message, send your mail to JAVA400-L@midrange.com.
| To subscribe to this list send email to JAVA400-L-SUB@midrange.com.
| To unsubscribe from this list send email to JAVA400-L-UNSUB@midrange.com.
| Questions should be directed to the list owner: joe@zappie.net
+---

As an Amazon Associate we earn from qualifying purchases.

This thread ...

Follow-Ups:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.