มีประเภท Long ใน SQLite หรือไม่?


126

ฉันต้องการที่จะสร้างตารางที่มีประเภทคอลัมน์แทนLong Integerเป็นไปได้ไหม?

คำตอบ:


220

จากเอกสาร SQLite

จำนวนเต็ม ค่านี้เป็นจำนวนเต็มที่ลงนามซึ่งเก็บไว้ใน 1, 2, 3, 4, 6 หรือ 8 ไบต์ขึ้นอยู่กับขนาดของค่า

ตั้งแต่long8 ไบต์และINTEGERยังสามารถบันทึกค่า 8 INTEGERไบต์คุณสามารถใช้


1
ฉันป้อนข้อมูล 1549251913000 และไม่ตรงกันเมื่อได้รับจาก SQLite
Nanda Z

โปรดตรวจสอบว่าคุณพิมพ์แคสต์ผิดพลาดหรือไม่ตรวจสอบintให้แน่ใจว่าคุณใช้งานนาน
Inder Kumar Rathore

20

สร้างคอลัมน์เป็นINTEGERประเภท:

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

ใส่longค่าในINTEGERคอลัมน์:

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

สำคัญ:ดึงค่าจากเคอร์เซอร์เป็นLONG

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


5

คุณเพียงกำหนดคอลัมน์ด้วยชนิดจำนวนเต็ม SQLite ตั้งค่าความยาวคอลัมน์เป็น 1,2,4,8 ขึ้นอยู่กับอินพุตของคุณ


4

ลิงค์ด้านบนของเขาแสดงให้เห็นถึงจำนวนเต็ม 64 บิตหรือโดยพื้นฐานแล้วยาวดู อะไรคือความแตกต่างระหว่างชนิดข้อมูลจำนวนเต็ม SQLite เช่น int, integer, bigint ฯลฯ

และ เวอร์ชันของ SQLite ที่ใช้ใน Android?


3

SQLIte จะกำหนดความกว้างของจำนวนเต็มที่เหมาะสมขึ้นอยู่กับข้อมูลที่คุณป้อน


0

จำนวนเต็มสามารถเก็บนานแต่เพื่อให้ได้ยาวจากเคอร์เซอร์ควรทำเช่นนี้

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

ฉันใช้สิ่งนี้เพื่อจัดเก็บการประทับเวลาในsqlite

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.