2017-02-02 5 views
0

私は、あらかじめ作成されたデータをクラックすることができますが、オンラインサーバと同期した後でも古いデータベースを取得します。私は新しいデータがメモリに保存され、assestsに格納されたデータベースには書き込まれないと思います。 どうすればライブのsqliteデータベースを取得できますか、アプリは現在同期後に使用しています。オンラインデータベースから同期した後にアンドロイドアプリからsqliteデータベースを取得

+0

これまで何を試してみましたか?どのように質問をするにはhttp://stackoverflow.com/help/how-to-ask –

+0

あなたは現在使用されているデバイスからデータベースを引き出すことを意味ですか? –

+0

はい、私はアプリケーションをビルド中に配置された古いデータベースを引き出すことができますが、最新の同期データを取得したい場合は、@ gopal_patil –

答えて

0

古いデータベースと新しいデータベースで変更される可能性のあるすべてのオブジェクトを比較します。存在しないレコードを削除し、新しいレコードを挿入します。

代わりに古いデータベースを削除して、新しいデータベースを置き換えてダウンロードしてください。

+0

返事ありがとうございます。しかし、私はアプリケーションを逆コンパイルしています。しかし、ちょうどそれのメモリからsqliteを得る何とか –

0

このファイルをプルすると、新しいデータを取得できなくなります。 これを試すと、データを読み込んで新しいファイルを作成します。

public boolean backUpDB() { 
     String currentDBPath = ""; //db path 
       + "DB_NAME"; 
     File data = Environment.getDataDirectory(); 

     if (isExternalStorageAvailable()) { 
      File folder; 
      folder = new File(
        context.getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS) 
          + "/backup_path/"); 
      if (!folder.exists()) { 
       folder.mkdir(); 
      } 
      String path = folder + ""; 

      File SDPath = new File(path); 
      if (!SDPath.exists()) { 
       SDPath.mkdir(); 
      } 
      try { 
       File currentDB = new File(data, currentDBPath); 
       InputStream input = new FileInputStream(currentDB); 
       byte dataa[] = new byte[input.available()]; 
       input.read(dataa); 

       OutputStream out = new FileOutputStream(path + "/" 
         + "DB_NAME"); 
       out.write(dataa); 
       out.flush(); 
       out.close(); 
       input.close(); 
      } catch (Exception e) { 
       Commons.printException("exception," + e + ""); 
       return false; 
      } 
      return true; 
     } else { 
      return false; 
     } 

    } 
関連する問題