Eu quero criar uma tabela com o tipo de coluna em Long
vez de Integer
. É possível?
Eu quero criar uma tabela com o tipo de coluna em Long
vez de Integer
. É possível?
Respostas:
A partir dos documentos SQLite
INTEGER . O valor é um número inteiro assinado, armazenado em 1, 2, 3, 4, 6 ou 8 bytes, dependendo da magnitude do valor.
Como long
tem 8 bytes e INTEGER
também pode salvar valores de 8 bytes, você pode usar INTEGER
.
int
, verifique se está usando por muito tempo.
Crie a coluna como um INTEGER
tipo:
db.execSQL("CREATE TABLE IF NOT EXISTS " + TABLE_A + "("
+ KEY + " INTEGER" + ")");
Coloque o long
valor na INTEGER
coluna:
contentValues.put(KEY, object.getLongValue());
db.insert(TABLE_A, null, contentValues);
Importante: recupere o valor do cursor comoLONG
Cursor cursor = db.rawQuery("SELECT * FROM " + TABLE_A, null);
long value = cursor.getLong(0);
Eu não acho que exista um tipo longo. Ou você pode usar INTEGER (ou) Numérico. Aqui está o link com os tipos de dados suportados http://www.sqlite.org/datatype3.html
O link acima mostra um número inteiro de 64 bits ou, essencialmente, um longo, veja também Qual é a diferença entre os tipos de dados inteiros do SQLite, como int, número inteiro, bigint etc.?
O SQLIte definirá a largura inteira adequada, dependendo da sua entrada
o INTEGER pode armazenar o comprimento, mas para obter o comprimento do cursor, deve fazer o seguinte:
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);
}
eu uso isso para armazenar timestamp no sqlite