File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
http://aspose.com/file-tools
The moose likes JDBC and the fly likes Using Resultset Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Databases » JDBC
Bookmark "Using Resultset" Watch "Using Resultset" New topic
Author

Using Resultset

Karel Young
Greenhorn

Joined: Mar 02, 2004
Posts: 10
I am creating a Java program that accesses a Database and so Far I have had no problems, but I have just realised that I need a "Multi-connect" architecture in my database rather than a perminant connection to the DataBase.
I did some research and found that once I closed the Database Link my ResultSet (I am using this to hold the data rather than an Array/Vector) closed as well, after some hunting I found that I needed to change my PreparedStatement line to read
---
PreparedStatement pstmt = conn.prepareStatement("SELECT * FROM " + tbl, ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE, ResultSet.HOLD_CURSORS_OVER_COMMIT);
---
But when I try to run this command I get this Error
---
Exception in thread "main" java.lang.UnsupportedOperationException
at sun.jdbc.odbc.JdbcOdbcConnection.setHoldability(JdbcOdbcConnection.java:1698)

---

Apart from this my program is fully functional.
If anyone can give me an idea on why I am getting this result/How to fix it. then I would appreciate it.
(PS I want to avoid using Vectors or Arrays if I can as I have found that the Resultset is more efficient and can store more Data about the DB)
My System
Linux - Debian 3.0 - Kernel 2.4.25
Windows XP
mySQl
MS Access
Java 1.4.2_02


"We have a choice: the Internet or a life"
Jeroen Wenting
Ranch Hand

Joined: Oct 12, 2000
Posts: 5093
1) Don't hang on to the ResultSet, use ArrayLists instead. They're a lot more efficient than are Vectors and don't hold on to database resources
2) you're using optional operations on the JDBC, which are likely not supported by the rather primitive JDBCODBC bridge driver. Use a real database instead like Firebird (http://firebird.sourceforge.net).


42
Karel Young
Greenhorn

Joined: Mar 02, 2004
Posts: 10
I have found that I can add a new Record to the Record set by using the InserRow() method but I am running into an interensting problem in that the Database has an AutoIncrement field as the ID and as a result I cannot write to that field without the program crashing.
But I also cannot not write to the field because it throws an error.
An unexpected exception has been detected in native code outside the VM.
Unexpected Signal : 11 occurred at PC=0x4CD89AE3
Function=(null)+0x4CD89AE3
Library=/usr/lib/odbc/libmyodbc.so
NOTE: We are unable to locate the function name symbol for the error
just occurred. Please refer to release documentation for possible
reason and solutions.

There is about 5 times that amount of error but the rest is a library trace.
Any ideas?
Jeroen Wenting
Ranch Hand

Joined: Oct 12, 2000
Posts: 5093
Don't attempt to write the autoinc field!
Write a new record, then read it back in to get the value of the field.
Karel Young
Greenhorn

Joined: Mar 02, 2004
Posts: 10
What I am wondering tho is how to crate the record using insertRow() without adding the Autoinc Field in there, I get an error when I do.
If possible I want to avoid using strings to add the new record (that is what I am using at the moment and what I am trying to get away from)
What I want ot be able to do is add a new record without having to commit the data first, I can edit a series of record and then commit them as a batch later on and I want to be able to do this with adding new records as well. (Without using arrays or vectors as I consider them to be a kludge )
Thanks for your help
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: Using Resultset