How can I backup sqlite file in SD Card programmatically? How can I backup sqlite file in SD Card programmatically? database database

How can I backup sqlite file in SD Card programmatically?


You can try this, work for me, remember to get the WRITE_EXTERNAL_STORAGE permission in your manifest:

// Copy to sdcard for debug use    public static void copyDatabase(Context c, String DATABASE_NAME) {        String databasePath = c.getDatabasePath(DATABASE_NAME).getPath();        File f = new File(databasePath);        OutputStream myOutput = null;        InputStream myInput = null;        Log.d("testing", " testing db path " + databasePath);        Log.d("testing", " testing db exist " + f.exists());        if (f.exists()) {            try {                File directory = new File("/mnt/sdcard/DB_DEBUG");                if (!directory.exists())                    directory.mkdir();                myOutput = new FileOutputStream(directory.getAbsolutePath()                        + "/" + DATABASE_NAME);                myInput = new FileInputStream(databasePath);                byte[] buffer = new byte[1024];                int length;                while ((length = myInput.read(buffer)) > 0) {                    myOutput.write(buffer, 0, length);                }                myOutput.flush();            } catch (Exception e) {            } finally {                try {                    if (myOutput != null) {                        myOutput.close();                        myOutput = null;                    }                    if (myInput != null) {                        myInput.close();                        myInput = null;                    }                } catch (Exception e) {                }            }        }    }


You can try following code,

String path = Environment.getExternalStorageDirectory().toString() + "/path";File folder = new File( path );if (!folder.exists()) {     folder.mkdirs();}File dbfile = new File( path + "/database.db" ); if ( !dbfile.exists() ){    dbFile.createFile();}SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(dbfile, null);


You can try this to copy a file:

public void copyFile(File in, File out) {        String DialogTitel = getString(R.string.daten_wait_titel);        String DialogText = getString(R.string.kopiervorgang_laeuft);        try {            // Dialogdefinition Prograssbar            final ProgressDialog dialog = new ProgressDialog(this) {                @Override                public boolean onSearchRequested() {                    return false;                }            };            dialog.setCancelable(false);            dialog.setTitle(DialogTitel);            dialog.setIcon(R.drawable.icon);            dialog.setMessage(DialogText);            dialog.show();            new Thread(new MyCopyThread(in, out)) {                @Override                public void run() {                    try {                        FileChannel inChannel = new FileInputStream(                                MyCopyThread.in).getChannel();                        FileChannel outChannel = new FileOutputStream(                                MyCopyThread.out).getChannel();                        try {                            System.out.println("KOPIEREN");                            inChannel.transferTo(0, inChannel.size(),                                    outChannel);                            if (inChannel != null)                                inChannel.close();                            if (outChannel != null)                                outChannel.close();                            setCopyError(false);                        } catch (IOException e) {                            setCopyError(true);                            // throw e;                        } finally {                            if (inChannel != null)                                inChannel.close();                            if (outChannel != null)                                outChannel.close();                        }                        dialog.dismiss();                        // Abschlussarbeiten                        if (useExternalSD == true) {                            // Externe DB                            moveDBtoExternFinish();                        } else {                            // Interne DB                            moveDBtoInternFinish();                        }                        moveDBFinishHandler.sendMessage(moveDBFinishHandler                                .obtainMessage());                    } catch (Exception ex) {                    }                }            }.start();        } catch (Exception exx) {        }    }

This is the code to get the filname of your internal db:

File interneDB = getApplicationContext().getDatabasePath(MY_DB_NAME);

Replace MY_DB_NAME with the name of your DB