Is it the embedded or the client driver that you are using? It would be easier if you could provide a simple reproducible program for this, as Mamta suggested.

Fernanda

Danny wrote:

Sounds similar to my issue.

From JIRA comments:
I think the current behaviour is correct. After a commit the result set is
open but is not positioned on a row. The result set must be re-positioned
with a next() or other method before acessing a row or modifying it with a
positioned update or delete. I think this may be from the SQL standard, or
is it the JDBC standard?

The bug 4515 (Cloudscape bug tracking system) was fixed, I think to return
the correct error as you are seeing.

So I tried calling next() again after the commit but before the call to
updateRow() to reposition the cursor, no luck, same error: Invalid cursor state - no current row.

Danny Gallagher
The Gainer Group
6525 The Corners Parkway
Suite 215
Norcross Ga, 30092


-----Original Message-----
From: Fernanda Pizzorno [mailto:[EMAIL PROTECTED] Sent: Thursday, December 01, 2005 3:59 AM
To: Derby Discussion
Subject: Re: ResultSet updateRow() error

It appears to me that the behavior you are seeing is similar to that of JIRA 610 (http://issues.apache.org/jira/browse/DERBY-610), except that you are using updateRow and not positioned update. Is that the case?

Fernanda

Danny wrote:

I figured out what the problem was, although, I am not sure why the behavior seems to be implemented the way it is.

Between the time that I was calling the update methods on the columns and the call to updateRow() a commit was being executed.

It seems that this invalidated the current row somehow, I could still get the values from the columns with the get methods, so the entire ResultSet object wasn't hosed, but the cursor seems to be.

Since the ResultSet was created with ResultSet.HOLD_CURSORS_OVER_COMMIT, I don't understand why it behaves this way.

Danny Gallagher

The Gainer Group

6525 The Corners Parkway

Suite 215

Norcross Ga, 30092

------------------------------------------------------------------------

*From:* Mamta Satoor [mailto:[EMAIL PROTECTED]
*Sent:* Tuesday, November 29, 2005 2:00 PM
*To:* Derby Discussion
*Subject:* Re: ResultSet updateRow() error

Hi Danny,

The scenario you described should work. Can you provide a simple reproducible program for this(along with the table and index creation?

Mamta

On 11/29/05, *Danny* <[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>> wrote:


Derby version = 10.1.2.1 <http://10.1.2.1>

I cannot seem to figure out why this ResultSet update is not working.

I create the ResultSet with the following:

Statement stmt = conn.createStatement(ResultSet.TYPE_FORWARD_ONLY,
ResultSet.CONCUR_UPDATABLE, ResultSet.HOLD_CURSORS_OVER_COMMIT);

The query that I execute to return the result set contains the primary key,
FROM contains only one table, and the query contains no JOINS or UNIONS.

So then I call next()
Update all the columns that I am interested in updating, up to this point
everything is fine, I can get the column that I updated out, and the values
are the updated ones.

When I call updateRow(), I get: Invalid cursor state - no current row

But there is a current row, I am updating columns in it and those updates
are taking place.

Any help is appreciated.
Thanks

Danny Gallagher
The Gainer Group
6525 The Corners Parkway
Suite 215
Norcross Ga, 30092








Reply via email to