JDBC question: Which class is returned?

Started by Dr. Evilover 24 years ago4 messagesgeneral
Jump to latest
#1Dr. Evil
drevil@sidereal.kz

I am doing some queries using JDBC. I use the ResultSet.getObject()
method to get the result object. This works fine with SQL VARCHAR,
etc, but there is a big problem when I try it with an INT4.

For example:

Object obj = result.getObject(i);

It gets the object just fine but then I can't do anything with the
object. I can't do this:

System.out.println("The result is: " + (String) obj);

or anything else. I am guessing that the problem may be that it is
trying to return an integer type, which is not an object. Any
sugestions on this?

One thing I think I could do is to try to detect the type using
MetaData.getResultType() or something, and then call
ResultSet.getInt() or whatever is appropriate. Is this the best way
to do it?

Thanks

#2Orion
o2@trustcommerce.com
In reply to: Dr. Evil (#1)
Re: JDBC question: Which class is returned?

On Fri, Oct 12, 2001 at 08:30:02PM -0000, Dr. Evil wrote:

I am doing some queries using JDBC. I use the ResultSet.getObject()
method to get the result object. This works fine with SQL VARCHAR,
etc, but there is a big problem when I try it with an INT4.

For example:

Object obj = result.getObject(i);

It gets the object just fine but then I can't do anything with the
object. I can't do this:

System.out.println("The result is: " + (String) obj);

or anything else. I am guessing that the problem may be that it is
trying to return an integer type, which is not an object. Any
sugestions on this?

One thing I think I could do is to try to detect the type using
MetaData.getResultType() or something, and then call
ResultSet.getInt() or whatever is appropriate. Is this the best way
to do it?

Thanks

The reason you can't cast it to a string is because it will be class Integer if the col type is int.

Integer val = (Integer)result.getObject(i);

This is how to do what you want to do.

Object obj = result.getObject(i);
System.out.println("The result is: " + obj.toString());

If the .getObject() is messing you up there are a wide number of other functions to use like getString() that will convert the return type for you.

Orion

#3Peter T Mount
peter@retep.org.uk
In reply to: Dr. Evil (#1)
Re: JDBC question: Which class is returned?

At 20:30 12/10/2001 +0000, Dr. Evil wrote:

I am doing some queries using JDBC. I use the ResultSet.getObject()
method to get the result object. This works fine with SQL VARCHAR,
etc, but there is a big problem when I try it with an INT4.

For example:

Object obj = result.getObject(i);

It gets the object just fine but then I can't do anything with the
object. I can't do this:

System.out.println("The result is: " + (String) obj);

No, this won't work as not all Objects returned are Strings.

The correct thing to do here is:

System.out.println("The result is: " + obj.toString() );

Which will work as all objects have the toString() method.

or anything else. I am guessing that the problem may be that it is
trying to return an integer type, which is not an object. Any
sugestions on this?

Not possible. The int/long/double entities are not objects, so in this case
can never be returned. The driver should be wrapping them in
Integer/Long/Double objects instead.

One thing I think I could do is to try to detect the type using
MetaData.getResultType() or something, and then call
ResultSet.getInt() or whatever is appropriate. Is this the best way
to do it?

That is an alternative, but the getObject() call should work.

Peter

#4Barry Lind
barry@xythos.com
In reply to: Dr. Evil (#1)
Re: JDBC question: Which class is returned?

It should be returning an Integer object. In a brief look at the source
code it seems to be doing the correct thing. What version are you using?

Also I noticed your example below:

System.out.println("The result is: " + (String) obj);

This shouldn't work. You can't cast any random object to a String. I
think what you want is:

System.out.println("The result is: " + obj.toString());

thanks,
--Barry

Dr. Evil wrote:

Show quoted text

I am doing some queries using JDBC. I use the ResultSet.getObject()
method to get the result object. This works fine with SQL VARCHAR,
etc, but there is a big problem when I try it with an INT4.

For example:

Object obj = result.getObject(i);

It gets the object just fine but then I can't do anything with the
object. I can't do this:

System.out.println("The result is: " + (String) obj);

or anything else. I am guessing that the problem may be that it is
trying to return an integer type, which is not an object. Any
sugestions on this?

One thing I think I could do is to try to detect the type using
MetaData.getResultType() or something, and then call
ResultSet.getInt() or whatever is appropriate. Is this the best way
to do it?

Thanks

---------------------------(end of broadcast)---------------------------
TIP 4: Don't 'kill -9' the postmaster