SQLite DB देखने के लिए Android स्टूडियो में ADB का उपयोग कैसे करें


83

मुझे अपनी SQLite डीबी देखने की जरूरत है लेकिन मुझे नहीं पता कि यह कैसे करना है। मैं http://www.sqlite.org/download.html पर गया हूं और अपने ओएस के लिए कमांड लाइन शेल डाउनलोड किया है, लेकिन जब मैं प्रोग्राम चलाता हूं और टाइप करता adb ...हूं तो मुझे त्रुटियां मिलती हैं।

नोट: मैं एंड्रॉइड स्टूडियो का उपयोग कर रहा हूं इसलिए मैं मान रहा हूं कि मुझे कुछ अतिरिक्त स्थापित करने की आवश्यकता नहीं है क्योंकि मुझे याद है कि एंड्रॉइड स्टूडियो ने कहा था कि इसमें सभी एसडीके उपकरण की आवश्यकता थी।

जवाबों:


160

सबसे आसान तरीका: ADB शेल के माध्यम से Sqlite3 से कनेक्ट करें

मुझे एंड्रॉइड स्टूडियो में ऐसा करने का कोई तरीका नहीं मिला है, लेकिन मैं हर बार फ़ाइल को खींचने के बजाय एक दूरस्थ शेल के साथ db तक पहुंचता हूं।

सभी जानकारी यहां पाएं: http://developer.android.com/tools/help/sqlite3.html

1- कमांड प्रॉम्प्ट में अपने प्लेटफॉर्म-टूल्स फोल्डर पर जाएं

2- adb devicesअपने उपकरणों की सूची प्राप्त करने के लिए कमांड दर्ज करें

C:\Android\adt-bundle-windows-x86_64\sdk\platform-tools>adb devices
List of devices attached
emulator-xxxx   device

3- अपने डिवाइस के लिए एक शेल कनेक्ट करें:

C:\Android\adt-bundle-windows-x86_64\sdk\platform-tools>adb -s emulator-xxxx shell

4 ए- आप रूट किए गए डिवाइस पर इस चरण को बायपास कर सकते हैं

run-as <your-package-name> 

4b- अपने db फ़ाइल वाले फ़ोल्डर में नेविगेट करें:

cd data/data/<your-package-name>/databases/

5- अपने db से जुड़ने के लिए sqlite3 चलाएं:

sqlite3 <your-db-name>.db

6- sqlite3 कमांड चलाएं जो आपको पसंद हैं जैसे:

Select * from table1 where ...;

नोट: नीचे चलाने के लिए और आदेश खोजें।

SQLite धोखा देती है

SQLite डेटाबेस में तालिकाओं को देखने के लिए कुछ चरण हैं:

  1. अपने डेटाबेस में तालिकाएँ सूचीबद्ध करें:

    .tables
    
  2. सूची कैसी दिखती है:

    .schema tablename
    
  3. संपूर्ण तालिका प्रिंट करें:

    SELECT * FROM tablename;
    
  4. सभी उपलब्ध SQLite प्रॉम्प्ट कमांड की सूची:

    .help
    

1
क्या इस विधि को रूट की आवश्यकता है?
टोमिस्लाव २२

1
@ tomislav2012 हाँ जब से आप /data/dataनिर्देशिका में जा रहे हैं
धीरज भास्कर

1
sqlite3 कमांड को मेरे HTC One S पर Android 4.1
Alex

@लेक्स मुझे सुझाव है कि sqlite3 खोजना और इसे स्थापित करना अगर यह संभव है, तो विकास इसके साथ सरल है
धीरज भास्कर

1
धन्यवाद। यदि आप अपने कंप्यूटर के डेस्कटॉप में साइक्लाइट फाइल ट्रांसफर करना चाहते हैं, तो आप पहले कर सकते हैं cp /data/data/<your-package-name>/databases/<your-db-name>.db /sdcard। फिर, फ़ाइल को अपने ईमेल पर भेजने के लिए, एक्सप्लोरर जैसे फ़ाइल प्रबंधक का उपयोग करें। :)
चोक यान चेंग

76

मेरे लिए सबसे आसान तरीका एंड्रॉइड डिवाइस मॉनिटर का उपयोग डेटाबेस फ़ाइल और SQLite DataBase ब्राउज़र को फाइल को देखने के लिए एंड्रॉइड स्टूडियो का उपयोग करने के लिए एंड्रॉइड को प्रोग्राम करने के लिए अभी भी है।

1) एंड्रॉइड स्टूडियो से एंड्रॉइड एमुलेटर के साथ डेटाबेस ऐप चलाएं और लॉन्च करें। (मैंने सत्यापित करने के लिए डेटाबेस ऐप में कुछ डेटा डाला)

2) Android डिवाइस मॉनिटर चलाएं। कैसे चलाना है ;; के पास जाओ [your_folder] > sdk >tools। आप उस फोल्डर में Monitor.bat देख सकते हैं। shift + right clickफ़ोल्डर के अंदर और चुनें " Open command window here"। यह कार्रवाई कमांड प्रॉम्प्ट लॉन्च करेगी। प्रकार monitorऔर Android डिवाइस मॉनिटर लॉन्च किया जाएगा।

3) उस एमुलेटर का चयन करें जो आप वर्तमान में चला रहे हैं। फिर जाएंdata>data>[your_app_name]>databases

4) आइकन पर क्लिक करें (शीर्ष दाएं कोने पर स्थित) (आइकन पर होवर करें और आपको "डिवाइस से एक फ़ाइल खींचना") दिखाई देगा और आप को कहीं भी बचा सकते हैं

5) SQLite DataBase Browser लॉन्च करें। उस फ़ाइल को खींचें और छोड़ें जिसे आपने अभी उस ब्राउज़र में सहेजा है।

6) Browse Dataटैब पर जाएं और देखने के लिए अपनी तालिका का चयन करें।

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


9
मुझे लगता है कि आप डिवाइस मॉनिटर से डेटा डायरेक्टरी नहीं खोल सकते, कम से कम मैं ऐसा नहीं कर सकता।
एस्टेवेक्स

6
आप गैर-रूट किए गए डिवाइस पर डेटा निर्देशिका नहीं खोल सकते, लेकिन आप इसे किसी एमुलेटर पर कर सकते हैं।
तद

3
गैर-रूट किए गए डिवाइस पर डेटा कैसे खोलें?
सुजीत मंजवाना

4
जबकि एमुलेटर चल रहा है आप अदब का उपयोग करके एमुलेटेड एंड्रॉइड से फाइल डाउनलोड कर सकते हैं। उदाहरण: adb pull /data/data/com.yourpackagename.here/dat डेटाबेस
बेकर

मुझे लगता है कि @SujithManjavana DataBase Browser से सिर्फ sqlite डेटाबेस खोलने के बारे में बात कर रहा है, जबकि यह अतिथि ओएस में एमुलेटर पथ में था। ओएस की मेजबानी के लिए वापस कॉपी करने के बाद नहीं।
प्रदीप संजय

14

आपके द्वारा जारी किया जा रहा मुद्दा आम है और प्रलेखन में अच्छी तरह से नहीं समझाया गया है। सामान्य उपकरणों में sqlite3 डेटाबेस बाइनरी शामिल नहीं है, यही वजह है कि आपको एक त्रुटि मिल रही है। एंड्रॉइड एम्यूलेटर, ओएसएक्स, लिनक्स (यदि इंस्टॉल किया गया है) और विंडोज (स्थापित होने के बाद) में बाइनरी है, तो आप अपनी मशीन पर स्थानीय रूप से एक डेटाबेस खोल सकते हैं।

वर्कअराउंड डेटाबेस को आपके डिवाइस से आपके स्थानीय मशीन में कॉपी करना है। यह एडीबी के साथ पूरा किया जा सकता है, लेकिन इसके लिए कई चरणों की आवश्यकता होती है।

शुरू करने से पहले आपको कुछ जानकारी की आवश्यकता होगी:

  • SDK का पथ (यदि आपके OS वातावरण में शामिल नहीं है)
  • अपने <package name>, उदाहरण के लिए,com.example.application
  • एक <local path>अपने डेटाबेस, जैसे जगह। ~/Desktopया%userprofile%\Desktop

इसके बाद आपको यह समझने की आवश्यकता होगी कि प्रत्येक कमांड को किस टर्मिनल पर पहले उदाहरण में लिखा गया है, नीचे टाइप नहीं किया गया है, लेकिन क्या आप जानते हैं कि हम किस शेल में हैं:

  • > = आप OS कमांड प्रॉम्प्ट
  • $ = ADB शेल कमांड प्रॉम्प्ट
  • ! = ADB शेल एडमिन कमांड प्रॉम्प्ट के रूप में
  • %

अगला टर्मिनल या कमांड से निम्नलिखित कमांड दर्ज करें (पहले चरित्र या पाठ दर्ज न करें ())

> adb shell
$ su
! cp /data/data/<package name>/Databases/<database name> /sdcard
! exit
$ exit
> adb pull /sdcard/<database name> <local path>
> sqlite3 <local db path>
% .dump
% .exit  (to exit sqldb)

यह आपके स्थानीय मशीन पर डेटाबेस की प्रतिलिपि बनाने के तरीके और स्थानीय रूप से डेटाबेस को पढ़ने के बारे में एक बहुत ही गोल है। SO और अन्य संसाधन बताते हैं कि एमुलेटर से अपने डिवाइस पर sqlite3 बाइनरी को कैसे स्थापित किया जाए लेकिन एक समय के लिए यह प्रक्रिया काम करती है।

यदि आपको डेटाबेस को अंतःक्रियात्मक रूप से एक्सेस करने की आवश्यकता है तो मैं आपके एप्लिकेशन को एक एमुलेटर (जो पहले से ही sqlite3 था) में चलाने या अपने उपकरणों / xbin पथ पर sqlite स्थापित करने का सुझाव देगा ।


9
  1. एक टर्मिनल खोलें
  2. cd <ANDROID_SDK_PATH>(विंडोज पर मेरे लिए cd C:\Users\Willi\AppData\Local\Android\sdk)
  3. cd platform-tools
  4. adb shell (यह केवल तभी काम करता है जब केवल एक एमुलेटर चल रहा हो)
  5. cd data/data
  6. su (सुपर यूजर विशेषाधिकार हासिल करें)
  7. cd <PACKAGE_NAME>/databases
  8. sqlite3 <DB_NAME>
  9. एसक्यूएल स्टेटमेंट जारी करें ( महत्वपूर्ण: उन्हें समाप्त करें ;, अन्यथा स्टेटमेंट जारी नहीं किया जाता है और यह इसके बजाय एक नई लाइन पर टूट जाता है।)

नोट: यदि आपको निर्देशिका सामग्री को सूचीबद्ध करने की आवश्यकता है तो ls(लिनक्स) या dir(विंडोज़) का उपयोग करें ।


8

जैसा कि आप adb टाइप करते हैं, इसका क्या उल्लेख है?

step1. >adb shell
step2. >cd data/data
step3. >ls -l|grep "your app package here"
step4. >cd "your app package here"
step5. >sqlite3 xx.db

खैर ... मुझे नहीं पता कि कहां टाइप करना है adb... जब मैं इसे SQLite3 शेल में टाइप करता हूं तो यह मुझे देता है ...>और यह एक कमांड के जारी रहने की उम्मीद कर रहा है। यह मूल रूप से एक की प्रतीक्षा कर रहा है ;। यदि मुझे जो अर्धविराम मिलता है वह मैं टाइप करता हूं error: near "adb": syntax error... adb shellकमांड प्रॉम्प्ट में टाइप करना मुझे बताता है कि adb एक मान्यता प्राप्त कमांड नहीं है ... क्या मुझे अपने पथ फ़ाइलों में adb जोड़ना चाहिए?
टेरेंस चो

पहला: आपको adb शेल (mac या linux: टर्मिनल में निष्पादित करें; विंडोज़: cmd पर रन करें) में जाना होगा; और फिर adb शेल में sqlite3 commond निष्पादित करें।
log1000

1
मैं ADB शेल से sqlite3 कमांड को कैसे निष्पादित कर सकता हूं? यह कहता है: /system/bin/sh: sqlite3: not found... और मैंने SQLite3 और ADB को पथ चर के रूप में पहले ही जोड़ लिया है ...
Terence Chow

? आप क्या उपकरण का उपयोग इच्छा यह एक संकेत कहां दे देंगे stackoverflow.com/questions/3645319/...
log1000

5

आप इसे फाइल में Stethoजोड़कर एक बहुत अच्छे टूल का उपयोग कर सकते हैं build.gradle:

compile 'com.facebook.stetho:stetho:1.4.1'

और अपने Applicationया Activity onCreate()विधि के अंदर इसे इनिशियलाइज़ किया :

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Stetho.initializeWithDefaults(this);
    setContentView(R.layout.activity_main);
}

फिर आप पते में क्रोम में db रिकॉर्ड देख सकते हैं :

chrome://inspect/#devices

अधिक जानकारी के लिए आप मेरी पोस्ट पढ़ सकते हैं: आसानी से अपने डीबी रिकॉर्ड कैसे देखें


4

उपकरणों के आधार पर आपको adb शेल में sqlite3 कमांड नहीं मिल सकता है। उस स्थिति में आप इसका अनुसरण करना चाहते हैं:

अदब का खोल

$
रन- as package.name $ cd। /d डेटाबेस /
$ ls -l # वर्तमान अनुमतियों के साथ - r = 4, w = 2, x = 1
$ chmod 666 ./dbname.db
$ बाहर निकलें
$ बाहर निकलें bb
पुल / डेटा। /data/package.name/dat डेटाबेस/dbname.db ~ / Desktop /
adb push ~ / Desktop / dbname.db /data/data/package.name/dat डेटाबेस/dbname.db
adb शैल
$ run-as package.name
$ chmod 660 ./dat डेटाबेस/dbname.db #Restore मूल अनुमतियाँ
$ बाहर निकलें
$ बाहर निकलें

संदर्भ के लिए https://stackoverflow.com/a/17177091/3758972 पर जाएं

उपरोक्त प्रक्रिया का पालन करने के बाद ऐसे मामले हो सकते हैं जब आपको "दूरस्थ वस्तु नहीं मिली"। फिर एडीबी शेल में अपने डेटाबेस फ़ोल्डर की अनुमति को 755 में बदलें।

$ chmod 755 डेटाबेस /

लेकिन कृपया ध्यान रखें कि यह केवल एंड्रॉइड वर्जन <21 पर काम करेगा।


यह कोशिश की ("एडीबी शेल" के साथ शुरू, फिर "chmod", फिर डेटाबेस के "adb पुल" कर) लेकिन एक "adb: त्रुटि: स्टेट रिमोट ऑब्जेक्ट '/ पथ / / db' करने में विफल: अनुमति से इनकार किया "त्रुटि। और "chmod 666" काम करने लगा (कोई त्रुटि नहीं थी, वैसे भी)। मैं पिछले समय में एंड्रॉइड डिवाइस मॉनिटर का उपयोग करके db फाइल को खींचने में सक्षम रहा हूं लेकिन अगर मैं इसे आजमाता हूं तो मैं प्रारंभिक "डेटा" निर्देशिका का विस्तार भी नहीं कर सकता। मैंने एंड्रॉइड डिवाइस मॉनिटर को एमुलेटर विंडो के साथ चलने और उसी परिणामों के साथ नहीं चलाने की कोशिश की है। भगवान यह बेवकूफी है।
क्लैमम

एक नई हैक के रूप में, आप सभी डेटा और नेटवर्क निगरानी उद्देश्य के लिए स्टेथो लाइब्रेरी का उपयोग कर सकते हैं। github.com/facebook/stetho
नितेश वर्मा

हम्म, हाँ मुझे लगता है कि मुझे स्टेथो का उपयोग करना होगा। मैंने इसे पहले सुझाया था, लेकिन महसूस नहीं किया कि मैं इसके साथ SQL क्वेरी चला सकता हूं, इसलिए यह मेरे लिए काम करेगा। मैं अब क्रोम ब्राउज़र का उपयोग नहीं करता, लेकिन अगर इसे स्थापित करने से मुझे एंड्रॉइड डीबीएस के खिलाफ निरीक्षण और क्वेरी करने की अनुमति मिलती है, तो मैं इसे करूँगा। यह ऐसा नहीं है कि एंड्रॉइड डिवाइस मॉनिटर तरीका सुपर त्वरित था, आपको डीबी को खींचना होगा फिर इसे किसी अन्य ऐप में वैसे भी खोल सकते हैं। धन्यवाद नितेश
क्लमम
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.