0

問題は、次のコードの実行中に SqLiteDatabaseCorrupException が発生することです。

ArrayList<Advertiser> arr = new ArrayList<Advertiser>();
        Cursor holo = db.rawQuery("select * from Advertiser;", null);
        while(holo.moveToNext()){
            Advertiser adver = new Advertiser();
            adver.setId(holo.getString(0));
            adver.setNombre(holo.getString(1));
            adver.setDescripcion(holo.getString(2));
            adver.setDireccion(holo.getString(3));
            adver.setContacto(holo.getString(4));
            adver.setSitioWeb(holo.getString(5));
            adver.setFacebook(holo.getString(6));
            adver.setTwitter(holo.getString(7));
            adver.setPosx(holo.getDouble(8));
            adver.setPosy(holo.getDouble(9));
            adver.setCiudad(holo.getString(10));
            System.out.println("Objeto: " + adver.toString());
            arr.add(adver);
        }

while は正常に実行を開始しますが、ログ cat がデータベースが破損していることを示し、データベースが削除される時点に到達します。これが起こっている理由は何ですか?

編集: 追加するのを忘れていました。主なアクティビティが開始されたときに、アプリケーションがデータベースをダウンロードします。これは、データベースが破損していることと関係がありますか? データベースがダウンロードされ、SD カードに保存されます。

編集#2:データベースをダウンロードした方法のコードは次のとおりです。これが役立つことを願っています:

public void DescargaBD() {
    try {
        URL url = new URL(
                "http://71.6.150.179:8079/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

0 に答える 0