2012-12-29 19 views
5

मेरे पास assets फ़ोल्डर में एक .db फ़ाइल है। मैंने इसे एम्यूलेटर में data/data/<packagename>/databases/ फ़ोल्डर में कॉपी किया है और इसके कामकाजी जुर्माना ..डाटाबेस को संपत्ति फ़ोल्डर से डिवाइस पर कॉपी नहीं किया जा रहा है

लेकिन जब मैं इसे डिवाइस पर चलाता हूं तो यह बल बंद हो जाता है। यह

SQLite exception: no such table: tbl_user 

यहाँ मेरी कोड है दिखाया जा रहा है ..

public class DatabaseHelper extends SQLiteOpenHelper { 

     public DatabaseHelper() { 

      super(dataContext, DATABASE_NAME, null, 1); 

      DB_PATH = "/data/data/" 
        + dataContext.getApplicationContext().getPackageName() 
        + "/databases/"; 

      Log.d("PATH", DB_PATH); 

      boolean dbExist = checkDataBase(); 
      if (!dbExist) { 

       this.getReadableDatabase(); 
       try { 
        copyDataBase(); 

       } catch (IOException e) { 
        Log.d("Error", e.toString()); 
       } 
      } 

     } 

     private void copyDataBase() throws IOException { 
      // TODO Auto-generated method stub 

      InputStream inFile = dataContext.getAssets().open(DATABASE_NAME); 
      String outFileName = DB_PATH + DATABASE_NAME; 
      OutputStream myOutput = new FileOutputStream(outFileName); 
      byte[] buffer = new byte[1024]; 
      int length; 
      while ((length = inFile.read(buffer)) > 0) { 
       myOutput.write(buffer, 0, length); 
      } 
      // Close the streams 
      myOutput.flush(); 
      myOutput.close(); 
      inFile.close(); 
     } 

     private boolean checkDataBase() { 
      // TODO Auto-generated method stub 

      File dbFile = new File(DB_PATH + DATABASE_NAME); 

      return dbFile.exists(); 

     } 

मैं कॉपी करने के लिए कुछ और करना है चाहिए कि डिवाइस के लिए डाटाबेस ???

धन्यवाद ..

+2

मैं वास्तव में 'SQLiteAssetHelper' का उपयोग करने की अनुशंसा करता हूं, क्योंकि इसमें पूरी प्रक्रिया डीबग हुई है, अपने आप को रोल करने के बजाए: https://github.com/jgilfelt/android-sqlite-asset-helper – CommonsWare

+0

कृपया इस लिंक को देखें http://www.reigndesign.com/blog/using-your-own-sqlite-डेटा- इन-android-अनुप्रयोगों / –

उत्तर

5

जवाब ... :)

यहाँ से ..

http://www.anddev.org/networking-database-problems-f29/missing-table-in-sqlite-with-specific-version-of-desire-hd-t50364.html

यह संस्करण 2.3.6 के साथ समस्या यह थी समझे ... यह था अन्य उपकरणों के साथ काम करना ... समस्या को हल करने के लिए बस तीन पंक्तियां जोड़ दी गईं ...

boolean dbExist = checkDataBase(); 
     SQLiteDatabase db_Read = null; 
     if (!dbExist) 
     { 
      db_Read = this.getReadableDatabase(); 
      db_Read.close(); 

      try 
      { 
       copyDataBase(); 
      } 
      catch (IOException e) 
      { 
       Log.d("Error", e.toString()); 
      } 
     } 
0

बस संपत्ति फ़ाइल में .png या किसी अन्य संपीड़ित प्रारूप में डेटाबेस फ़ाइल .db एक्सटेंशन को 2.1, 2.2 और ऊपर के डिवाइसों में काम करेगा