Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

How to read a SQL datatype LONG

0 views
Skip to first unread message

Sandeep Konchady

unread,
Feb 5, 2001, 5:05:24 PM2/5/01
to sandeep....@sun.com
Hi,

I am having a small problem with reading contents from SQL datatype
LONG. This is from a table in Oracle DB. My understanding is that the
data length of LONG is 2GB, may be I am wrong. So when I try to get the
data from the resultset I get the following exception(s),

EXCEPTION 1: When trying to dump it to a string
------------

java.sql.SQLException: Bigger type length than Maximum"
at oracle.jdbc.dbaccess.DBError.check_error(DBError.java:223)
at
oracle.jdbc.driver.OracleStatement.getBytesInternal(OracleStatement.java:1628)
at
oracle.jdbc.driver.OracleStatement.getStringValue(OracleStatement.java:1661)
at
oracle.jdbc.driver.OracleResultSet.getString(OracleResultSet.java:175)
at dbAccess.dbSendCommand(dbAccess.java:309)

OR EXCEPTION 2: When trying to access it using getCharacterStream(int i)
---------------

java.lang.AbstractMethodError
at dbAccess.dbSendCommand(dbAccess.java:299)


The source snippet is :
-----------------------

ResultSetMetaData rsmd = rs.getMetaData();
String className = null;
String element = null;

while (rs.next()) {
if ( null != rsmd.getColumnTypeName(1) )
className = new String(rsmd.getColumnTypeName(1));
if ( DEBUG )
System.out.println("The class type is : " + className);

if ( className.equals("NUMBER") ) {
element = rs.getString(1);
} else if ( className.equals("VARCHAR2") ) {
element = rs.getString(1);
} else if ( className.equals("LONG") ) {
LineNumberReader in = new
LineNumberReader( rs.getCharacterStream(1));
StringBuffer str = new StringBuffer();
while ( null != in.readLine() ) {
str.append(in.readLine());
}
element = str.toString();
System.out.println("And the available stream is
: " + element);
}
rsVec.addElement(element);
}

Please reply to my address.

Thanks,
Sandeep

0 new messages