2010-03-09 10 views
26

मैं एक एंड्रॉइड एप्लिकेशन पर काम कर रहा हूं जिसमें उपयोगकर्ता को उस ऐप का उपयोग करने से पहले उस ऐप के डेटाबेस में कई प्रविष्टियों (1000-10000 पंक्तियों वाली एक एकल तालिका) की आवश्यकता होगी। मैंने कुछ ट्यूटोरियल देखे हैं और मुझे ऐसा करने का सबसे अच्छा तरीका अनिश्चित है। क्या मुझे यह जांचना चाहिए कि प्रत्येक बार ऐप शुरू होने पर डेटाबेस मौजूद है या नहीं, और यदि यह नहीं है, तो इसे बनाएं और मुझे आवश्यक हजारों रिकॉर्ड डालें? या इस समस्या को संभालने का एक बेहतर तरीका है? आदर्श रूप में, इसे ऐप की इंस्टॉल प्रक्रिया के हिस्से के रूप में शामिल किया जा सकता है, लेकिन मुझे यकीन नहीं है कि यह संभव है या नहीं। किसी भी प्रतिक्रिया की काफी सराहना की जाएगी।एंड्रॉइड प्री-पॉप्युलेटेड डाटाबेस

+0

http://stackoverflow.com/a/9109728/265167 –

+1

मैं क्योंकि यह वास्तव में नहीं है एक जवाब के रूप में इस पोस्ट करने के लिए नहीं करना चाहती। एंड्रॉइड_ पर डाटाबेस बनाने के लिए जावा लिखने पर विचार करें (उदाहरण के लिए एडीबी के साथ धक्का सीएसवी फाइलों से)। फिर इसे इंस्टॉलेशन के लिए '/ assets' पर ज़िप करें। एक गैर-एंड्रॉइड वातावरण में एंड्रॉइड की अपेक्षाओं को ठीक से मिलान करने का प्रयास करना मेरे लिए एक नाजुक निर्माण चरण बन गया। आपके लिंक में – Gene

+0

@ JonDiY212 खराब एचटीएमएल। – Noumenon

उत्तर

17

यह लिंक अच्छा जवाब Ship an application with a database

+4

यहां लिंक है जो एसओ प्रश्न एंड्री संदर्भ में सर्वश्रेष्ठ उत्तर के रूप में प्रस्तुत किया गया है। यह आपके एंड्रॉइड ऐप के साथ पूर्व-निर्मित डेटाबेस वितरित करने का एक बहुत अच्छा लेख है: http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/ –

+0

समान लेकिन ब्रीफ़र : http://www.helloandroid.com/tutorials/how-have-default- डाटाबेस –

+0

http: // stackoverflow।कॉम/प्रश्न/910 9 438/पहले से निर्मित-डेटाबेस-साथ-एंड्रॉइड/910 9 728 # 910 9 728 –

3

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

संपीड़न काफी आसान है और ओएस द्वारा स्वयं समर्थित है।

आशा है कि यह SQLiteOpenHelper से :-)

+1

आकार सीमा 1 एमबी है। –

1

JavaDoc किसी भी मदद की थी:

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

एक उदाहरण के लिए, NotePadProvider वर्ग नोटपैड नमूना आवेदन में, नमूनों में/SDK के निर्देशिका देखें।

तो अगर आप इस वर्ग का विस्तार, आप 3 तरीकों जो कुछ मामलों में बुलाया जाएगा और आप चुन सकते हैं, क्या करने के लिए क्या किया है। सबसे अच्छा अभ्यास :) Thats

2

है यहाँ कैसे बना सकते हैं और एक डेटाबेस को पॉप्युलेट करने का एक उदाहरण है, आप अनुप्रयोग पर यह सिर्फ कर सकते हैं स्थापित करते हैं, यह केवल एक ही प्रविष्टि बनाता है, हालांकि तो आप जो करना चाहते हैं उसके लिए अक्षम हो सकता है।

private static class settingsDatabaseHelper extends SQLiteOpenHelper{ 

    //SQL String for creating the table required 
    private static final String CREATE_SETTINGS_TABLE 
    = "CREATE TABLE tbl_settings(" + 
      "_ID INTEGER PRIMARY KEY AUTOINCREMENT," + 
      "VOIPUSERNAME TEXT," + 
      "VOIPAUTHID TEXT," + 
      "PASSWORD TEXT," + 
      "VOIPDISPLAYNAME TEXT," + 
      "SIPPROXYSERVER TEXT," + 
      "SIPREGISTRAR TEXT," + 
      "SIPREALM TEXT," + 
      "EXPIRESTIME INTEGER);";  

    //constructor 
    public settingsDatabaseHelper(Context context, String name, 
      CursorFactory factory, int version) { 
     super(context, name, factory, version); 

    } 

    @Override 
    public void onCreate(SQLiteDatabase db) { 
     db.execSQL(CREATE_SETTINGS_TABLE); 
     ContentValues initialValues = new ContentValues(); 
      initialValues.put("VOIPUSERNAME", "xxxxx"); 
      initialValues.put("VOIPAUTHID", "xxxxxxxxxx"); 
      initialValues.put("PASSWORD", "xxxxxx"); 
      initialValues.put("VOIPDISPLAYNAME", "xxxxxxxxx"); 
      initialValues.put("SIPPROXYSERVER", "xxxxxxxxxxxxx"); 
      initialValues.put("SIPREGISTRAR", "xxxxxxxxxxx"); 
      initialValues.put("SIPREALM", "xxxxxxxxxx"); 
      initialValues.put("EXPIRESTIME", xxxxxxxxxxx); 
      Log.d("1.6", "gets to here"); 
      db.insert(SETTINGS_TABLE, null, initialValues); 

    } 

    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
     Log.w(TAG, "Upgrading database from version " + oldVersion + " to " + 
       newVersion + ", which will destroy all old data"); 

     db.execSQL("DROP TABLE IF EXISTS " + SETTINGS_TABLE); 
     onCreate(db); 

    } 

} 

//end helper class 
} 
+0

नीचे वोट के लिए एक स्पष्टीकरण कृपया? –

+0

मैं इसे 'ऐप इंस्टॉल पर कैसे कर सकता हूं?' क्या कोड का यह हिस्सा केवल स्थापना पर निष्पादित है? –

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