如何查看我的Android应用程序数据库? [Android]产品

时间:2016-01-12 10:52:56

标签: android database sqlite android-sqlite mobile-application

如何在手机上运行应用程序的数据库。 我使用的是Android Studio,我的数据库位于资源> MyDataBase.db中 有没有办法更新这个文件?

我有自己的sqlite数据库,我插入数据然后我想用新数据获取文件。

我不使用模拟器,我的数据库是由SQLite Browser创建的。

[编辑]

人们说这是this问题的重复。 但是我想在代码行中做同样的事情而不是在命令中。

3 个答案:

答案 0 :(得分:0)

是的,您可以通过多种方式进行编辑。其中一个是使用this等库。看看它并在您的应用程序中尝试。

答案 1 :(得分:0)

如果您想在运行时编辑应用的资源文件夹中的文件 - 这是不可能的。您应该将此数据库复制到内部/外部存储器并在此之后进行编辑。

答案 2 :(得分:0)

您无法将数据写入asset / Raw文件夹,因为它是打包的(.apk),资产文件夹在运行时是只读的。

您需要选择一个不同的存储位置,这里有一个方法可以将db备份到您的sdcard(外部存储)dbName = MyDataBase.db:

public static void backupDBonSDcard(Context context, String dbName){
    String DB_PATH = context.getDatabasePath(dbName).getPath();
    Log.d("DB_PATH:" + DB_PATH);
    if(checkDataBase(DB_PATH)){
        InputStream myInput;
        try {
            Log.e("[backupDBonSDcard] saving file to SDCARD");
            myInput = new FileInputStream(DB_PATH);

            // Path to the just created empty db
            String outFileName = Environment.getExternalStorageDirectory().getAbsolutePath() + java.io.File.separator + dbName;

            //Open the empty db as the output stream
            OutputStream myOutput;
            try {
                myOutput = new FileOutputStream(outFileName);
                //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 (FileNotFoundException | IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } finally {
                //Close the streams
                if(myOutput!=null){
                    myOutput.flush();
                    myOutput.close();
                }

                if(myInput!=null)
                    myInput.close();
            }
        } catch (FileNotFoundException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }

    }else{
        Log.d("DB "+dbName+" not found");
    }
}

public static boolean checkDataBase(String fileName) {
    java.io.File dbFile = new java.io.File(fileName);
    return dbFile.exists();
}

不要忘记在清单中添加以下权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />