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]