From: Asar K. <asa...@in...> - 2004-02-23 20:01:20
|
Claude, Unfortunatley, oracle's implementation if isOpen() does not work (unless it is has been fixed in the latest flavours - which I doubt - maybe someone else knows...) so it would cause a problem. If you do not want to introduce another parameter I suggest that you also code in "select 1 from dual" for oracle for backward compatibility if nothing else. Best Regards Asar Khan On Mon, 23 Feb 2004 16:56:12 +0100, Claude Brisson wrote > (Since this thread is becoming quite informative, I respond in the > mailing list) > > (my initial post) > > On Mon, 23 Feb 2004 01:17:35 +0100, Claude Brisson wrote > > > Hi Asar, > > > > > > I am currently reviewing your changes, and I noticed the following one : > > > > > > int concur = (mDBConnection.mDefaultReadOnly) ? > > > ResultSet.CONCUR_READ_ONLY : ResultSet.CONCUR_UPDATABLE; statement = new > > > PooledStatement(mDBConnection,mDBConnection.getConnection() > > > .createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,concur)); > > > > > > I don't really understand it : > > > > > > 1. we don't need ResultSet.CONCUR_UPDATABLE since changes are made > > > using separate queries. > > > > > > 2. we don't need ResultSet.TYPE_SCROLL_INSENSITIVE either, since we're > > > only scrolling forward. > > > > > > So I'm not gonna include those changes, unless you can convince me I > > > missed something. > > > > > > Other changes are fine, except that I'd like to try to determine > > > automatically how to check the connection. > > > > > > CloD > > Asar Khan wrote : > > Hi Claude, > > > > Unfortunately its probably the most non-standard driver! And can be very > > frustrating to work with. > > > > The reason why we need ResultSet.TYPE_SCROLL_INSENSITIVE (or you could use > > ResultSet.TYPE_SCROLL_SENSITIVE) is that your code does not work with the > > default ResultSet.FORWARD_ONLY. The isLast() method is not compatible with > > FORWARD_ONLY and fails with the error: > > > > java.sql.SQLException: Invalid operation for forward only resultset : isLast > > ok I see - so I'll keep ResultSet.TYPE_SCROLL_INSENSITIVE - no other > driver should be disturbed by that > > > > > IF YOU REMOVE THIS VELOSURF WILL NOT WORK WITH ORACLE. > > I've installed an oracle instance for testing purposes ; don't worry, > I'll try not to let out something broken. > > > > > As for the code to set concur to ResultSet.CONCUR_READ_ONLY / > > ResultSet.CONCUR_UPDATABLE i agree with your statement and it can be removed. > > But you will have to specify ResultSet.CONCUR_READ_ONLY as the method requires > > this as a minimum. > > > > I'm not too sure what you mean by your final statement about checking > > automatically for the connection. If you're referring to the the checkConnection > > () method in DBConnection.java then this had a hard-coded sql check "select 1" > > which again is incomaptible with oracle and causes a failure and a > > reconnection - ultimatley it works but you have the overhead of a reconnection > > and unecessary error logging. > > > > By allowing the user to specify a check query (which for most jdbc drivers will > > not be required) the isOpen() will do the same thing when a query is not > > supplied in the xml file. > > Since the database driver can be deduced from the url > (mysql/oracle/...), I can call "select 1" in the case of mysql and > just isOpen( ) for others for now (untill someone discover that such > or such other driver also needs a special query). > > > > > I hope all this makes sense! If you have any further questions drop me a note. > > > > Regards > > Asar Khan > > > I'm not too sure what you mean by your final statement about checking > > automatically for the connection. If you're referring to the the checkConnection > > () method in DBConnection.java then this had a hard-coded sql check "select 1" > > which again is incomaptible with oracle and causes a failure and a > > reconnection - ultimatley it works but you have the overhead of a reconnection > > and unecessary error logging. > > > > By allowing the user to specify a check query (which for most jdbc drivers will > > not be required) the isOpen() will do the same thing when a query is not > > supplied in the xml file. > > I just don't want to introduce a parameter that will look obscure to many. > > Since the database driver can be deduced from the url > (mysql/oracle/...), I can call "select 1" in the case of mysql and > just isOpen( ) for others (untill someone discover that such or such > other driver also needs a special query because isOpen( ) ). > > > I hope all this makes sense! If you have any further questions drop me a note. > > > > Regards > > Asar Khan > > Thanks, > > CloD ------------------------------------------------------------------------------- Visit our Internet site at http://www.inservio.biz Any views expressed in this message are those of the individual sender, except where the sender specifically states them to be the views of Inservio Ltd. |