SQLite รุ่นที่ใช้ใน Android?


271

SQLite รุ่นใดที่ใช้ใน Android?

เหตุผล: ฉันสงสัยว่าจะจัดการกับการโยกย้ายสคีมาได้อย่างไร เวอร์ชัน SQLite ที่ใหม่กว่ารองรับคำสั่ง SQL "ALTER TABLE" ซึ่งจะช่วยให้ฉันต้องคัดลอกข้อมูลวางตารางสร้างตารางใหม่และแทรกข้อมูลอีกครั้ง


1
คุณยังอาจต้องการ copy-drop-recreate-reinsert ALTER TABLE ของ SQLite นั้นไม่ได้มีคุณลักษณะครบถ้วน
J. Polfer

โปรดเลือกคำตอบที่ถูกต้อง 3.4.0 ไม่ถูกต้อง
โนอาห์

1
ไม่ได้ขึ้นอยู่กับเวอร์ชั่นของ Android ที่คุณใช้งานอยู่ใช่ไหม ฉันอาจมี SQLite 3.4.x บน myTouch รุ่นเก่าที่ใช้ 1.6 หรือฉันอาจมีเวอร์ชั่นที่สูงกว่าใน G2 รุ่นใหม่ที่ใช้ 2.2 คำตอบที่แท้จริงคือการตรวจสอบมือถือของคุณโดยเฉพาะ
Eno

1.0.0 ของ android.arch.persistence: db และ android.arch.persistence: db-framework จัดส่งเมื่อไม่กี่สัปดาห์ที่ผ่านมา
Prags

คำตอบ:


478

อัปเดตตุลาคม 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 ( ฟังก์ชั่นหน้าต่าง !):

  • 30-11.0-R (แก้ไข 2 ใน SDK Manager)

SQLite 3.22.0 :

  • 29 -10.0-Q (แก้ไข 8 ในตัวจัดการ SDK)
  • 28 -9.0-P

SQLite 3.19.4 (ด้วยเหตุผลบางอย่าง 3.19.4 ไม่มีอยู่ในบันทึกย่อประจำรุ่น sqlite! ดังนั้นการเชื่อมโยงไปยังเช็คอินการควบคุมเวอร์ชันแทน):

  • 27 -8.1.0-O MR1

SQLite 3.18.2 :

  • 26-8.0.0-O (หมายเหตุ: O รุ่นเบต้าใช้แล้ว3.18.0 )

SQLite 3.9.2 :

  • 25-7.1.1-N MR1
  • 24 -7.0-N (หมายเหตุ: ตัวอย่างที่ใช้รุ่นเดียวกัน)

SQLite 3.8.10.2 :

  • 23-6.0-M (หมายเหตุ: M แสดงตัวอย่าง 1 (ระดับ SDK 22) ใช้3.8.10 )

SQLite 3.8.6.1 (ลิงค์ SQLite ใช้สำหรับ 3.8.6 เนื่องจาก 3.8.6.1 ไม่มีอยู่ด้วยเหตุผลบางประการ):

  • 22-5.1.1-อมยิ้ม

SQLite 3.8.6 :

  • 21-5.0-อมยิ้ม

SQLite (ไม่ทราบชื่อ):

  • 20-4.4W.2-Android Wear (ไม่มีอิมูเลเตอร์ แต่อาจเป็น 3.7.11 หรือ 3.8.4.3)

SQLite 3.7.11 :

  • 19-4.4-KitKat
  • 18-4.3-Jelly Bean
  • 17-4.2-Jelly Bean
  • 16 -4.1-Jelly Bean (ลิงก์ที่ขาดดูที่นี่ )

SQLite 3.7.4 :

  • 15-4.0.3-Ice Cream Sandwich
  • 14 -4.0-Ice Cream Sandwich (ลิงก์ที่ขาดดูที่นี่ )
  • 13-3.2-รังผึ้ง
  • 12-3.1-รังผึ้ง
  • 11 -3.0-Honeycomb (ลิงก์เสียดูที่นี่ )

SQLite 3.6.22 :

  • 10-2.3.3-ขนมปังขิง
  • 9-2.3.1-ขนมปังขิง
  • 8 -2.2-Froyo (ลิงค์เสียดูที่นี่ )

SQLite 3.5.9 :

  • 7-2.1-Eclair
  • 4-1.6-โดนัท
  • 3 -1.5-Cupcake (ลิงก์เสียดูที่นี่ )

หมายเหตุ: ลิงก์ระดับ Android SDK จะแสดงตำแหน่งที่แพ็กเกจandroid.database.sqliteเปลี่ยนไป หากไม่มีการเชื่อมโยง (เช่นระดับ SDK 17) แสดงว่าไม่มีการเปลี่ยนแปลงแพ็คเกจ

หมายเหตุ: นี่คือความผิดปกติบางอย่าง (รายการโดยไม่หมายถึงครบถ้วน):

SQLite 3.7.13 (แทน 3.7.11):

  • LG Optimus L70 MS323 LGMS323 | KOT49I.MS32310b (19-4.4-KitKat)
  • LG Optimus G E975 LG-E975 | JZO54K (16-4.1-Jelly Bean)
  • LG G2 D802 LG-D802 | JDQ39B (17-4.2-Jelly Bean)

SQLite 3.7.6.3 (แทน 3.6.22):

  • LG Optimus Sol E730 / myTouch E739 / myTouch Q C800 (10-2.3.3-Gingerbread, GRJ22)
  • LG Optimus Vu F100S / F100L (10-2.3.3-Gingerbread, RK39F)
  • LG Optimus LTE TAG F120K / F120L (10-2.3.3-Gingerbread, GRK39F)
  • LG Optimus LTE L-01D (10-2.3.3-Gingerbread, GRJ90)
  • LG Optimus Net P690b (10-2.3.3-Gingerbread, GINGERBREAD)
  • LG Prada KU5400 (10-2.3.3-Gingerbread, GWK74)
  • LG Prada P940 (10-2.3.3-Gingerbread, GWK74)
  • LG LU6200 / SU640 (10-2.3.3-Gingerbread, GRJ90) s

SQLite 3.7.5 (แทน 3.7.4):

  • Samsung Galaxy Note (15-GT-N7000 | IML74K.ZSLPF)
  • Samsung Galaxy SII (15-SC-02C | IML74K.OMMP4 และ GT-I9100 | IML74K.DXLP7)
  • Samsung Galaxy S Duos (15-GT-S7562 | IMM76I.S7562XXBMD6)
  • Samsung Galaxy Tab 7.7 (15-GT-P6810 | IMM76D.ZSLP8)

SQLite 3.7.0.1 (แทน 3.6.22):

  • LG Esteem MS910 (10-2.3.3-Gingerbread, GSE-_v.05)
  • AndroTab (8-2.2-Froyo, 1.0.7100.0385)
  • GPLUS MUSN M500 (8-2.2-Froyo, FRG83G)

SQLite 3.6.23.1 (แทน 3.5.9):

  • Motorola Backflip MB300 (7-2.1-Eclair, ERD79)
  • Garmin-Asus nüvifone A10 / A50 / Garminfone (7-2.1-Eclair, ERE27)

หมายเหตุ: คำสั่ง adb เพื่อให้ได้เวอร์ชัน SQLite ใช้งานได้กับอีมูเลเตอร์และอุปกรณ์ที่มี sqlite3 เท่านั้น: https://stackoverflow.com/a/3645800/444761

สำหรับอุปกรณ์อื่น ๆ โปรดดูคำตอบของยูรี

ฉันได้เพิ่มปัญหา # 58909ไปยังตัวติดตามปัญหา Android โปรดติดดาวนี้หากคุณต้องการสนับสนุน

หมายเหตุ: หากคุณต้องการให้แอปของคุณใช้ SQLite เวอร์ชันเดียวกันกับ Android ทุกเวอร์ชันให้ลองใช้ไลบรารี่ฝ่ายสนับสนุน SQLite ของ บริษัท อื่น


/ system / bin / sh: sqlite3: ไม่พบนี่เป็นอุปกรณ์ Android 4.0.2 ที่รูทไปแล้ว
Pointer Null

ขอบคุณเครื่องหมาย ฉันสับสนเล็กน้อย ในขณะที่การพัฒนาฉันจะแน่ใจได้อย่างไรว่าเวอร์ชั่น sqlite ของฉันยังคงสอดคล้องกันในทุกอุปกรณ์ ฉันหมายถึงtargetSdkVersionหรือbuildTargetมีอิทธิพลใด ๆ ต่อสิ่งนั้น?
มูฮัมหมัดบาบาร์

1
@MuhammadBabar คุณต้องใช้คำตอบของ Juri เพื่อรับ SQLite เวอร์ชันจริงที่ติดตั้งบนอุปกรณ์ของผู้ใช้ targetSdkVerson และ buildTarget ไม่สร้างความแตกต่าง
ทำเครื่องหมาย

59

แม้ว่าเอกสารจะให้หมายเลขอ้างอิง 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


2
ฉันคิดว่า 3.4.0 มีให้เป็นรุ่นต่ำสุด # - เพื่อความสะดวกในการพกพาคุณอาจไม่ควรสันนิษฐานว่าเป็นรุ่นที่สูงกว่าเว้นแต่คุณจะมีเหตุผลที่ดีในการทำเช่นนั้น
Eno

2
แน่นอนว่าคุณพูดถูก แต่ถ้าคุณมีการใช้คุณลักษณะขั้นสูงบางอย่างซึ่งอาจปรับปรุงประสิทธิภาพการทำงานในรุ่น SQLite ที่สูงขึ้นคุณอาจจะใช้รหัสเพื่อแบบสอบถามและในที่สุดก็เปลี่ยนชนิดของแบบสอบถามขึ้นอยู่กับรุ่นที่นำไปใช้ :)
Juri

Droid ของฉันพร้อมรอม 2.2 ที่กำหนดเองรายงาน 3.6.22
Austyn Mahoney

Epic ของฉันที่มี pre-release 2.2 บอกว่า 3.6.23 - ดูเหมือนว่าตัวเลขจะสูงขึ้น
dhaag23

1
Nexus 7 พร้อม Android 4.2 มอบ 3.7.11
christophercotton

26
$ adb shell
$ sqlite3 --version
sqlite3 --version
3.5.9

เหมือนกันกับ ADP1 1.6 และ 2.1 อีมูเลเตอร์


มันให้ฉัน: sqlite3: ปฏิเสธสิทธิ์
Yar

ทำงานได้ดีสำหรับฉัน ฉันเปิดพรอมต์คำสั่งและนำทางไปยังโฟลเดอร์ android ที่ตั้ง adb.exe จากนั้นฉันพิมพ์คำสั่งสองคำสั่ง
Pavenhimself

8
ให้ "/ system / bin / sh: sqlite3: not found" บน Nexus 4 KitKat
Ben Clayton

6

ภาพรวมสั้น ๆ ของ Andorid APIs และเวอร์ชั่น SQLite ที่รองรับ

ป้อนคำอธิบายรูปภาพที่นี่

ภาพรวมมาจากลิงก์ในคำตอบของ Mark Carters


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