2013-02-04 11 views
6

sqliteデータベースを使用するアプリケーションを実行する私のアプリには、 'データベースの更新'ボタンがある機能があります。既存のsqliteデータベースファイルをandroidの新しいデータベースファイルに置き換える方法

ユーザーが[データベースの更新]ボタンをクリックすると、古いdbファイルをURLから新しいdbファイルにアップグレードする必要があります。

これを行う方法。この研究では、データベースが.apkファイルに置かれたときに変更することはできません。 解決策はありますか? 私を助けてください。 ありがとうございます。

+0

http://stackoverflow.com/questions/9109438/how-to-use-an-existing-database-with-an-android-application/9109728#9109728 –

答えて

0

アプリケーションの最初の起動時に、データベースをapkファイルの外部/内部ストレージにコピーする必要があります。 (文を使用するか、データベース全体を置換する)更新が必要な場合は、内部/外部メモリで問題なく操作できます。 アプリケーションを更新すると(新しいアプリケーションに新しいデータベースがあるかもしれません)、新しいアプリケーションの最初の起動時に、内部/外部メモリに保存されたデータベースを置き換える必要があります。

3

単にあなたはそれが自動的にupdate.Iがこれを使用しているだろうと

+0

こんにちは...私は立ち往生しています同じ問題.. disのための任意のコードスニペット??? – ryderz8

+1

彼はアプリケーションのディレクトリに直接データをコピーすると言っています。あなたのアプリのfoo.dbファイルは上記のディレクトリパターンにあります。しかし、私の場合、私はルートデバイスを持っていないので、databseフォルダにアクセスすることはできません。あなたは新しいものを作ることができるかもしれません。私は単純なIOでそれを解決した、他の答え。 – StarWind0

+0

.db-journal」ファイルを削除したようなものもありますか? –

3
private void importDatabase(String inputFileName) throws IOException 
{ 
    InputStream mInput = new FileInputStream(inputFileName); 
    String outFileName = YOUR_DB_PATH_HERE; 
    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(); 
} 

を働いている

  /data/data/<YOUR PACKAGE NAME>/databases/ 

このパスにダウンロードマネージャを使用してURLからDBファイルをダウンロードし、ファイルをコピーすることができ編集:

あなたはそれが役に立ちます:

How to use an existing database with an Android application

+0

チャームのように働いた! 他の人には注意してください。私はまったく同じコードで修復を許可しました。結局のところ、このファイルは単純なコピーです。 – StarWind0

関連する問題