Android में प्रयुक्त SQLite का संस्करण?


271

Android में उपयोग किए जाने वाले SQLite का संस्करण क्या है?

कारण: मैं सोच रहा हूं कि स्कीमा माइग्रेशन को कैसे संभालना है। नए SQLite संस्करण "ALTER TABLE" SQL कमांड का समर्थन करते हैं जो मुझे डेटा की प्रतिलिपि बनाने, तालिका को छोड़ने, तालिका को पुनः बनाने और डेटा को पुन: सम्मिलित करने से बचाएगा।


1
आप अभी भी कॉपी-ड्रॉप-रिक्रिएड-रीइन्सेटर कॉपी करना चाह सकते हैं; SQLite का परिवर्तन तालिका बहुत पूर्ण-चित्रित नहीं है।
जे। पोलफर

कृपया सही उत्तर चुनें, ३.४.० सही नहीं है
नूह

1
क्या यह आपके द्वारा चलाए जा रहे Android के संस्करण पर निर्भर नहीं करता है? मैं वास्तव में मेरे पुराने MyTouch 1.6 चलाने पर SQLite 3.4.x हो सकता है या मैं अपने नए G2 2.2 चलाने पर एक उच्च संस्करण हो सकता है। सही उत्तर आपके विशेष हैंडसेट की जांच करना है।
एनो

Android.arch.persistence का 1.0.0: db और android.arch.persistence: db- फ्रेमवर्क को कुछ हफ़्ते पहले भेज दिया गया था।
प्रग्स

जवाबों:


478

अद्यतन अक्टूबर 2016 : यहां अपडेट किए गए आधिकारिक डॉक्स का लिंक दिया गया है, जिसमें इस उत्तर में मुख्य बिंदु शामिल हैं: android.database.sqlite संकुल-स्तर javadoc

एमुलेटर का उपयोग करना:

adb shell sqlite3 --version   

अद्यतन: चूंकि SDK 29 (एमुलेटर रिविजन 8), adb शेल कमांड देता है:

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

कोई विचार क्यों? यहां ट्रैकर जारी करें

SQLite 3.28.0 ( विंडो फ़ंक्शंस !):

  • 30-11.0-आर (एसडीके प्रबंधक में संशोधन 2)

SQLite 3.22.0 :

  • 29 -10.0-क्यू (एसडीके प्रबंधक में संशोधन 8)
  • 28 -9.0-पी

SQLite 3.19.4 (किसी कारण के लिए 3.19.4 sqlite रिलीज़ नोट में मौजूद नहीं है! इसलिए संस्करण नियंत्रण चेक-इन के बजाय लिंक करना):

  • 27 -8.1.0-ओ MR1

SQLite 3.18.2 :

  • 26-8.0.0-O (नोट: O बीटा संस्करण 3.18.0 का उपयोग किया गया )

SQLite 3.9.2 :

  • 25-7.1.1-एन एमआर 1
  • 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-किटकैट
  • 18-4.3-जेली बीन
  • 17-4.2- जेली बीन
  • 16 -4.1-जेली बीन (टूटी कड़ी, यहां देखें )

SQLite 3.7.4 :

  • 15-4.0.3-आइसक्रीम सैंडविच
  • 14 -4.0-आइसक्रीम सैंडविच (टूटी कड़ी, यहां देखें )
  • 13-3.2-हनीकोम्ब
  • 12-3.1-हनीकोम्ब
  • 11 -3.0-मधुकोश (टूटी हुई कड़ी, यहां देखें )

SQLite 3.6.22 :

  • 10-2.3.3-जिंजरब्रेड
  • 9-2.3.1-जिंजरब्रेड
  • 8 -2.2-फ्रायो (टूटी कड़ी, यहां देखें )

SQLite 3.5.9 :

  • 7-2.1-Eclair
  • 4-1.6-डोनट
  • 3 -1.5-कपकेक (टूटा लिंक, यहां देखें )

नोट: Android SDK स्तर लिंक दिखाते हैं कि android.database.sqlite पैकेज कहां बदल गया है। जहां कोई लिंक नहीं है (उदाहरण के लिए एसडीके स्तर 17), उस पैकेज में कोई बदलाव नहीं होने का संकेत देता है।

नोट: यहाँ कुछ विसंगतियाँ हैं (सूची किसी भी तरह से नहीं)

SQLite 3.7.13 ( 3.7.11 के बजाय):

  • एलजी ऑप्टिमस L70 MS323 LGMS323 | KOT49I.MS32310b (19-4.4-किटकैट)
  • एलजी ऑप्टिमस जी E975 एलजी- E975 | JZO54K (16-4.1-जेली बीन)
  • LG G2 D802 LG-D802 | JDQ39B (17-4.2-जेली बीन)

SQLite 3.7.6.3 ( 3.6.22 के बजाय):

  • एलजी ऑप्टिमस सोल E730 / myTouch E739 / myTouch Q C800 (10-2.3.3-जिंजरब्रेड, GRJ22)
  • एलजी ऑप्टिमस VU F100S / F100L (10-2.3.3-जिंजरब्रेड, RK39F)
  • एलजी ऑप्टिमस LTE TAG F120K / F120L (10-2.3.3-जिंजरब्रेड, GRK39F)
  • एलजी ऑप्टिमस LTE L-01D (10-2.3.3-जिंजरब्रेड, GRJ90)
  • एलजी ऑप्टिमस नेट P690b (10-2.3.3-जिंजरब्रेड, GINGERBREAD)
  • एलजी प्रादा KU5400 (10-2.3.3-जिंजरब्रेड, GWK74)
  • एलजी प्रादा 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)
  • सैमसंग गैलेक्सी SII (15-SC-02C | IML74K.OMMP4 और GT-I9100 | IML74K.DXLP7)
  • Samsung Galaxy S Duos (15-GT-S7562 | IMM76I.S7562XXBMD6)
  • सैमसंग गैलेक्सी टैब 7.7 (15-GT-P6810 | IMM76D.ZSLP8)

SQLite 3.7.0.1 ( 3.6.22 के बजाय):

  • LG एस्टीम MS910 (10-2.3.3-जिंजरब्रेड, GSE-_v.05)
  • एंड्रोटैब (8-2.2-फ्रायो, 1.0.7100.0385)
  • GPLUS MUSN M500 (8-2.2-Froyo, FRG83G)

SQLite 3.6.23.1 (3.5.9 के बजाय):

  • मोटोरोला बैकफ्लिप MB300 (7-2.1-एक्लेयर, ERD79)
  • Garmin-Asus nüvifone A10 / A50 / Garminfone (7-2.1-Eclair, ERE27)

नोट: adb कमांड SQLite वर्जन पाने के लिए केवल एमुलेटर पर और sqlite3 के साथ उपलब्ध उपकरणों पर काम करता है: https://stackoverflow.com/a/3645800/444761

अन्य उपकरणों के लिए, जुरी का उत्तर देखें ।

मैंने Android समस्या ट्रैकर में एक समस्या # 58909 जोड़ दी है। यदि आप इसका समर्थन करना चाहते हैं तो कृपया इसे देखें।

नोट: यदि आप चाहते हैं कि आपका ऐप सभी एंड्रॉइड संस्करणों में SQLite के समान संस्करण का उपयोग करे, तो इस तृतीय पक्ष SQLite समर्थन लाइब्रेरी का उपयोग करने पर विचार करें


/ सिस्टम / बिन / श: sqlite3: नहीं मिला यह रूट किए गए एंड्रॉइड 4.0.2 डिवाइस पर है
पॉइंटर नल

धन्यवाद चिह्न। मैं थोड़ा उलझन में हूं। विकास करते समय मैं यह कैसे सुनिश्चित कर सकता हूं कि मेरा साइक्लाइट संस्करण सभी डिवाइसों के अनुरूप बना रहे? मेरा मतलब है targetSdkVersionया buildTargetउस पर कोई प्रभाव पड़ता है?
मुहम्मद बाबर

1
@MuhammadBabar उपयोगकर्ता के डिवाइस पर स्थापित SQLite का वास्तविक संस्करण प्राप्त करने के लिए आपको Juri के उत्तर का उपयोग करने की आवश्यकता है। targetSdkVerson और buildTarget को कोई फर्क नहीं पड़ता।
मार्क

59

हालाँकि दस्तावेज़ीकरण 3.4.0 को संदर्भ संख्या के रूप में देता है, यदि आप निम्नलिखित एसक्यूएल को निष्पादित करते हैं, तो आप देखेंगे कि बहुत अधिक संख्या में SQlite स्थापित है:

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

यह क्विकलाइट संस्करण को पुनः प्राप्त करने के लिए त्वरित, गंदे कोड का एक टुकड़ा है। उदाहरण के लिए, एंड्रॉइड 2.1 के साथ एक एचटीसी हीरो पर, मुझे मिलता है: 3.5.9

एंड्रॉइड 2.2 के साथ अपने नेक्सस वन पर, मुझे 3.6.22 भी मिलते हैं


2
मैं कल्पना करता हूं कि 3.4.0 को एक न्यूनतम संस्करण के रूप में दिया जाता है # - पोर्टेबिलिटी के लिए आपको शायद इसके उच्च संस्करण को ग्रहण नहीं करना चाहिए जब तक कि आपके पास ऐसा करने का वास्तव में अच्छा कारण न हो।
Eno

2
यकीन है, तुम सही हो। लेकिन अगर आपको कुछ उन्नत सुविधाओं का उपयोग करना है जो उच्च SQLite संस्करणों पर प्रदर्शन में सुधार कर सकते हैं, तो आप कोड को क्वेरी करने के लिए उपयोग कर सकते हैं और अंततः तैनात संस्करण के आधार पर क्वेरी के प्रकार को बंद कर सकते हैं :)
Juri

एक कस्टम 2.2 रोम के साथ मेरा Droid भी 3.6.22 की रिपोर्ट करता है
महोनी

मेरी प्री-रिलीज़ 2.2 के साथ 3.6.23 कहती है - यह संख्या ऊपर की ओर बढ़ रही है।
दिघ २३

1
एंड्रॉइड 4.2 के साथ नेक्सस 7, 3.744
क्रिस्टोफरकॉटन

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

ADP1 1.6 और 2.1 एमुलेटर पर भी।


यह मुझे देता है: sqlite3: अनुमति से इनकार किया
यार

मेरे लिए ठीक काम किया। मैंने cmd प्रॉम्प्ट खोला और android फ़ोल्डर में नेविगेट किया, जहां adb.exe स्थित था। फिर मैंने दो आज्ञाओं में टाइप किया
पावनहिमे

8
नेक्सस 4 किटकैट पर "/ सिस्टम / बिन / श: sqlite3: नहीं मिला"।
बेन क्लेटन

6

Andorid API और समर्थित SQLite संस्करणों का संक्षिप्त अवलोकन।

यहां छवि विवरण दर्ज करें

अवलोकन मार्क कार्टर्स जवाब में लिंक से है।


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.