안드로이드에서 사용되는 SQLite 버전?


271

Android에서 사용되는 SQLite 버전은 무엇입니까?

이유 : 스키마 마이그레이션을 처리하는 방법이 궁금합니다. 최신 SQLite 버전은 "ALTER TABLE"SQL 명령을 지원하므로 데이터를 복사하고 테이블을 삭제하고 테이블을 다시 작성하고 데이터를 다시 삽입해야합니다.


1
여전히 copy-drop-recreate-reinsert를 복사 할 수 있습니다. SQLite의 ALTER TABLE은 모든 기능을 갖추고 있지 않습니다.
J. Polfer

정답을 선택하십시오. 3.4.0이 옳지 않습니다
Noah

1
그래도 실행중인 Android 버전에 의존하지 않습니까? 1.6을 실행하는 이전 myTouch에 실제로 SQLite 3.4.x가 있거나 2.2를 실행하는 새 G2에 더 높은 버전이있을 수 있습니다. 정답은 특정 핸드셋을 확인하는 것입니다.
Eno

android.arch.persistence : db 및 android.arch.persistence : db-framework 1.0.0은 몇 주 전에 배송되었습니다.
Prags

답변:


478

2016 년 10 월 업데이트 : 다음은이 답변의 주요 사항을 포함하는 업데이트 된 공식 문서에 대한 링크입니다. android.database.sqlite 패키지 레벨 javadoc

에뮬레이터 사용 :

adb shell sqlite3 --version   

업데이트 : SDK 29 (에뮬레이터 개정 8) 이후 adb shell 명령은 다음을 제공합니다.

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

어떤 아이디어가 있습니까? 여기에서 트래커를 발행 하십시오 .

SQLite 3.28.0 ( 윈도우 기능 !) :

  • 30-11.0-R (SDK 관리자 개정 2)

SQLite 3.22.0 :

  • 29 -10.0-Q (SDK 관리자 수요일 수정 8)
  • 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 Preview 1 (SDK 레벨 22) 사용 3.8.10 )

SQLite 3.8.6.1 (SQLite 링크는 3.8.6.1이 어떤 이유로 존재하지 않기 때문에 3.8.6 용입니다) :

  • 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- 킷캣
  • 젤리 빈 18-4.3
  • 17-4.2- 젤리 빈
  • 16 -4.1-Jelly Bean (깨진 링크, 여기 참조 )

SQLite 3.7.4 :

  • 15-4.0.3 아이스크림 크림 샌드위치
  • 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- 에클 레어
  • 4-1.6- 도넛
  • 3 -1.5-Cupcake (깨진 링크, 여기 참조 )

참고 : Android SDK 레벨 링크는 android.database.sqlite 패키지가 변경된 위치를 보여줍니다 . 링크가없는 경우 (예 : SDK 레벨 17) 해당 패키지가 변경되지 않았 음을 나타냅니다.

참고 : 몇 가지 이상 현상이 있습니다 (전체 목록은 아님).

SQLite 3.7.13 (3.7.11 대신) :

  • LG 옵티머스 L70 MS323 LGMS323 | KOT49I.MS32310b (19-4.4-KitKat)
  • LG 옵티머스 G E975 LG-E975 | JZO54K (16-4.1- 젤리 빈)
  • LG G2 D802 LG-D802 | JDQ39B (17-4.2- 젤리 빈)

SQLite 3.7.6.3 ( 3.6.22 대신) :

  • LG 옵티머스 솔 E730 / myTouch E739 / myTouch Q C800 (10-2.3.3- 진저 브레드, GRJ22)
  • LG Optimus Vu F100S / F100L (10-2.3.3- 진저 브레드, RK39F)
  • LG 옵티머스 LTE TAG F120K / F120L (10-2.3.3- 진저 브레드, GRK39F)
  • LG 옵티머스 LTE L-01D (10-2.3.3- 진저 브레드, GRJ90)
  • LG 옵티머스 넷 P690b (10-2.3.3- 진저 브레드, 진저 브레드)
  • LG Prada KU5400 (10-2.3.3- 진저 브레드, GWK74)
  • LG Prada P940 (10-2.3.3- 진저 브레드, GWK74)
  • LG LU6200 / SU640 (10-2.3.3- 진저 브레드, GRJ90)

SQLite 3.7.5 ( 3.7 대신 4) :

  • 삼성 갤럭시 노트 (15-GT-N7000 | IML74K.ZSLPF)
  • 삼성 Galaxy SII (15-SC-02C | IML74K.OMMP4 및 GT-I9100 | IML74K.DXLP7)
  • 삼성 Galaxy S Duos (15-GT-S7562 | IMM76I.S7562XXBMD6)
  • 삼성 Galaxy Tab 7.7 (15-GT-P6810 | IMM76D.ZSLP8)

SQLite 3.7.0.1 ( 3.6.22 대신) :

  • LG Esteem MS910 (10-2.3.3- 진저 브레드, GSE-_v.05)
  • AndroTab (8-2.2- 프로 요, 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)

참고 : SQLite 버전을 가져 오는 adb 명령은 에뮬레이터 및 sqlite3을 사용할 수있는 장치에서만 작동합니다 : https://stackoverflow.com/a/3645800/444761

다른 장치에 대해서는 Juri의 답변을 참조하십시오 .

문제 # 58909를 추가했습니다Android 이슈 트래커에 를 . 이를 지원하려면 별표를 표시하십시오.

참고 : 앱이 모든 Android 버전에서 동일한 버전의 SQLite를 사용하도록하려면 이 타사 SQLite 지원 라이브러리 사용을 고려하십시오 .


/ system / bin / sh : sqlite3 : 찾을 수 없음 루팅 된 Android 4.0.2 기기에 있음
Pointer Null

감사합니다. 조금 혼란 스러워요. 개발 중에 sqlite 버전이 모든 장치에서 일관성을 유지하도록하려면 어떻게해야합니까? 나는 그것에 영향을 미치 targetSdkVersion거나 buildTarget어떤 영향을 미칩니 까?
Muhammad Babar

1
@MuhammadBabar Juri의 답변을 사용하여 사용자 기기에 설치된 실제 버전의 SQLite를 가져와야합니다. targetSdkVerson과 buildTarget은 차이가 없습니다.
Mark

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 버전을 검색하는 빠르고 더러운 코드입니다. 예를 들어 Android 2.1을 사용하는 HTC Hero의 경우 3.5.9 입니다.

Android 2.2를 사용하는 Nexus One에서는 3.6.22 도 얻 습니다 .


2
나는 3.4.0이 최소 버전 #으로 주어진다고 생각한다-이식성을 위해 당신이 그렇게 할 이유가 없다면 높은 버전으로 가정해서는 안된다.
Eno

2
물론입니다. 그러나 고급 SQLite 버전에서 성능을 향상시킬 수있는 몇 가지 고급 기능을 사용해야하는 경우 코드를 사용하여 배포 된 버전에 따라 쿼리를 수행하고 쿼리 종류를 전환 할 수 있습니다. :)
Juri

사용자 정의 2.2 ROM 나의 이드는 3.6.22 보고서
Austyn 마호니에게

시험판 2.2의 나의 Epic은 3.6.23이라고 말하고 있습니다.
dhaag23

1
안드로이드 4.2 넥서스 7은 3.7.11 제공
christophercotton

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

ADP1 1.6 및 2.1 에뮬레이터에서 동일합니다.


sqlite3 : 권한이 거부되었습니다
Yar

나를 위해 잘 작동했습니다. cmd 프롬프트를 열고 adb.exe가있는 Android 폴더로 이동했습니다. 그런 다음 두 명령을 입력했습니다
Pavenhimself

8
Nexus 4 KitKat에서 "/ system / bin / sh : sqlite3 : not found"를 제공합니다.
Ben Clayton

6

Andorid API 및 지원되는 SQLite 버전에 대한 간단한 개요

여기에 이미지 설명을 입력하십시오

개요는 Mark Carters answer의 링크에서 제공됩니다.


0

방에서 당신은 쿼리 할 수 ​​있습니다

sqlite_version () 선택

RG

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.