Apakah ada tipe Long di SQLite?

125

Saya ingin membuat tabel dengan tipe kolom, Longbukan Integer. Apa itu mungkin?

Alex Kapustian
sumber

Jawaban:

220

Dari dokumen SQLite

INTEGER . Nilainya adalah bilangan bulat bertanda, disimpan dalam 1, 2, 3, 4, 6, atau 8 byte tergantung pada besarnya nilai.

Karena long8 byte dan INTEGERjuga dapat menyimpan nilai 8 byte, Anda dapat menggunakan INTEGER.

Inder Kumar Rathore
sumber
1
saya memasukkan 1549251913000 dan ketidakcocokan saat mendapatkannya dari SQLite
Nanda Z
Harap periksa apakah Anda salah mengetik transmisi ke int, pastikan Anda menggunakan durasi panjang.
Inder Kumar Rathore
20

Buat kolom sebagai INTEGERtipe:

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

Letakkan longnilai di INTEGERkolom:

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

Penting: ambil nilai dari kursor sebagaiLONG

Cursor cursor = db.rawQuery("SELECT * FROM " + TABLE_A, null);
long value = cursor.getLong(0);
Vasil Valchev
sumber
5

Anda tinggal menentukan kolom dengan tipe Integer. SQLite menyetel panjang kolom menjadi 1,2,4,8 tergantung pada masukan Anda.

Ssst
sumber
3

SQLIte akan mengatur lebar integer yang sesuai tergantung pada masukan Anda

Kuil Gelap
sumber
0

yang INTEGER dapat menyimpan lama tapi untuk mendapatkan panjang dari kursor harus melakukan seperti ini:

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

saya menggunakan ini untuk menyimpan cap waktu di sqlite

Criss
sumber