Problemas al descargar la base de datos sqlite

Mi aplicación necesita descargar una base de datos desde un enlace, aquí está el código que uso para descargar la base de datos y guardarla en la tarjeta 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();
    }
}

Todo parece funcionar bien, pero en este momento quiero consultar la base de datos (estoy usando consultas sin procesar) aparece un error que dice que las tablas no existen.

Después de eso, intenté depurar la aplicación, y luego recibí el error que indica que la base de datos está dañada. Creo que el proceso de descarga es lo que está corrompiendo la base de datos.

Cualquier ayuda será apreciada, si me falta algún código para compartir, ¡dímelo!

¡Gracias por adelantado!

Respuesta 1

1) ¿La base de datos que está descargando es la base de datos sqlite?

2) En caso afirmativo, debe copiar eso en su aplicación antes de comenzar a usarlo.

El proceso será algo así como descargar la base de datos en su tarjeta Sd y tan pronto como se complete, comience a copiarla en su aplicación para que se convierta en parte de su aplicación, así: http://www.reigndesign.com/blog/ utilizando-su-propia-base de datos-sqlite-en-aplicaciones-android /

Haga que esto suceda en segundo plano por hilo separado y luego estará listo para usarlo. Avíseme si tiene algún problema o si no le proporcioné información sobre lo que quería decir.

Gracias

Respuesta: 2

Código fuente de sdk que dice que com.amazonaws.services.cloudfront.CloudFrontUrlSigner es un tipo de enumeración. Por qué no implementaron esto como una clase de utilidad Java normal; por ejemplo, clase CloudFrontUrlSigner ...

He usado getRelativeDateTimeString que muestra el máximo de 1 semana de tiempo transcurrido. Cómo aumentar más de 1 semana. después del tiempo transcurrido, muestra el formato de fecha normal como 14/11 / ...

Considere el siguiente código: interfaz IFace {} clase abstracta Supertype {} clase Subtipo1 extiende Supertype implementa IFace {} clase Subtype2 extiende Supertype implementa IFace {} clase Subtipo3 ...

Trato de asegurar la precisión de algunas herramientas (gratuitas) de creación de perfiles de CPU de Java, por ejemplo, sjk, visualvm. Aquí hay un programa de muestra para realizar tareas sensibles a la CPU: RandomStringUtils.java: import java.util.Random; público ...