-
Bug
-
Resolution: Won't Fix
-
P4
-
None
-
1.4.2
-
x86
-
windows_nt
Name: rmT116609 Date: 08/07/2003
FULL PRODUCT VERSION :
java version "1.4.2"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2-b28)
Java HotSpot(TM) Client VM (build 1.4.2-b28, mixed mode)
FULL OS VERSION :
Windows NT Version 4.0
EXTRA RELEVANT SYSTEM CONFIGURATION :
SQLServer 7 database
A DESCRIPTION OF THE PROBLEM :
We use the driver "sun.jdbc.odbc.JdbcOdbcDriver" to connect to MS-SQLServer 7 database.
We configure our result set to be insensitive like :
Statement stmt = connexion.createStatement(
ResultSet.TYPE_SCROLL_INSENSITIVE ,
ResultSet.CONCUR_READ_ONLY );
When we access randomly the columns using the untyped accesors like :
System.out.println(rs.getObject(2));
System.out.println(rs.getObject(1));
System.out.println(rs.getObject(3));
everything works well.
However, if we use typed accessors like :
System.out.println(rs.getString(2));
System.out.println(rs.getString(1));
System.out.println(rs.getString(3));
The following exception occurs :
java.sql.SQLException: [Microsoft][ODBC SQL Server Driver]Invalid Descriptor Index
at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6879)
at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7036)
at sun.jdbc.odbc.JdbcOdbc.SQLGetDataString(JdbcOdbc.java:3862)
at sun.jdbc.odbc.JdbcOdbcResultSet.getDataString(JdbcOdbcResultSet.java:5561)
at sun.jdbc.odbc.JdbcOdbcResultSet.getString(JdbcOdbcResultSet.java:338)
at div.TestResultSetInsensitive.main(TestResultSetInsensitive.java:53)
ERROR MESSAGES/STACK TRACES THAT OCCUR :
java.sql.SQLException: [Microsoft][ODBC SQL Server Driver]Invalid Descriptor Index
at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6879)
at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7036)
at sun.jdbc.odbc.JdbcOdbc.SQLGetDataString(JdbcOdbc.java:3862)
at sun.jdbc.odbc.JdbcOdbcResultSet.getDataString(JdbcOdbcResultSet.java:5561)
at sun.jdbc.odbc.JdbcOdbcResultSet.getString(JdbcOdbcResultSet.java:338)
at div.TestResultSetInsensitive.main(TestResultSetInsensitive.java:53)
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
import java.sql.*;
public class TestResultSetInsensitive
{
public static void main(String[] args)
{
System.out.println(System.getProperties().getProperty("java.version"));
String dsn = "jdbc:odbc:sw45v2" ;
String user="user";
String pwd="password";
Connection connexion = null ;
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver") ;
connexion = DriverManager.getConnection(dsn,user,pwd);
Statement stmt = connexion.createStatement(
ResultSet.TYPE_SCROLL_INSENSITIVE ,
ResultSet.CONCUR_READ_ONLY );
ResultSet rs = stmt.executeQuery("SELECT top 1 * from Tcredittype ");
int colNo=rs.getMetaData().getColumnCount();
rs.next();
if(rs!=null)
{
//**access with Object :
// -> it works with random access to columns
// System.out.println(rs.getObject(2));
// System.out.println(rs.getObject(1));
// System.out.println(rs.getObject(3));
//**access with datatype
// -> it does't work with random access to columns
// -> throws the folowing exception :
/*
java.sql.SQLException: [Microsoft][ODBC SQL Server Driver]Invalid Descriptor Index
at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6879)
at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7036)
at sun.jdbc.odbc.JdbcOdbc.SQLGetDataString(JdbcOdbc.java:3862)
at sun.jdbc.odbc.JdbcOdbcResultSet.getDataString(JdbcOdbcResultSet.java:5561)
at sun.jdbc.odbc.JdbcOdbcResultSet.getString(JdbcOdbcResultSet.java:338)
at div.TestResultSetInsensitive.main(TestResultSetInsensitive.java:45)
*/
System.out.println(rs.getString(2));
System.out.println(rs.getString(1));
System.out.println(rs.getString(3));
}
rs.close();
stmt.close();
connexion.close();
}
catch( ClassNotFoundException e )
{
e.printStackTrace();
}
catch( SQLException pbSQL )
{
pbSQL.printStackTrace();
}
finally
{
try
{
if( connexion != null ) connexion.close() ;
} catch( SQLException pb ){}
}
}
}
---------- END SOURCE ----------
CUSTOMER SUBMITTED WORKAROUND :
using untyped accessors : resultset.getObject(arg)
(Incident Review ID: 192620)
======================================================================