IDS JDBC Driver
IDS Server Trial
JDBC Quick Start
FAQ - Exception
- E1. "SQLException: No suitable driver"
thrown by DriverManager.
- There can be several causes to this exception:
(a) You did not use the signature "jdbc:ids://" to start off
your Connection URL.
(b) The IDS JDBC Driver was not installed properly with the applet.
(c) In Internet Explorer, you used Class.forName() to register the
For (c), the problem is caused by a bug (see M1)
in the Microsoft Java VM which still exist in the final release of
Internet Explorer 4.0. The solution is to by pass the DriverManager
altogether when creating a JDBC Driver instance:
Driver drv = new j102.sql.IDSDriver();
Connection conn = drv.connect(
- E2. "NullPointerException" when
connecting to IDS Server.
- This exception usually happens when you create a IDS JDBC Driver and
Connection instances using the method shown in topic E1. There are two
other possible causes for this exception:
(a) Java could not load the driver class j102.sql.IDSDriver.
Check your applet setup. See topic J7.
(b) Your Connection URL does not start with "jdbc:ids://"
- E3. "NoClassDefFoundError" thrown, and
my applet is dead.
- If the exception message says, "NoClassDefFoundError:
j102.sql.IDSDriver", it means Java could not load the IDS
JDBC Driver. Check your applet setup. See topic J7.
If the exception message says, "NoClassDefFoundError:
j102.ssl.SSLSocket", it means you are running IDS Server 2.0
Lite, and you should download a newer
version of IDS Server.
- E4. SQLException: IDS Server: Incompatible IDS
JDBC Driver detected...
- This indicates that there is a older version of IDS JDBC Driver
installed either in the local computer's CLASSPATH or on the Web
server that deploys the applet.
- E5. java.net.SocketException: No such file or
- This exception is usually issued by Netscape Navigator or
Communicator indicating that you have the wrong IP address and/or port
number of the IDS Server when connect() is called.
- E6. java.net.SocketException: connect
- This exception is usually issued by Internet Explorer or JDK
indicating that you have the wrong IP address and/or port number of
the IDS Server when connect() is called.
Another common cause is that the IDS Server is not running at
all. While on Windows NT, IDS Server is started automatically as
a NT background service after installation, on Windows 98/95 machines,
IDS Server must be launched explicitly before running your JDBC
- E7. SQLException: [S1000][INTERSOLV][ODBC
Informix driver][Informix] Unable to load locale categories.
- See topic J8. I can't connect to my Informix
- E8. SQLException: [S1000][Microsoft][ODBC SQL
Server Driver] Connection is busy with results for another hstmt
- This is caused by a SQL Server ODBC Driver limitation such that only
one active Statement is allowed on a single Connection. The
solution is to use IDS Server Version 3.0.1 or later and set the
ResultSetType to IDSResultSet.TYPE_SCROLL_INSENSITIVE.
Please refer to IDS Server User's Guide (Rev 3.0.1 or
later) Section 4.6.4 for details.
- E9. java.io.EOFException: Unexpected end of
- IDS Server sets a time-out value (default 20 minutes) for all JDBC
connections. If your JDBC application worked fine after initially
connected to IDS Server but received this exception later, that means
your program has not been using the JDBC connection for some time and
the IDS Server closes the connection when the time-out expires. This
often happens to servlets, because they tend to hold on to the
connection for a long time.
The IDS Server setting for this time-out is DefSessionTime in
the "idss.ini" file. Please refer to Section 1.3.3 of
the IDS Server User's Guide on how to change this
setting. Another solution is on the client-side have your
application periodically call the Connection.getWarnings() method,
which causes the IDS Server to restart the time-out counter.
If time-out is not the issue, then IDS JDBC Driver may throws this exception when the protocol between the
driver and the IDS Server is broken. This may be caused by a bad
network connection that corrupts the data stream.
Also, this exception is thrown when an older version of IDS JDBC
Driver connects to IDS Server 2.5 (both Lite and full version). This
is a 2.5 bug, because the correct exception should be
"Incompatible IDS JDBC Driver ..." (See topic E4).
The bug is fixed in Version 3.0 or later.
- E10. SQLException: [S1002][Microsoft][ODBC SQL
Server Driver] Invalid Descriptor Index
- This exception is usually thrown when retrieving a LONGVARCHAR or
LONGVARBINARY column using the getXXXStream() method (column size >
DefMaxFieldSize of idss.ini). This exception can be avoided by
re-ordering your SELECT statement so that the long column is place at
the end of the select list.
In the two examples below, assume that picture
is the only LONGVARBINARY type column. Then the first SELECT statement
can cause this exception, while the second one works fine:
SELECT name, picture, address FROM
- SELECT name, address, picture FROM
If there are two or more long columns in the same select list, place
all of them at the end of the select list and make sure that your JDBC
program retrieve them in the same order as they appear in the select
- E11. [S1000][Microsoft][ODBC Access 97 ODBC
Driver]General error Unable to open registry key 'DriverId'.
- This exception happens when the ODBC data source you setup for your
Access database contains certain security protection such that an NT background
service like IDS Server is not able to read. The
solution is to run the IDS Server using your own user account (See FAQ-G14).
- E12. [HY000][Microsoft][ODBC Microsoft Access
Driver] The Microsoft Jet database engine cannot open the file
'(unknown)'. It is already opened exclusively by another user, or you
need permission to view its data.
- This exception happens when connecting to an ODBC data source with
the database file (*.mdb for Access) located on a network drive, and
the IDS Server is running as an NT background service using the
default 'system' account. The solution is to run the IDS Server
using your own user account (See FAQ-G14).
- E13. java.sql.SQLException: java.io.IOException:
SSL V3.0 padding error
- If you are running an Java applet using the combination
of IDS Server 3.5.2 or older, ids.sql.IDSDriver or java2.sql.IDSDriver
with SSL enabled, Microsoft Internet Explorer default Java VM, and the
DES (40-bit or 56-bit) encryption cipher, then this exception may be
caused by a bug in the Microsoft Java VM Just-In-Time (JIT) compiler.
The ids.security.DES class file in IDS Server 3.5.2 or older
were compiled using the JDK 1.1 compiler (javac.exe). All
versions of JDK (1.1, 1.2, 1.3), Java Plug-in, Netscape Communicator
and Netscape 6 can run the DES encryption using this class file
without any problem. The default Microsoft Java VM of Internet
Explorer fails to run it properly and produced incorrect
encryption/decryption results that led to this exception.
Starting from IDS Server 3.5.3, most Java classes were compiled using
JDK 1.3. The Microsoft VM seems to be
running fine with these class files including ids.security.DES.
Therefore, the work-around is either upgrade to 3.5.3
or newer, or download the following patch which replaces the old
version of the DES.class file:
DES Cipher Microsoft VM
- E14. java.sql.SQLException: java.io.IOException: SSL
- This is a
public/private key mismatch problem. Each time idsskey is run,
it generates a different pair of IDSServerPKCS.dat (private key) and
IDSServerPublicKey.java. This exception is often caused by
running idsskey more than once and having one version of
IDSServerPKCS.dat on the server-side while deploying a IDSServerPublicKey.class for the
client that was compiled from a different version of
The simple solution is to find and delete all versions of
IDSServerPKCS.dat, IDSServerPublicKey.java and
IDSServerPublicKey.class from your file system, JAR and CAB
files. Then run idsskey one last time, compile
IDSServerPublicKey.java again into IDSServerPublicKey.class and deploy
the class file for the client.
Also, starting from IDS Server 3.5, RSA is the default signature
algorithm generated by idsskey if only the modulus size is specified
in the parameter. Before 3.5, the default and only signature
algorithm is ElGamal. If you have a Java program written and ran
in 3.2.x or older, then after upgrading to 3.5 ran idsskey again
without specifying -dl as parameter, you will get this exception.