You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When you use columnValue method to retrieve an Integer, you obtain a Long. Here
is a small test case:
SQLiteStatement st = cnx.prepare("select 1;");
st.step();
Assert.assertEquals(Integer.class, st.columnValue(0).getClass());
The problem comes from SQLiteStatement.java, line 1044:
return value == ((long) ((int) value)) ? Integer.valueOf((int) value) :
Long.valueOf(value);
This instruction works fine unless you mix Integer, Byte, Short, Long, Float or
Double value as the result of the inline condition. For example, the following
inline condition:
<cond> ? new Integer(1) : new String()
has a type of Object: the common base class of Integer and String. But the
following condition:
<cond> ? new Integer(1) : new Long(1)
has a type of Long. This is because a promotion occurs on Integer and it
becomes a Long.
you must use standard condition like:
if (value == (int)value) {
return Integer.valueOf(value);
}
return Long.valueOf(value);
It works fine for me.
Original issue reported on code.google.com by olivier....@free.fr on 19 Aug 2010 at 12:18
The text was updated successfully, but these errors were encountered:
Original issue reported on code.google.com by
olivier....@free.fr
on 19 Aug 2010 at 12:18The text was updated successfully, but these errors were encountered: