One of these days (when I have the time) I'll be contacting Oracle to see if they can 
fix 
their driver. There's no other alternative JDBC drivers like this for Oracle are there?

Keith


---------- Original Message -----------
From: "Derek Mahar" <[EMAIL PROTECTED]>
To: "Tag Libraries Users List" <[EMAIL PROTECTED]>
Sent: Thu, 20 May 2004 16:02:02 -0400
Subject: RE: [JSTL] How do I enter a null value with <sql:param>?

> Wow!  I just installed the jTDS JDBC driver for Microsoft SQL Server, and it does 
> *not* 
produce the NULL parameter problem that I encountered using Microsoft's SQL Server 
JDBC 
driver.  I can now pass <sql:param> a JSTL null value and it will update the 
corresponding column with an SQL NULL value.
> 
> Thank you again for this jTDS reference!
> 
> Derek
> 
> -----Original Message-----
> From: Kris Schneider [mailto:[EMAIL PROTECTED] 
> Sent: May 20, 2004 3:21 PM
> To: Tag Libraries Users List
> Subject: RE: [JSTL] How do I enter a null value with <sql:param>?
> 
> I'm merely aware of its existence. I've never used jTDS (or SQL Server) but just 
> wanted 
to let you know about a potential alternative...
> 
> Quoting Derek Mahar <[EMAIL PROTECTED]>:
> 
> > Thank you for the referral!  Does the jTDS driver correctly implement 
> > PreparedStatement.setObject(index, null) (i.e. set the selected SQL 
> > parameter to NULL)?  Have you encountered any serious flaws using this 
> > driver?
> > 
> > Derek
> > 
> > -----Original Message-----
> > From: Kris Schneider [mailto:[EMAIL PROTECTED]
> > Sent: May 20, 2004 2:57 PM
> > To: Tag Libraries Users List
> > Subject: RE: [JSTL] How do I enter a null value with <sql:param>?
> > 
> > 
> > On a slightly different topic, how about trying a different driver:
> > 
> > http://jtds.sourceforge.net/
> > 
> > Quoting Derek Mahar <[EMAIL PROTECTED]>:
> > 
> > > I need to clarify the first statement that I made in my previous 
> > > post
> > > (see below).  I claim that parameter sqlType in method 
> > > PreparedStatement.setNull(int parameterIndex, int sqlType) is 
> > > redundant because a NULL SQL parameter has no intrinsic type.  A NULL 
> > > SQL value applies to any column type, so it is unnecessary to identify 
> > > its type.
> > > 
> > > Derek
> > > 
> > > -----Original Message-----
> > > From: Derek Mahar
> > > Sent: May 20, 2004 2:08 PM
> > > To: Tag Libraries Users List
> > > Subject: RE: [JSTL] How do I enter a null value with <sql:param>?
> > > 
> > > 
> > > Thank you.  I appreciate your attention and quick response.
> > > 
> > > After reading JDBC Specification Section 13.2.2.3, Setting NULL
> > > Parameters, I understand now why Kris suggested that the JSTL 
> > > specification add the sqlType attribute to <sql:param>:  method 
> > > PreparedStatement.setNull(int parameterIndex, int sqlType) requires 
> > > the type of the parameter that you want to set to NULL.  However, why 
> > > does method setNull require this parameter?  A NULL parameter has no 
> > > intrinsic type!  In order to determine the "type" of a NULL parameter, 
> > > you must consider its expression or assignment context.  That is, in 
> > > order to determine the "type" of a NULL parameter, must consider the 
> > > type of the column to which you are assigning the parameter in a SET 
> > > clause or the column or literal value to which you are comparing the 
> > > parameter in a WHERE clause.  Or, you must assign it a type using a 
> > > new attribute like sqlType.
> > > 
> > > According to JDBC Specification Section 13.2.3, Describing Outputs 
> > > and
> > > Inputs of a PreparedStatement Object, 
> > > ParameterMetaData.getParameterMetaData(int
> > > param) returns the type of each parameter in a parameterized query.  What
> > > "type" does this method return for a NULL parameter?  If it does, in fact,
> > > return a NULL parameter's contextual type, then I can change the
> > <sql:param>
> > > implementation so that it invokes PreparedStatement.setNull instead 
> > > of PreparedStatement.setObject for NULL parameters.  Otherwise, I 
> > > cannot see
> > how
> > > I can supply setNull with a correct "type".  Consequently, I'll just 
> > > have
> > to
> > > wait for Microsoft to fix its JDBC driver so that it correctly 
> > > handles the case PreparedStatement.setObject(index,null).
> > > 
> > > Derek
> > > 
> > > -----Original Message-----
> > > From: Justyna Horwat [mailto:[EMAIL PROTECTED]
> > > Sent: May 20, 2004 1:10 PM
> > > To: Tag Libraries Users List
> > > Subject: Re: [JSTL] How do I enter a null value with <sql:param>?
> > > 
> > > 
> > > Derek,
> > > 
> > > I forwarded your comments to the JDBC specification lead. He said 
> > > that now is a good time to bring up all of these annoyances in the 
> > > specification. He will look into clarifying this area in the 
> > > upcoming version of the spec.
> > > 
> > > Thanks,
> > > 
> > > Justyna
> > > 
> > > Derek Mahar wrote:
> > > 
> > > > After reading Section 17.7 of the JDBC specification (available at
> > > > http://java.sun.com/products/jdbc/download.html), I now agree that 
> > > > there is a problem with the Microsoft SQL JDBC driver, but there is 
> > > > also a problem with the official Java JDBC API documentation that 
> > > > does not mention how PreparedStatement.setObject() handles the case 
> > > > PreparedStatement.setObject(index, null).  I guess we should ask Sun 
> > > > to correct (or complete) its JDBC API documentation and I need to 
> > > > ask Microsoft to fix its JDBC driver.
> > > > 
> > > > However, I still need to fix my problem now.  So, as I have 
> > > > Standard
> > > > Tag Library source code, but do not have the source of the Microsoft 
> > > > SQL Server JDBC driver, I will likely change the <sql:param> 
> > > > implementation so that it invokes PreparedStatement.setNull() when 
> > > > it receives a null value.  Here is a perfect case where having 
> > > > source code is of tremendous benefit.
> > > > 
> > > > Thank you for pointing me in the right direction and being patient
> > > > with my posts as I worked through my problem.
> > > > 
> > > > Derek
> > > > 
> > > > -----Original Message-----
> > > > From: Wolfgang Röckelein
> > > > [mailto:[EMAIL PROTECTED]
> > > > Sent: May 19, 2004 10:40 AM
> > > > To: Tag Libraries Users List
> > > > Subject: Re: [JSTL] How do I enter a null value with <sql:param>?
> > > > 
> > > > 
> > > > Keith wrote:
> > > > 
> > > >>This was on the Users list and was my problem. But mine had to do 
> > > >>specifically with the <sql:dateParam> and the Oracle JDBC driver. 
> > > >>The regular <sql:param> worked fine for me when I passed it a null 
> > > >>value.
> > > >>
> > > >>Link to the starting thread in the archive:
> > > >>http://www.mail-archive.com/[EMAIL PROTECTED]/msg06748
> > > >>.h
> > > >>tml
> > > > 
> > > > 
> > > > Thanks for digging this out. Both problems boil down to the case
> > > > that "when setObject(index, null) is passed in a null value this 
> > > > should be
> > > converted
> > > > by the driver to an SQL null" does not work with the JDBC driver
> > > > (perhaps
> > > only
> > > > for certain data types, which could be the cause why you see it 
> > > > only
> > > > with
> > > > <sql:dateParam>). From my experience I know that the MS SQL JDBC driver
> > > has/had
> > > > problems in this area...
> > > > 
> > > > Regards,
> > > >    Wolfgang
> > 
> > --
> > Kris Schneider <mailto:[EMAIL PROTECTED]>
> > D.O.Tech       <http://www.dotech.com/>
> 
> -- 
> Kris Schneider <mailto:[EMAIL PROTECTED]>
> D.O.Tech       <http://www.dotech.com/>
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> NOTICE: This email contains privileged and confidential information and is intended 
only for the individual to whom it is addressed. If you are not the named addressee, 
you 
should not disseminate, distribute or copy this e-mail. Please notify the sender 
immediately by e-mail if you have received this transmission by mistake and delete 
this 
communication from your system. E-mail transmission cannot be guaranteed to be secured 
or 
error-free as information could be intercepted, corrupted, lost, destroyed, arrive 
late 
or incomplete, or contain viruses.
> 
> AVIS: Le présent courriel contient des renseignements de nature privilégiée et 
confidentielle et n’est destiné qu'à la personne à qui il est adressé. Si vous n’êtes 
pas 
le destinataire prévu, vous êtes par les présentes avisés que toute diffusion, 
distribution ou reproduction de cette communication est strictement interdite.  Si 
vous 
avez reçu ce courriel par erreur, veuillez en aviser immédiatement l’expéditeur et le 
supprimer de votre système. Notez que la transmission de courriel ne peut en aucun cas 
être considéré comme inviolable ou exempt d’erreur puisque les informations qu’il 
contient pourraient être interceptés, corrompues, perdues, détruites, arrivées en 
retard 
ou incomplètes ou contenir un virus.  
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
------- End of Original Message -------


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to