SQLite รุ่นใดที่ใช้ใน Android?
เหตุผล: ฉันสงสัยว่าจะจัดการกับการโยกย้ายสคีมาได้อย่างไร เวอร์ชัน SQLite ที่ใหม่กว่ารองรับคำสั่ง SQL "ALTER TABLE" ซึ่งจะช่วยให้ฉันต้องคัดลอกข้อมูลวางตารางสร้างตารางใหม่และแทรกข้อมูลอีกครั้ง
SQLite รุ่นใดที่ใช้ใน Android?
เหตุผล: ฉันสงสัยว่าจะจัดการกับการโยกย้ายสคีมาได้อย่างไร เวอร์ชัน SQLite ที่ใหม่กว่ารองรับคำสั่ง SQL "ALTER TABLE" ซึ่งจะช่วยให้ฉันต้องคัดลอกข้อมูลวางตารางสร้างตารางใหม่และแทรกข้อมูลอีกครั้ง
คำตอบ:
อัปเดตตุลาคม 2016 : นี่คือลิงค์ไปยังเอกสารอย่างเป็นทางการที่อัปเดตซึ่งรวมถึงประเด็นหลักในคำตอบนี้: android.database.sqlite แพคเกจระดับ javadoc
การใช้อีมูเลเตอร์:
adb shell sqlite3 --version
UPDATE: เนื่องจาก SDK 29 (อีมูเลเตอร์ตรวจทาน 8) คำสั่ง adb shell มอบให้:
/system/bin/sh: sqlite3: inaccessible or not found
ความคิดใดทำไม ติดตามปัญหาที่นี่
SQLite 3.28.0 ( ฟังก์ชั่นหน้าต่าง !):
SQLite 3.22.0 :
SQLite 3.19.4 (ด้วยเหตุผลบางอย่าง 3.19.4 ไม่มีอยู่ในบันทึกย่อประจำรุ่น sqlite! ดังนั้นการเชื่อมโยงไปยังเช็คอินการควบคุมเวอร์ชันแทน):
SQLite 3.18.2 :
SQLite 3.9.2 :
SQLite 3.8.10.2 :
SQLite 3.8.6.1 (ลิงค์ SQLite ใช้สำหรับ 3.8.6 เนื่องจาก 3.8.6.1 ไม่มีอยู่ด้วยเหตุผลบางประการ):
SQLite 3.8.6 :
SQLite (ไม่ทราบชื่อ):
SQLite 3.7.11 :
SQLite 3.7.4 :
SQLite 3.6.22 :
SQLite 3.5.9 :
หมายเหตุ: ลิงก์ระดับ Android SDK จะแสดงตำแหน่งที่แพ็กเกจandroid.database.sqliteเปลี่ยนไป หากไม่มีการเชื่อมโยง (เช่นระดับ SDK 17) แสดงว่าไม่มีการเปลี่ยนแปลงแพ็คเกจ
หมายเหตุ: นี่คือความผิดปกติบางอย่าง (รายการโดยไม่หมายถึงครบถ้วน):
SQLite 3.7.13 (แทน 3.7.11):
SQLite 3.7.6.3 (แทน 3.6.22):
SQLite 3.7.5 (แทน 3.7.4):
SQLite 3.7.0.1 (แทน 3.6.22):
SQLite 3.6.23.1 (แทน 3.5.9):
หมายเหตุ: คำสั่ง adb เพื่อให้ได้เวอร์ชัน SQLite ใช้งานได้กับอีมูเลเตอร์และอุปกรณ์ที่มี sqlite3 เท่านั้น: https://stackoverflow.com/a/3645800/444761
สำหรับอุปกรณ์อื่น ๆ โปรดดูคำตอบของยูรี
ฉันได้เพิ่มปัญหา # 58909ไปยังตัวติดตามปัญหา Android โปรดติดดาวนี้หากคุณต้องการสนับสนุน
หมายเหตุ: หากคุณต้องการให้แอปของคุณใช้ SQLite เวอร์ชันเดียวกันกับ Android ทุกเวอร์ชันให้ลองใช้ไลบรารี่ฝ่ายสนับสนุน SQLite ของ บริษัท อื่น
targetSdkVersion
หรือbuildTarget
มีอิทธิพลใด ๆ ต่อสิ่งนั้น?
แม้ว่าเอกสารจะให้หมายเลขอ้างอิง 3.4.0 แต่หากคุณใช้งาน sql ต่อไปนี้คุณจะสังเกตเห็นว่ามีการติดตั้ง SQlite ในจำนวนที่สูงกว่ามาก:
Cursor cursor = SQLiteDatabase.openOrCreateDatabase(":memory:", null).rawQuery("select sqlite_version() AS sqlite_version", null);
String sqliteVersion = "";
while(cursor.moveToNext()){
sqliteVersion += cursor.getString(0);
}
นี่เป็นเพียงส่วนหนึ่งของรหัสที่รวดเร็วและสกปรกเพื่อเรียกคืนเวอร์ชันของ sqlite ยกตัวอย่างเช่นใน HTC Hero กับ Android 2.1, ฉันได้รับ: 3.5.9
บน Nexus One ของฉันกับ Android 2.2 ผมได้รับ3.6.22
$ adb shell
$ sqlite3 --version
sqlite3 --version
3.5.9
เหมือนกันกับ ADP1 1.6 และ 2.1 อีมูเลเตอร์
ในห้องคุณสามารถสอบถาม
เลือก sqlite_version ()
RG