2011-08-14 10 views
33

मेरी गतिविधि में मैं क्या तरहSQLiteDatabase पर SQLiteOpenHelper का उपयोग क्यों करें?

DatabaseHelper helper = new DatabaseHelper(this); 
SQLiteDatabase db = helper.getWriteableDatabase(); 
SQLiteDatabase db_2 = helper.getReadableDatabase(); 
Cursor dbResult = db_2.rawQuery("SELECT value FROM data", null); 
// do sometning with cursors 
dbResult.close(); 
helper.close(); 

कक्षा का उपयोग कर SQLiteOpenHelper के लाभ है उदाहरण

SQLiteDatabase db = openOrCreateDatabase(Preferences.DB_NAME, Context.MODE_PRIVATE, null); 
db.execSQL("CREATE TABLE IF NOT EXISTS data (id INTEGER PRIMARY KEY, value VARCHAR)"); 
Cursor dbResult = db.rawQuery("SELECT value FROM data", null); 
// do sometning with cursors 
dbResult.close(); 
db.close(); 

के लिए है ही

public class DatabaseHelper extends SQLiteOpenHelper { 
    public DatabaseHelper(Context context) { 
     super(context, Preferences.DB_NAME, null, Preferences.DB_VERSION); 
    } 

    @Override 
    public void onCreate(SQLiteDatabase db) { 
     String query = "CREATE TABLE IF NOT EXISTS data (id INTEGER PRIMARY KEY, value VARCHAR)"; 
     db.execSQL(query); 
     db.close(); 
    } 

    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
    } 
} 

उत्तर

34

SQLiteDatabase

SQLiteDatabase में SQL आदेश, निष्पादित करने, हटाने, निष्पादित करने और अन्य सामान्य डेटाबेस प्रबंधन कार्यों को करने के तरीके हैं।

SQLiteOpenHelper

एक सहायक वर्ग डेटाबेस निर्माण और संस्करण प्रबंधन का प्रबंधन करने के।

मैं यह कहूंगा, SQLiteOpenHelper के साथ आने वाली अपग्रेड आपके एप्लिकेशन को अपग्रेड करते समय वास्तव में आसान है। यह मुख्य रूप से निर्माण और उन्नयन/संस्करण प्रबंधन के लिए है। SQLiteDatabase मुख्य रूप से सीआरयूडी संचालन के लिए है (आप इसके साथ बना सकते हैं लेकिन यही SQLiteOpenHelper के लिए है)।

+2

जैक क्या कहा जाता है सही है। ध्यान रखें 'SQLiteOpenHelper' वास्तव में 'SQLiteDatabase' वर्ग से स्थिर विधियों को आमंत्रित करता है। – dnkoutso

12

SQLiteOpenHelper डेटाबेस बनाने और प्रारंभ करने के कार्यों को सरल बनाने के लिए उपयोगिता प्रदान करता है यदि यह पहले से नहीं बनाया गया है और डेटाबेस की सामग्री को परिवर्तित कर रहा है जब आपका एप्लिकेशन अपग्रेड हो रहा है और डेटाबेस स्कीमा बदलता है।

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

+10

क्या आप कृपया बता सकते हैं कि आपके साथ क्या मतलब है ... "लेनदेन डालना ..."। स्रोत कोड को देखने के बाद सहायक वर्ग में बहुत अधिक काम नहीं है। यह अस्तित्व की जांच करता है, डेटाबेस बनाता है या खोलता है, संस्करण की जांच करता है और क्रेट/ऑन अपडेट पर कॉल करता है। यदि आप SQLiteOpenHelper का उपयोग करते हैं तो अपने बयानों के आसपास लेनदेन बनाना अभी भी आपके ऊपर है। –

3

अन्य उत्तरों के ऊपर, SQLiteOpenHelper कक्षा में एक बहुत ही महत्वपूर्ण विशेषता है, इसमें 2 सिंक्रनाइज़ किए गए तरीके हैं, getWritableDatabase() और getReadableDatabase()

इसका मतलब है कि आपके डेटाबेस ऑपरेशंस thread safe हैं। SQLiteOpenHelper वर्ग से

कोड स्निपेट

public SQLiteDatabase getReadableDatabase() { 
    synchronized (this) { 
     return getDatabaseLocked(false); 
    } 
} 

और

public SQLiteDatabase getWritableDatabase() { 
    synchronized (this) { 
     return getDatabaseLocked(true); 
    } 
} 
0

के रूप में यह आधिकारिक डेवलपर संदर्भ

में डेटाबेस निर्माण और संस्करण प्रबंधन का प्रबंधन करने के लिए एक सहायक वर्ग लिखा है।

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

इस वर्ग आसान ContentProvider कार्यान्वयन उद्घाटन स्थगित और पहली बार उपयोग जब तक डेटाबेस के उन्नयन, लंबे समय से चल डेटाबेस उन्नयन के साथ आवेदन स्टार्टअप अवरुद्ध से बचने के लिए बनाता है।

उदाहरण के लिए, एसडीके के नमूने/निर्देशिका में नोटपैड नमूना एप्लिकेशन में नोटपैडप्रोवाइडर क्लास देखें।

तो SQLiteOpenHelper चीजों को बहुत आसान बनाता है।

आप SQLiteOpenHelper के साथ SQLite को संभालने का तरीका जानने के लिए इस लिंक का उपयोग कर सकते हैं। SQLiteOpenHelper Tutorial

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