I want to create a table with the column type Long
instead of Integer
. Is it possible?
His above link depicts a 64 bit Integer or Essentially a long, also see What is the difference between SQLite integer data types like int, integer, bigint, etc.?
and Version of SQLite used in Android?
SQLIte will set suitable integer width depend on your input
the INTEGER can store the long but to get long from cursor should do like this :
int type = cursor.getType(j);
String value = cursor.getString(j);
try {
int intValue = Integer.parseInt(value);
field.set(object, intValue);
} catch (NumberFormatException e) {
long longValue = Long.parseLong(value);
field.set(object, longValue);
}
i use this to store timestamp in sqlite
I don't think there is type long. Either you can use INTEGER (or) Numeric. Here is link with supported data types http://www.sqlite.org/datatype3.html
From the SQLite docs
INTEGER. The value is a signed integer, stored in 1, 2, 3, 4, 6, or 8 bytes depending on the magnitude of the value.
Since long
is 8 byte and INTEGER
can also save values of 8 bytes, you can use INTEGER
.
Create the column as an INTEGER
type:
db.execSQL("CREATE TABLE IF NOT EXISTS " + TABLE_A + "("
+ KEY + " INTEGER" + ")");
Put the long
value in INTEGER
column:
contentValues.put(KEY, object.getLongValue());
db.insert(TABLE_A, null, contentValues);
Important: retrieve the value from cursor as LONG
Cursor cursor = db.rawQuery("SELECT * FROM " + TABLE_A, null);
long value = cursor.getLong(0);