2012-04-30 8 views
0

私はナッツに行くよ!多分誰かが私を助けることができますか? 実行中のサーバにsqliteデータベースがあります。これはPHPスクリプトのために受け取ります。 (これを明確にするために:私は応答としてデータベースを提供するphpスクリプトを呼び出しています)。応答で私は今私のアプリケーションのために使用する通常の* .dbファイルに "解析"しようとしています。php-scriptでダウンロードしてAndroidアプリ用データベースを使用

アセットフォルダに* .dbを入れてもアプリは正常に動作します。しかし、アプリを呼び出すたびに更新されたデータベースを取得する必要があります。したがって、私は何とかサーバーから受け取る必要があります。

私は彼らがなぜphpスクリプトを使っているのかわかりませんが、アプリのiOS版と完全に動作します。だから私はスクリプトがうまくいくことを100%確信しています。

これに関するヒントや解決策はありますか? ありがとう!

編集:これは私がやろうとしていることです。 プライベートvoid copyDatabase(){ InputStream myInputDB = null; OutputStream myOutputDB = null; HttpResponse response = null; //作成した空のdbへのパス 文字列dbFilePath = DB_PATH + KeyConstants.DB_NAME;

 // Creating HTTP client 
    HttpClient httpClient = new DefaultHttpClient(); 
    // Creating HTTP Post 
    HttpPost httpPost = new HttpPost(
      "http://USERNAME:[email protected]/u/db.php"); 


    try { 
     response = httpClient.execute(httpPost); 

     //Open your local db as the input stream 
     myInputDB = response.getEntity().getContent(); 

     //Open the empty db as the output stream 
     myOutputDB = new FileOutputStream(dbFilePath); 



     //transfer bytes from the inputfile to the outputfile 
     byte[] buffer = new byte[1024]; 
     int length; 
     while ((length = myInputDB.read(buffer)) > 0){ 
      myOutputDB.write(buffer, 0, length); 
     } 

     //Close the streams 
     myOutputDB.flush(); 
     myOutputDB.close(); 
     myInputDB.close(); 

    } catch (IOException ioEXC) { 
     throw new Error("Problem copying database from resource file."); 
    } 

答えて

0

何が問題になっていますか? AndroidアプリまたはPHPスクリプトを使用していますか?

私はDBファイル全体がリクエストレスポンスであり、データだけでなく(いくつかの怠惰な読書の方が良い)理解できないのは分かりませんが、それはあなたのケースに関係ありません。

実行するたびにすべてのDBをダウンロードする必要がある場合は、まず最初に、onCreate()メソッド内でこのメソッドを呼び出します。このアクティビティ内で単純なメソッドを作成することもできますし、より良いアプローチでは、これをインスタンス化し、そのメソッドを最初のアクティビティのonCreate()内で呼び出すための簡単なクラスを作成できます。

しかし、多分私はちょうどあなたが質問を理解していません...

EDIT:Can I download an SQLite db on /sdcard and access it from my Android app?

+0

私の問題は、私はデータベース全体私はアプリを起動するたびにダウンロードする必要があるということである。この問題を通読してみてください。データベースを取得するには、私にデータベースを送るPHPスクリプトを呼び出さなければなりません。そして、私は何とかPHPスクリプトの応答を動作するsqliteファイルに変換する必要があります。 – njsmecho

+0

@njsmecho PHPスクリプトは代わりに何を返すのですか?それはsqlite DBのバイナリデータですか?そうであれば、応答をsqlite.dbファイルとして保存し、SqliteHelper(またはデータ操作クラスが呼び出されたもの)だけをそのファイルにポイントすることができます。または? – shadyyx

+0

@njsmechoあなたのコードとあなたの質問にはまだ問題はありません。 DBファイルは正しく作成されていますか?あなたはそのファイルにアクセスしてSQLite DBとして読むことができますか?私の答えの中で提供されるリンクで問題を読んでみてください。 – shadyyx

関連する問題