Có loại Long trong SQLite không?


125

Tôi muốn tạo một bảng với kiểu cột Longthay vì Integer. Có khả thi không?

Câu trả lời:


220

Từ tài liệu SQLite

LIÊN KẾT . Giá trị là một số nguyên có dấu, được lưu trữ trong 1, 2, 3, 4, 6 hoặc 8 byte tùy thuộc vào độ lớn của giá trị.

longlà 8 byte và INTEGERcũng có thể lưu các giá trị 8 byte, bạn có thể sử dụng INTEGER.


1
tôi nhập 1549251913000 và không khớp khi lấy nó từ SQLite
Nanda Z

Vui lòng kiểm tra xem bạn có nhập nhầm hay không int, hãy đảm bảo rằng bạn đang sử dụng lâu dài.
Inder Kumar Rathore,

20

Tạo cột dưới dạng một INTEGERloại:

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

Đặt longgiá trị vào INTEGERcột:

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

Quan trọng: lấy giá trị từ con trỏ dưới dạngLONG

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


5

Bạn chỉ cần xác định một cột với kiểu Số nguyên. SQLite đặt độ dài cột thành 1,2,4,8 tùy thuộc vào đầu vào của bạn.



3

SQLIte sẽ đặt độ rộng số nguyên phù hợp tùy thuộc vào đầu vào của bạn


0

các INTEGER có thể lưu trữ lâu nhưng để có được dài từ con trỏ nên làm như thế này:

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

tôi sử dụng cái này để lưu trữ dấu thời gian trong sqlite

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.