获取SQLiteDatabaseCorruptException

时间:2012-07-05 02:28:21

标签: java android sqlite

问题是我在执行下一个代码时遇到了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会开始正常执行,但是当log cat显示数据库已损坏然后数据库被淘汰时,它会到达某一点。 出现这种情况的原因是什么?

EDITED: 我忘了添加,我的应用程序在主要活动出现时下载数据库,这是否与数据库损坏有关?数据库被下载并存储在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();
    }
}

提前致谢。

0 个答案:

没有答案