2010-05-20 16 views
6

के रूप में हम एंड्रॉइड डेवलपर्स जानते हैं, SQLiteDatabaseexecSQL विधि केवल एक कथन निष्पादित कर सकती है।एंड्रॉइड पर कुशल बैच एसक्यूएल क्वेरी निष्पादन डेटाबेस

दस्तावेज़ का कहना है:

एक भी एसक्यूएल बयान है कि एक प्रश्न नहीं है निष्पादित। उदाहरण के लिए, CREATE TABLE, DELETE, INSERT, आदि ; से अलग एकाधिक बयान समर्थित नहीं हैं।

मुझे रिकॉर्ड, 1000 और गिनती के बैच में लोड करना होगा।
मैं इन कुशलतापूर्वक कैसे सम्मिलित करूं?
और इन एसक्यूएल को अपने एपीके के साथ वितरित करने का सबसे आसान तरीका क्या है?

मेरा उल्लेख है कि पहले से ही एक सिस्टम डेटाबेस है और मैं इसे onUpdate ईवेंट पर चलाऊंगा।

मैं इस कोड अब तक है:

List<String[]> li = new ArrayList<String[]>(); 
     li.add(new String[] { 
       "-1", "Stop", "0" 
     }); 
     li.add(new String[] { 
       "0", "Start", "0" 
     }); 
    /* the rest of the assign */ 
try { 
     for (String[] elem : li) { 
      getDb().execSQL(
        "INSERT INTO " + TABLENAME + " (" + _ID + "," + NAME + "," + PARSE_ORDER 
          + ") VALUES (?,?,?)", elem); 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

उत्तर

16

मैं इन कुशलतापूर्वक डालूँ?

उपयोग लेन-देन:

db.beginTransaction(); 
    try { 
     for(;;) { 
      db.execSQL(...); 
      } 
     db.setTransactionSuccessful(); 
    } finally { 
     db.endTransaction(); 
    } 
1

मुझे लगता है कि तुम क्या है, उन 1000 रिकॉर्ड लोड करने के लिए एक ही रास्ता है, अब है जहाँ तक की तैनाती है कि डीबी अपने apk फ़ाइल के साथ के रूप में इस पोस्ट की जाँच :

http://www.helloandroid.com/tutorials/how-have-default-database

+0

मैं इस समस्या के बारे में दस्तावेज है, और सब समाधान तथ्य यह है कि हम एक नया डेटाबेस बनाने पर विशेष आधारित हैं। लेकिन मुझे इसे अपग्रेड पर चाहिए, इसलिए मौजूदा डेटाबेस को बदलने के लिए अच्छा नहीं है, मुझे वहां उपयोगकर्ता सामग्री रखना है। – Pentium10

+0

कोई कारण नहीं है कि आप दो डेटाबेस का उपयोग नहीं कर सकते - एक उपयोगकर्ता डेटाबेस और एक स्थिर सूचना डेटाबेस। इस तरह आप उपयोगकर्ता डेटा को छूटे रहते हुए अपग्रेड पर स्थैतिक डेटाबेस को पूरी तरह से बदल सकते हैं। –

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