Java 无法从扩展名为的文件中转储数据。分贝

Java 无法从扩展名为的文件中转储数据。分贝,java,android,database,sqliteopenhelper,Java,Android,Database,Sqliteopenhelper,我收到以下错误消息:转储名为instalacionesdp.db的文件的数据。有趣的是,所有内容都正确加载,但在logcat中我得到了以下错误 12-11 13:05:54.284: E/SqliteDatabaseCpp(17232): sqlite3_open_v2("data/data/com.mipaquete.instalacionesdep/databases/instalacionesdep.db", &handle, 1, NULL) failed 12-11 13:05

我收到以下错误消息:转储名为instalacionesdp.db的文件的数据。有趣的是,所有内容都正确加载,但在logcat中我得到了以下错误

12-11 13:05:54.284: E/SqliteDatabaseCpp(17232): sqlite3_open_v2("data/data/com.mipaquete.instalacionesdep/databases/instalacionesdep.db", &handle, 1, NULL) failed
12-11 13:05:54.354: E/SQLiteDatabase(17232): Failed to open the database. closing it.
12-11 13:05:54.354: E/SQLiteDatabase(17232): android.database.sqlite.SQLiteCantOpenDatabaseException: unable to open database file
12-11 13:05:54.354: E/SQLiteDatabase(17232):   at android.database.sqlite.SQLiteDatabase.dbopen(Native Method)
12-11 13:05:54.354: E/SQLiteDatabase(17232):     at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:1013)
12-11 13:05:54.354: E/SQLiteDatabase(17232):    at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:986)
12-11 13:05:54.354: E/SQLiteDatabase(17232):     at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:962)
12-11 13:05:54.354: E/SQLiteDatabase(17232):     at com.mipaquete.instalacionesdep.db.DataBaseHelper.checkDataBase(DataBaseHelper.java:99)
12-11 13:05:54.354: E/SQLiteDatabase(17232):   at com.mipaquete.instalacionesdep.db.DataBaseHelper.createDataBase(DataBaseHelper.java:72)
12-11 13:05:54.354: E/SQLiteDatabase(17232):  at com.mipaquete.instalacionesdep.db.TodasLasInstalacionesActivity.onClick(TodasLasInstalacionesActivity.java:71)
12-11 13:05:54.354: E/SQLiteDatabase(17232):   at android.view.View.performClick(View.java:3511)
12-11 13:05:54.354: E/SQLiteDatabase(17232):   at android.view.View$PerformClick.run(View.java:14105)
12-11 13:05:54.354: E/SQLiteDatabase(17232):      at android.os.Handler.handleCallback(Handler.java:605)
12-11 13:05:54.354: E/SQLiteDatabase(17232):      at android.os.Handler.dispatchMessage(Handler.java:92)
12-11 13:05:54.354: E/SQLiteDatabase(17232):      at android.os.Looper.loop(Looper.java:137)
12-11 13:05:54.354: E/SQLiteDatabase(17232):  at android.app.ActivityThread.main(ActivityThread.java:4424)
12-11 13:05:54.354: E/SQLiteDatabase(17232):        at java.lang.reflect.Method.invokeNative(Native Method)
12-11 13:05:54.354: E/SQLiteDatabase(17232):     at java.lang.reflect.Method.invoke(Method.java:511)
12-11 13:05:54.354: E/SQLiteDatabase(17232):         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
12-11 13:05:54.354: E/SQLiteDatabase(17232):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
12-11 13:05:54.354: E/SQLiteDatabase(17232):     at dalvik.system.NativeStart.main(Native Method)
我想在某个时候关闭myDbhelper,但我认为我完成了所有步骤,无法找到故障。这是扩展SQLiteOpenHelper DataBAseHelper代码的类的摘要

public class DataBaseHelper extends SQLiteOpenHelper {

    //Variables ausiliares
    private static String DB_PATH="data/data/com.mipaquete.instalacionesdep/databases/";
    private static final String DB_NAME="instalacionesdep.db";
    //private static final int DATABASE_VERSION =1;


    private SQLiteDatabase myDatabase;
    private final Context myContext;


    public DataBaseHelper(Context context) {
        super(context, DB_NAME, null, 1);
        // TODO Auto-generated constructor stub
        this.myContext = context; 
    }


    public void createDataBase() throws IOException{
        //para chequear que existe la BD
        boolean dbExist = checkDataBase();

        SQLiteDatabase db_read = null;

        if(dbExist){

        }else{
            //agarramos la BD para leerla y despues la cerramos. 
            db_read = this.getReadableDatabase();
            db_read.close();

            try {
                copyDataBase();
            } catch (Exception e) {
                // TODO: handle exception
                throw new Error("Error copying database (createDataBase)");
            }
        }

    }

    public boolean checkDataBase(){
        SQLiteDatabase checkDB = null;
        SQLiteDatabase db_read = null;

        try{
            String myPath = DB_PATH+DB_NAME;
            checkDB = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);
        }catch (SQLException e) {
            // TODO: handle exception
            File dbFile = new File(DB_PATH+DB_NAME);
            return dbFile.exists();
        }
        if(checkDB != null){
            checkDB.close();

        }

        //regresa un true o un false dependidendo si se cumple la condicion. Los : sustituyen al else
        return checkDB != null ? true : false;
    }

    //vamos a volcar 
    public void copyDataBase() throws IOException{

        InputStream myInput = myContext.getAssets().open(DB_NAME);
        String outFileName = DB_PATH+DB_NAME;

        OutputStream myOutPut = new FileOutputStream(outFileName);

        Log.e("LocAndroid", "ESTOY EN copyDataBase");

        //Para trasnferir el fichero en tamaños de 1024 bytes
        byte[] buffer = new byte[1024];
        int lenght;

        //while para que nos mande el archivo. 
        while((lenght = myInput.read(buffer))!=-1){
            if(lenght > 0){
                myOutPut.write(buffer, 0, lenght);
            //con esto hemos copiado la base de datos. Basicamente, El volcado del archivo

            }

        }
        myOutPut.flush();
        myOutPut.close();
        myInput.close();
    }

    //Para abrir la base de datos
    public void openDataBase() throws SQLException{

        //myDatabase = this.getWritableDatabase();
        String myPath = DB_PATH+DB_NAME;
        myDatabase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READWRITE);
    }

    //Para cerrar la base de datos
    public synchronized void close(){

        if(myDatabase != null){
            myDatabase.close();
        }
        super.close();
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // TODO Auto-generated method stub

    }


}

谢谢大家!

错误是checkdatabase()。具体来说:

String myPath = DB_PATH+DB_NAME; 
checkDB = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);
第一次跑总是会出错。因为数据库不存在。checkdatabase必须仅包含以下代码:

File dbFile = new File(DB_PATH+DB_NAME); return dbFile.exists();