Ich möchte eine Tabelle mit dem Spaltentyp Long
anstelle von erstellen Integer
. Ist es möglich?
Ich möchte eine Tabelle mit dem Spaltentyp Long
anstelle von erstellen Integer
. Ist es möglich?
Antworten:
Aus den SQLite-Dokumenten
INTEGER . Der Wert ist eine vorzeichenbehaftete Ganzzahl, die je nach Größe des Werts in 1, 2, 3, 4, 6 oder 8 Byte gespeichert wird.
Da long
es 8 Byte ist und INTEGER
auch Werte von 8 Bytes speichern kann, können Sie verwenden INTEGER
.
int
und stellen Sie sicher, dass Sie durchgehend lange verwenden.
Erstellen Sie die Spalte als INTEGER
Typ:
db.execSQL("CREATE TABLE IF NOT EXISTS " + TABLE_A + "("
+ KEY + " INTEGER" + ")");
Tragen Sie den long
Wert in die INTEGER
Spalte ein:
contentValues.put(KEY, object.getLongValue());
db.insert(TABLE_A, null, contentValues);
Wichtig: Rufen Sie den Wert vom Cursor als abLONG
Cursor cursor = db.rawQuery("SELECT * FROM " + TABLE_A, null);
long value = cursor.getLong(0);
Ich glaube nicht, dass es Typ Long gibt. Entweder können Sie INTEGER (oder) Numeric verwenden. Hier ist ein Link zu den unterstützten Datentypen http://www.sqlite.org/datatype3.html
Sein obiger Link zeigt eine 64-Bit-Ganzzahl oder im Wesentlichen eine lange, siehe auch Was ist der Unterschied zwischen SQLite-Ganzzahl-Datentypen wie int, integer, bigint usw.?
SQLIte legt die geeignete Ganzzahlbreite abhängig von Ihrer Eingabe fest
Der INTEGER kann das Long speichern, aber um vom Cursor Long zu werden, sollte er Folgendes tun:
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);
}
Ich benutze dies, um Zeitstempel in SQLite zu speichern