Czy w SQLite jest typ Long?

126

Chcę utworzyć tabelę z typem kolumny Longzamiast Integer. Czy to możliwe?

Alex Kapustian
źródło

Odpowiedzi:

220

Z dokumentacji SQLite

INTEGER . Wartość jest liczbą całkowitą ze znakiem, przechowywaną w 1, 2, 3, 4, 6 lub 8 bajtach, w zależności od wielkości wartości.

Ponieważ longma 8 bajtów i INTEGERmoże również zapisywać wartości 8 bajtów, możesz użyć INTEGER.

Inder Kumar Rathore
źródło
1
wprowadzam 1549251913000 i nie zgadzam się podczas pobierania z SQLite
Nanda Z
Sprawdź, czy przez pomyłkę wpisujesz przesyłanie do int, upewnij się, że używasz go przez długi czas.
Inder Kumar Rathore
20

Utwórz kolumnę jako INTEGERtyp:

db.execSQL("CREATE TABLE IF NOT EXISTS " + TABLE_A + "("
                + KEY + " INTEGER" + ")");

Wpisz longwartość w INTEGERkolumnie:

contentValues.put(KEY, object.getLongValue());
db.insert(TABLE_A, null, contentValues);

Ważne: pobierz wartość z kursora jakoLONG

Cursor cursor = db.rawQuery("SELECT * FROM " + TABLE_A, null);
long value = cursor.getLong(0);
Vasil Valchev
źródło
5

Po prostu definiujesz kolumnę z typem Integer. SQLite ustawia długość kolumny na 1,2,4,8 w zależności od danych wejściowych.

Shnkc
źródło
3

SQLIte ustawi odpowiednią szerokość całkowitą w zależności od danych wejściowych

DarkTemple
źródło
0

INTEGER można przechowywać długo, ale aby dostać się długo z kursorem należy zrobić tak:

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);
}

Używam tego do przechowywania znacznika czasu w sqlite

Criss
źródło