ошибка базы данных Android - PullRequest
0 голосов
/ 29 мая 2011

Я создал базу данных Android программой SQLiteBrowser, а затем импортировал ее.Когда я запускаю свой код, это дает неожиданную ошибку.Я сделал

  1. Я открываю Android SDK и AVG Meneger и обедаю эмулятор.
  2. Затем я импортирую свою базу данных в / data / data / mypackage path.

    Когда я читаю, я должен импортировать ее / data / data / mypackage / database.Но когда я открываю путь mypackage, я вижу только папку lib.Поэтому я добавил в /data/data/mypackage.

  3. часть моего кода

    private static String dbName = "mobileGuideDatabase.db";                
    private static String dbPath = "/data/data/de.Guide" + dbName;
    
    SQLiteDatabase checkDB = null;
    
    try {
      checkDB = db.openDatabase(dbPath, null, SQLiteDatabase.OPEN_READONLY);
    } catch (SQLiteException ex) {
      throw ex;
    }
    

Так что же не так с этим разделом?

Ответы [ 2 ]

2 голосов
/ 29 мая 2011

В вашем пути в БД отсутствует косая черта.Теперь это будет: «/data/data/de.GuidemobileGuideDatabase.db», но я предполагаю, что вы хотите, чтобы это было «/data/data/de.Guide/mobileGuideDatabase.db"

0 голосов
/ 10 сентября 2012

Я надеюсь, что вы работаете на телефоне напрямую, телефон не позволит получить доступ к папкам данных.

  1. Создайте нашу собственную папку
  2. скопируйте базу данных в папку
  3. Откройте БД из этого места

Для справки

public void createDataBase() throws IOException {   
         String path=mContext.getDir("Folder_Name",
          Context.MODE_WORLD_WRITEABLE).getAbsolutePath(); 
          DB_PATH=path;  
          boolean mDataBaseExist = checkDataBase();   

          if(!mDataBaseExist)   {     
          try       {       copyDataBase();      }       
          catch (IOException mIOException)       
        {      Log.d("Exception",mIOException.getMessage());    
                throw new Error("ErrorCopyingDataBase");      
        } 
      }  
   }  

   private boolean checkDataBase()  {      
     Log.d(TAG, "In checkDataBase :::::"); 
     File dbFile = new File( DB_PATH+DATABASE_NAME);      
     Log.d("dbFile", dbFile + "   "+ dbFile.exists());     
     return dbFile.exists();  }   

    //Copy the database from assets  
    private void copyDataBase() throws IOException  {      
      Log.d(TAG, "In copyDataBase :::::");      
      InputStream mInput = mContext.getAssets().open(DB_NAME);     
      String outFileName = DB_PATH  + DATABASE_NAME;      
      Log.d(TAG, "In copyDataBase  outFileName:::::"+outFileName);      
      OutputStream mOutput = new FileOutputStream(outFileName);      
      byte[] mBuffer = new byte[1024];      int mLength;      

      while ((mLength = mInput.read(mBuffer))>0)      {         
        mOutput.write(mBuffer, 0, mLength);      
      }     

        mOutput.flush();      
       mOutput.close();     
       mInput.close();  
   }   

     //Open the database, so we can query it  
   public boolean openDataBase() throws SQLException  {      
    //DB_PATH +     String mPath = DB_PATH+ DATABASE_NAME;      
     Log.v("mPath", mPath);      
     mDataBase = SQLiteDatabase.openDatabase(mPath, null, 
     SQLiteDatabase.CREATE_IF_NECESSARY);      
      return mDataBase != null;  
   }  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...