2012-11-09 12 views
6

पर कैसे काम करता है मेरे पास दो गतिविधियां हैं।यह SQLiteOpenHelper Context

उनमें से एक कई मूल्यों की सूची देता है जबकि अन्य डीबी में नए मान जोड़ते हैं।

मैं एक वर्ग है जो SQLiteOpenHelper तक फैली हुई है और डीबी कनेक्शन, प्रश्नों, आदि

अब, मैं समझ SQLiteOpenHelper के निर्माता में यदि आप कोई संदर्भ जो अगर यह निर्धारित करने के लिए प्रयोग किया जाता है पारित करने के लिए है कि प्रबंधन करता है एक नया डीबी बनाने या मौजूदा एक खोलने के लिए।

लेकिन अगर मेरे पास प्रत्येक गतिविधि में SQLiteOpenHelper क्लास का एक उदाहरण है, तो संदर्भ अलग होगा।

क्या इससे बचने का कोई तरीका है?

धन्यवाद।

उत्तर

5

गतिविधि संदर्भ में (.getAplication()) गतिविधि के बजाय पास करें। इस तरह, दोनों उदाहरण एक ही संदर्भ का उपयोग कर डीबी तक पहुंचेंगे।

2

Context भिन्न हो सकता है लेकिन अलग-अलग डीबी नहीं बना सकता है। SQLiteOpenHelper constructor में name पैरामीटर है, यह डीबी फ़ाइल नाम है। यदि यह अस्तित्व में नहीं है तो Context पास नहीं होगा।

+0

प्रसंग सिस्टम संसाधनों तक पहुँचने के लिए एक इंटरफेस है। जैसा कि सबाव ने उल्लेख किया है, कौन सा डेटाबेस नाम से निर्धारित होता है। –

1

असल में, निर्मित डेटाबेस संदर्भ के अनुप्रयोग पैकेज से जुड़ा हुआ है। इसलिए इससे कोई फ़र्क नहीं पड़ता कि आपने एप्लिकेशन संदर्भ या गतिविधि संदर्भ पारित किया है या नहीं।

Context.java

/** 
* Open a new private SQLiteDatabase associated with this Context's 
* application package. Create the database file if it doesn't exist. 
... 
... 
*/ 
public abstract SQLiteDatabase openOrCreateDatabase(String name, 
     int mode, CursorFactory factory); 
संबंधित मुद्दे