Обсуждение: JDBC question: Which class is returned?

Поиск
Список
Период
Сортировка

JDBC question: Which class is returned?

От
"Dr. Evil"
Дата:
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

Re: JDBC question: Which class is returned?

От
o2@trustcommerce.com
Дата:
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
convertthe return type for you. 

    Orion


Re: JDBC question: Which class is returned?

От
Peter T Mount
Дата:
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


Re: JDBC question: Which class is returned?

От
Barry Lind
Дата:
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:

> 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
>
>