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


271

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

Lý do: Tôi đang tự hỏi làm thế nào để xử lý di chuyển lược đồ. Các phiên bản SQLite mới hơn hỗ trợ lệnh SQL "ALTER TABLE" sẽ giúp tôi tiết kiệm dữ liệu, sao chép 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ái tạo-reinsert; ALTER TABLE của SQLite không có đầy đủ tính năng.
J. Polfer

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

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

1.0.0 của android.arch.persistence: db và android.arch.persistence: db-framework đã xuất xưởng vài tuần trước.
Prags

Câu trả lời:


478

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 bao gồm các điểm chính trong câu trả lời này: android.database.sqlite cấp độ javadoc

Sử dụng trình giả lập:

adb shell sqlite3 --version   

CẬP NHẬT: Vì SDK 29 (phiên bản giả lập 8), lệnh shell adb đưa ra:

/system/bin/sh: sqlite3: inaccessible or not found

Bất cứ ý tưởng tại sao? Vấn đề theo dõi ở đây .

SQLite 3.28.0 ( chức năng cửa sổ !):

  • 30-11.0-R (Bản sửa đổi 2 trong Trình quản lý SDK)

SQLite 3.22.0 :

  • 29 -10.0-Q (Bản sửa đổi 8 trong Trình quản lý SDK)
  • 28 -9.0-P

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! Vì vậy, liên kết với đăng ký kiểm soát phiên bản thay thế):

  • 27 -8.1.0-O MR1

SQLite 3.18.2 :

  • 26-8.0.0-O (lưu ý: Phiên bản O beta được 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 đượ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) được sử dụng 3.8.10 )

SQLite 3.8.6.1 (Liên kết SQLite dành cho 3.8.6 vì 3.8.6.1 không tồn tại vì một số lý do):

  • 22-5.1.1-Lollipop

SQLite 3.8.6 :

  • 21-5.0-Lollipop

SQLite (chưa biết):

  • 20-4.4W.2 - Mặc Android (không có trình giả lập khả dụng, 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 (liên kết bị hỏng, xem tại đây )

SQLite 3.7.4 :

  • 15-4.0.3-Sandwich kem
  • 14 -4.0-Ice Cream Sandwich (liên kết bị hỏng, xem tại đây )
  • 13-3.2-Tổ ong
  • 12-3.1-Tổ ong
  • 11 -3.0-Honeycomb (liên kết bị hỏng, xem tại đây )

SQLite 3.6.22 :

  • 10-2.3.3-Bánh gừng
  • 9-2.3.1-Bánh gừng
  • 8 -2.2-Froyo (liên kết bị hỏng, xem tại đây )

SQLite 3.5.9 :

  • 7-2.1-Eclair
  • 4-1.6-Bánh rán
  • 3 -1,5-Cupcake (liên kết bị hỏng, xem tại đây )

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), biểu thị không có thay đổi nào đối với gói đó.

Lưu ý: Dưới đây là một số bất thường (danh sách không có nghĩa là toàn diện):

SQLite 3.7.13 (thay vì 3.7.11):

  • LG Optimus L70 MS323 LGMS323 | KOT49I.MS32 310b (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 nüvifone A10 / A50 / Garminfone (7-2.1-Eclair, ERE27)

Lưu ý: lệnh adb để có phiên bản SQLite chỉ hoạt động trên trình giả lập và trên các thiết bị có sqlite3 khả dụng: https://stackoverflow.com/a/3645800/444761

Đối với các thiết bị khác, xem câu trả lời của Juri .

Tôi đã thêm Vấn đề # 58909 vào Trình theo dõi sự cố Android. Hãy đánh dấu sao này nếu bạn muốn hỗ trợ nó.

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 thư viện hỗ trợ SQLite của bên thứ 3 này .


/ system / bin / sh: sqlite3: không tìm thấy Đây là trên thiết bị Android 4.0.2 đã được root
Con trỏ Null

Cảm ơn đánh dấu. Tôi bối rối một chút. Trong khi phát triển, làm thế nào tôi có thể đảm bảo 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à có targetSdkVersionhoặc buildTargetcó bất kỳ ảnh hưởng đến điều đó?
Muhammad Babar

1
@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.
Đánh dấu

59

Mặc dù tài liệu cung cấp 3.4.0 làm số tham chiếu, nhưng nếu bạn thực hiện sql sau, bạn sẽ nhận thấy rằng có số lượng SQlite được cài đặt cao hơn nhiều:

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 đoạn mã nhanh, bẩn để lấy phiên bản sqlite. Chẳng hạn, 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 dưới dạng phiên bản tối thiểu # - vì tính di động có lẽ bạn không nên cho rằng đó là phiên bản cao hơn trừ khi bạn có lý do thực sự tốt để làm như vậy.
Eno

2
chắc chắn, bạn đã đú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 suất trên các 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

My Droid với ROM 2.2 tùy chỉnh cũng báo cáo 3.6.22
Mahoney

Epic của tôi với bản phát hành trước 2.2 cho biết 3.6,23 - những con số dường như đang nhích dần lên.
dhaag23

1
Nexus 7 với Android 4.2, cung cấp 3.7.11
christopherc

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

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


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

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

8
đưa ra "/ system / bin / sh: sqlite3: không tìm thấy" trên Nexus 4 KitKat.
Ben Clayton

6

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

nhập mô tả hình ảnh ở đây

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


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.