0

気が狂う!多分誰かが私を助けることができますか?!実行中のサーバーにsqlite-databaseがありますが、これはphp-scriptが原因で受信します。(明確にするために:私は応答としてデータベースを提供するphp-scriptを呼び出しています)。応答を使用して、後でアプリで使用する通常の*.dbファイルに「解析」しようとしています。

* .dbをアセットフォルダーに配置している間、アプリは正常に動作します。ただし、アプリを呼び出すたびに更新されたデータベースを取得する必要があります。したがって、サーバーから何らかの方法で受信する必要があります。

念のために言っておきますが、なぜ彼らがそのためにphp-scriptを使用するのかはわかりませんが、iOSバージョンのアプリでは完全に機能します。したがって、スクリプトが機能することを100%確信しています。

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

編集:これが私がやろうとしていることです。private void copyDatabase(){InputStream myInputDB = null; OutputStream myOutputDB = null; HttpResponse応答=null; //作成したばかりの空のdbへのパスStringdbFilePath= DB_PATH + KeyConstants.DB_NAME;

     // Creating HTTP client
    HttpClient httpClient = new DefaultHttpClient();
    // Creating HTTP Post
    HttpPost httpPost = new HttpPost(
            "http://USERNAME:PASSWORD@ADRESS/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.");
    }
4

1 に答える 1

0

何に問題がありますか? Android アプリまたは PHP スクリプトを使用しますか?

データだけでなく、DBファイル全体のリクエストとレスポンスがある理由がわかりません(そして、遅延読み取りの方が優れています)が、それはあなたのケースの問題ではありません。

実行ごとにすべての DB を「ダウンロード」する必要がある場合は、そのためのメソッドを呼び出して実装する必要があります。最初のアクティビティで、onCreate() メソッド内でこのメソッドを呼び出します。このアクティビティ内に単純なメソッドを作成するか、より適切な方法でインスタンス化される単純なクラスを作成し、そのメソッドを最初のアクティビティの onCreate() 内で呼び出すことができます。

しかし、多分私はあなたの質問を理解していない...

編集: この問題を読んでみてください: SQLite db を /sdcard にダウンロードして、Android アプリからアクセスできますか?

于 2012-04-30T11:44:37.653 に答える