如何下载Android应用程序的sqlite数据库?

时间:2011-09-28 00:47:20

标签: android sqlite

我在我的Android应用程序中使用sqlite数据库。我想将数据库下载到pc。有人可以告诉我该怎么做吗?

3 个答案:

答案 0 :(得分:6)

如果您的应用是在模拟器中,您只需使用DDMS并打开/data/data/your.package.name/databases

如果您的移动版应用。这是我将数据库复制到sdcard root文件夹的方法。

    /** The name of the database file */
    static final String DATABASE_NAME = "mydatabase.db";
    static final String DATABASE_NAME_FULL = "/data/data/com.my.application/databases/" + DATABASE_NAME;

    public static boolean backUpDataBase(Context context){
    boolean result = true;

    // Source path in the application database folder
    String appDbPath = DATABASE_NAME_FULL;

    // Destination Path to the sdcard app folder
    String sdFolder =  Environment.getExternalStorageDirectory().getAbsolutePath() + "/" + DATABASE_NAME;


    InputStream myInput = null;
    OutputStream myOutput = null;
    try {
        //Open your local db as the input stream
        myInput = new FileInputStream(appDbPath);
        //Open the empty db as the output stream
        myOutput = new FileOutputStream(sdFolder);

        //transfer bytes from the inputfile to the outputfile
        byte[] buffer = new byte[1024];
        int length;
        while ((length = myInput.read(buffer))>0){
            myOutput.write(buffer, 0, length);
        }
    } catch (IOException e) {
        result = false;
        e.printStackTrace();
    } finally {
        try {
            //Close the streams
            if(myOutput!=null){
                myOutput.flush();
                myOutput.close();
            }
            if(myInput!=null){
                myInput.close();
            }
        } catch (IOException e) { } 
    }

    return result;
}

你需要在manifest.xml

中使用它
 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

答案 1 :(得分:1)

如果您的模拟器正在运行,您可以打开DDMS视角(Window > Open perspective > DDMS)并打开data/data/your.package.name/databases并将其拉到您的计算机上来访问它。

如果设备未植根,则无法从设备获取。如果是,则无法访问它所在的目录,因为它受到保护。您必须使用根浏览器将其复制到SD卡上,然后您可以使用DDMS将其复制到计算机上。

答案 2 :(得分:0)

我通过使用android调试桥解决了这个问题。要获取数据库,您必须在sdk工具的目录中执行:

adb.exe exec-out run-as com.example.project cat databases/databasename > file.sqlite

其中com.example.project是清单中的程序包名称,而databasename是数据库的名称。该数据库将被放置到您当前的目录中。

它可在仿真器和设备上使用(已检查到API级别28)。