1

私のアプリはリンクからデータベースをダウンロードする必要があります。データベースをダウンロードしてSDカードに保存するために使用するコードは次のとおりです。

public void DownloadBD() {
    try {
        URL url = new URL(
                "http://mylink/dbHandler.axd?SqliteDbVersion=0");

        HttpURLConnection urlConnection = (HttpURLConnection) url
                .openConnection();

        urlConnection.setRequestMethod("GET");
        urlConnection.setDoOutput(true);
        urlConnection.connect();

        File SDCardRoot = Environment.getExternalStorageDirectory();
        File file = new File(SDCardRoot, "DirLaguna.db");

        FileOutputStream fileOutput = new FileOutputStream(file);

        InputStream inputStream = urlConnection.getInputStream();

        int totalSize = urlConnection.getContentLength();
        int downloadedSize = 0;

        byte[] buffer = new byte[1024];
        int bufferLength = 0;
        while ((bufferLength = inputStream.read(buffer)) > 0) {
            fileOutput.write(buffer, 0, bufferLength);
            downloadedSize += bufferLength;
        }
        fileOutput.close();
        location = file.getAbsolutePath();
    } catch (MalformedURLException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

すべてが正常に動作しているように見えますが、現時点ではデータベースにクエリを実行したい (生のクエリを使用しています) テーブルが存在しないというエラーが表示されます。

その後、アプリケーションのデバッグを試みたところ、データベースが破損しているというエラーが表示されました。ダウンロード プロセスがデータベースを破損させていると思います。

共有するコードが不足している場合は、教えてください。

前もって感謝します!

4

2 に答える 2

2

1) ダウンロードしているデータベースは sqlite データベースですか?

2) はいの場合は、使用を開始する前にアプリケーションにコピーする必要があります。

このプロセスは、Sd カードにデータベースをダウンロードし、完了したらすぐにアプリケーションにコピーして、アプリケーションの一部になるようなものです。次のようになります: http://www.reigndesign.com/blog/ using-your-own-sqlite-database-in-android-applications/

これを別のスレッドでバックグラウンドで実行すると、すぐに使用できます。何か問題や問題に直面している場合、またはあなたが意図した情報を提供していない場合はお知らせください。

ありがとう

于 2012-07-05T06:51:21.650 に答える
0

最初に、ファイルをローカル マシンのファイル システムに移動し、SQLite ビューアー アプリケーションで表示して、ファイルが実際に適切な SQLite データベースであるかどうかを確認することをお勧めします。

いくつかの SQLite データベース ビューアーが利用可能です。この投稿では、それらのいくつかをリストしています:優れたオープン ソース GUI SQLite データベース マネージャーとは?

この追加の投稿では、Android での既製のデータベースの使用法について説明しています。Ship an application with a databaseそこからいくつかのポインターを取得できます。

于 2012-07-05T06:58:05.640 に答える