2010-03-10 12 views
232

Phiên bản SQLite được sử dụng trong Android là gì?Phiên bản SQLite được sử dụng trong Android?

Lý do: Tôi tự hỏi cách xử lý di chuyển giản đồ. Các phiên bản SQLite mới hơn hỗ trợ lệnh SQL "ALTER TABLE", nó sẽ giúp tôi sao chép dữ liệu, thả bảng, tạo lại bảng và chèn lại dữ liệu.

+1

Bạn vẫn có thể muốn sao chép-thả-tạo lại-reinsert; ALTER TABLE của SQLite không phải là rất đầy đủ tính năng. –

+0

Vui lòng chọn câu trả lời đúng, 3.4.0 không đúng – Noah

+0

Điều đó có phụ thuộc vào phiên bản Android bạn đang chạy không? Tôi thực sự có thể có SQL.x 3.4.x trên myTouch cũ của tôi chạy 1.6 HOẶC tôi có thể có một phiên bản cao hơn trên G2 mới của tôi chạy 2.2. Câu trả lời đúng là để kiểm tra cho chiếc điện thoại cụ thể của bạn. – Eno

Trả lời

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

Tương tự trên ADP1 1,6 & 2.1 trình giả lập.

+0

Nó mang lại cho tôi: sqlite3: sự cho phép bị từ chối – Yar

+0

Làm việc tốt cho tôi. Tôi đã mở nhắc lệnh cmd và điều hướng đến thư mục android, nơi adb.exe được đặt. Sau đó, tôi gõ vào hai lệnh – Pavenhimself

+5

cho "/ system/bin/sh: sqlite3: không tìm thấy" trên KitKat Nexus 4. –

55

Mặc dù các tài liệu cung cấp cho 3.4.0 như số tài liệu tham khảo, nếu bạn thực hiện sql sau đây, bạn sẽ nhận thấy rằng có một số cao hơn nhiều SQLite cài đặt:

Cursor cursor = SQLiteDatabase.openOrCreateDatabase(":memory:", null).rawQuery("select sqlite_version() AS sqlite_version", null); 
String sqliteVersion = ""; 
while(cursor.moveToNext()){ 
    sqliteVersion += cursor.getString(0); 
} 

Đây chỉ là một mảnh nhanh chóng, mã bẩn để lấy phiên bản sqlite. Ví dụ: trên HTC Hero với Android 2.1, tôi nhận được: 3.5.9.

Trên Nexus One của tôi với Android 2.2, tôi thậm chí còn nhận được 3.6.22.

+2

Tôi tưởng tượng 3.4.0 được đưa ra như là một phiên bản tối thiểu # - cho tính di động, bạn có lẽ không nên giả sử một phiên bản cao hơn trừ khi bạn có một lý do thực sự tốt để làm như vậy. – Eno

+2

chắc chắn, bạn nói đúng. Nhưng nếu bạn phải sử dụng một số tính năng nâng cao có thể cải thiện hiệu năng trên phiên bản SQLite cao hơn, bạn có thể sử dụng mã để truy vấn và cuối cùng chuyển loại truy vấn tùy thuộc vào phiên bản đã triển khai :) – Juri

+0

Droid của tôi với ROM tùy chỉnh 2.2 cũng báo cáo 3.6 .22 –

446

CẬP NHẬT tháng 10 năm 2016: Đây là một liên kết đến các tài liệu chính thức được cập nhật trong đó bao gồm những điểm chính trong câu trả lời này: android.database.sqlite package-level javadoc

Sử dụng giả lập (adb shell sqlite3 --version):

CẬP NHẬT : Rất tiếc, các khác biệt API cấp gói (API 18 trở lên) cũ hơn đã ngừng hoạt động: https://issuetracker.google.com/issues/37048579

SQLite 3.19.4 (vì một số lý do 3.19.4 không tồn tại trong ghi chú phát hành sqlite!) :

  • 27-8.1.0

SQLite 3.18.2:

  • 26-8.0.0-O (lưu ý: các phiên bản beta O sử dụng 3.18.0)

SQLite 3.9.2:

  • 25-7.1.1-N MR1
  • 24 -7,0-N (lưu ý: xem trước sử dụng cùng một phiên bản)

SQLite 3.8.10.2:

  • 23-6.0-M (lưu ý : M Preview 1 (SDK cấp 22) đã sử dụng 3.8.10)

SQLite 3.8.6.1 (Liên kết SQLite là 3.8.6 vì 3.8.6.1 không tồn tại cho r some reason):

  • 22-5.1.1-Lollipop

SQLite 3.8.6:

  • 21-5.0-Lollipop

SQLite (không rõ):

Mang
  • 20-4.4W.2-Android (không có trình giả lập nào, nhưng có thể là 3.7.11 hoặc 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-Honeycomb
  • 12-3,1-Honeycomb
  • 11 -3,0-Honeycomb

SQLite 3.6.22:

  • 10-2.3.3-Gingerbread
  • 9-2.3.1-Gingerbread
  • 8 -2,2-Froyo

SQLite 3.5.9:

  • 7-2.1-Eclair
  • 4-1.6-Donut
  • 3 - 1.5-Cupcake

Lưu ý: Liên kết cấp SDK Android hiển thị nơi gói android.database.sqlite đã thay đổi. Khi không có liên kết (ví dụ: SDK cấp 17), thì không có thay đổi nào đối với gói đó.

Lưu ý: Đây là một số bất thường (danh sách không có nghĩa là đầy đủ):

SQLite 3.7.13 (thay vì 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 (thay vì 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 (thay vì 3.7.4):

  • Samsung Galaxy Note (15-GT-N7000 | IML74K.ZSLPF)
  • Samsung Galaxy SII (15-SC-02C | IML74K.OMMP4 và 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 (thay vì 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 (thay vì 3.5.9):

  • Motorola Backflip MB300 (7-2,1-Eclair, ERD79)
  • Garmin-Asus Nuvifone A10/A50/Garminfone (7-2,1-Eclair, ERE27)

Lưu ý: lệnh adb để ge Phiên bản SQLite chỉ hoạt động trên trình mô phỏng và trên các thiết bị có sẵn sqlite3: https://stackoverflow.com/a/3645800/444761

Đối với các thiết bị khác, xem Juri's answer.

Tôi đã thêm Issue #58909 vào Trình theo dõi sự cố Android. Vui lòng gắn dấu sao này nếu bạn muốn hỗ trợ.

Lưu ý: nếu bạn muốn ứng dụng của mình sử dụng cùng một phiên bản SQLite trên tất cả các phiên bản Android, hãy xem xét sử dụng this 3rd party SQLite support library.

+0

/hệ thống/bin/sh: sqlite3: không tìm thấy Đây là thiết bị Android 4.0.2 được root bắt buộc –

+0

Cảm ơn bạn đã đánh dấu. Tôi bối rối một chút. Trong khi phát triển như thế nào tôi có thể chắc chắn rằng phiên bản sqlite của tôi vẫn nhất quán trên tất cả các thiết bị? tôi có nghĩa là 'targetSdkVersion' hoặc' buildTarget' có ảnh hưởng gì đến điều đó không? –

+0

@MuhammadBabar Bạn cần sử dụng câu trả lời của Juri để cài đặt phiên bản SQLite thực tế trên thiết bị của người dùng. targetSdkVerson và buildTarget không tạo ra sự khác biệt nào. –

2

Tổng quan ngắn về API Andorid và các phiên bản SQLite được hỗ trợ.

enter image description here

Tổng quan là từ liên kết trong câu trả lời Mark Carters.