Je souhaite créer une table avec le type de colonne Long
au lieu de Integer
. C'est possible?
Je souhaite créer une table avec le type de colonne Long
au lieu de Integer
. C'est possible?
Réponses:
À partir de la documentation SQLite
INTEGER . La valeur est un entier signé, stocké dans 1, 2, 3, 4, 6 ou 8 octets en fonction de l'amplitude de la valeur.
Depuis long
8 octets et INTEGER
peut également enregistrer des valeurs de 8 octets, vous pouvez utiliser INTEGER
.
int
, assurez-vous que vous utilisez longtemps.
Créez la colonne en tant que INTEGER
type:
db.execSQL("CREATE TABLE IF NOT EXISTS " + TABLE_A + "("
+ KEY + " INTEGER" + ")");
Mettez la long
valeur dans la INTEGER
colonne:
contentValues.put(KEY, object.getLongValue());
db.insert(TABLE_A, null, contentValues);
Important: récupérez la valeur du curseur commeLONG
Cursor cursor = db.rawQuery("SELECT * FROM " + TABLE_A, null);
long value = cursor.getLong(0);
Je ne pense pas qu'il y ait un type long. Soit vous pouvez utiliser INTEGER (ou) Numeric. Voici le lien avec les types de données pris en charge http://www.sqlite.org/datatype3.html
Son lien ci-dessus représente un entier 64 bits ou essentiellement un long, voir également Quelle est la différence entre les types de données d'entiers SQLite comme int, integer, bigint, etc.?
SQLIte définira une largeur entière appropriée en fonction de votre entrée
la ENTIER peut stocker la longue mais pour obtenir longtemps du curseur devrait faire comme ceci:
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);
}
j'utilise ceci pour stocker l' horodatage dans sqlite