2012-04-06 10 views
5

मैं तालिका में एकाधिक पंक्तियों को सम्मिलित करने के लिए लेनदेन का उपयोग कर रहा हूं। लेकिन, मुझे अभी भी एसडी कार्ड पर एसक्लाइट टेबल के साथ अस्थायी स्क्लाइट-जर्नल फ़ाइल बनाई जा रही है।Android SQLite जर्नल फ़ाइल को अक्षम कैसे करें?

मैं जर्नल फ़ाइल का निर्माण कैसे अक्षम करूं?

धन्यवाद

+3

जर्नल फ़ाइल एसक्लाइट डीबी द्वारा बनाई गई है जब आप लेनदेन का उपयोग बीमा के लिए करते हैं कि अगर किसी कारण से लेनदेन बाहरी माध्यमों से बाधित हो जाता है तो डीबी दूषित नहीं होगा। अगर मैं तुम थे तो मैं अकेला छोड़ दूंगा। –

+0

@ श्री विल्ल तो क्यों, एंड्रॉइड पर, जब कुछ भी डेटाबेस को स्पर्श नहीं कर रहा है, तो जर्नल को तब रखा जा रहा है, जब यह अन्य सिस्टम पर डिफ़ॉल्ट व्यवहार नहीं है? – Michael

उत्तर

8

आप स्मृति में पत्रिका रखने के लिए इतना है कि कोई -journal फ़ाइल बनाई गई है चुनाव कर सकते हैं:

pragma journal_mode=memory; 

ध्यान दें कि आप इस हर बार जब आप डेटाबेस को खोलने को चलाने के लिए की जरूरत है।

मैं सुझाव है कि आप पढ़ा है कि क्या का एक बेहतर विचार प्राप्त करने के लिए निम्नलिखित पर जा रहा है:

http://www.sqlite.org/pragma.html#pragma_journal_mode

+0

तो यह फ़ाइल अभी भी 'PRAGMA journal_mode = OFF' का उपयोग करने और डेटाबेस को बंद करने के बाद क्यों है? – Michael

+0

काम नहीं करता है। देखें: http://stackoverflow.com/questions/39246368/how-to-turn-off-journaling-sqlite-in-android?noredirect=1#comment65828847_39246368 –

5

पत्रिका है कि जब लेन-देन चल रहा है प्रयोग किया जाता है एक आंतरिक SQLite फ़ाइल है (रोल सुनिश्चित करने के लिए वापस)। आप इसे अक्षम नहीं कर सकते, और आप नहीं चाहते हैं।

+3

असल में आप इसे अक्षम कर सकते हैं :-) 'PRAGMA journal_mode = OFF' –

+0

के साथ मैंने निम्न कोशिश की: कर्सर c1 = db.rawQuery ("PRAGMA journal_mode = OFF", null); c1.close()। ऐसा कोई प्रभाव नहीं पड़ता है। मुझे अभी भी जर्नल फ़ाइल बनाई जा रही है – Arvind

+2

जैसा कि मैंने अपने उत्तर में बताया है, प्रगति जारी नहीं है इसलिए जब भी आप डीबी खोलते हैं तो इसे चलाने की आवश्यकता होती है। –

-1

आप नीचे दिए गए कोड का उपयोग कर पत्रिका फ़ाइल को नष्ट कर सकते हैं

@Override 
public void onOpen(SQLiteDatabase db) {   
    Cursor cc = db.rawQuery("PRAGMA journal_mode=DELETE",null); 
    Log.i(TAG,"--- cursor count " + cc.getCount());  
    super.onOpen(db);   
} 

आप उपयोग करने की आवश्यकता कर्सर रखें। कर्सर एक इंटरफ़ेस डेटाबेस क्वेरी द्वारा लौटाए गए परिणाम सेट पर यादृच्छिक रीड-राइट एक्सेस प्रदान करता है। यदि आप कर्सर का उपयोग करते हैं तो जर्नल फ़ाइल हटा दी जाएगी।

0

कृपया याद रखें, PRAGMA journal_mode=OFF या PRAGMA journal_mode=memory स्टेटमेंट प्रति लेनदेन आधार मान्य है। आपको इसे प्रत्येक लेनदेन के लिए सेट करने की आवश्यकता है।

संबंधित मुद्दे