如何将预建的Android SQLite数据库移动到内部存储器?

时间:2014-02-16 21:52:01

标签: android android-sqlite

我正在使用文本文件生成SQLite数据库。我的文件很大,所以转换需要花费很多时间。我在想是否可以使用预建数据库。

从TEXT文件生成的数据库保存在内部存储器的/data/data/com.my.project/database文件夹中。

有什么办法,我把apk上的预建数据库绕过TEXT> SQLite转换&在安装过程中直接将现有数据库复制到/data/data/com.my.project/database文件夹 ? [N.B#我的SQlite大小为30 MB]

1 个答案:

答案 0 :(得分:2)

是的,你可以。 您可以将数据库(.db文件)作为资产保存在项目文件中,然后在运行时检查数据库是否存在,如果不存在,则从资产中复制它。

我使用的一些代码(您需要根据需要进行修改):

public static String getDBPath(Context c)
{
    return Environment.getDataDirectory() + 
              File.separator + "data" + 
              File.separator + c.getPackageName() + 
              File.separator + "databases";
}

public static String getDBFileName(Context c)
{
    return Environment.getDataDirectory() + 
              File.separator + "data" + 
              File.separator + c.getPackageName() + 
              File.separator + "databases" + 
              File.separator + "mydatabase.db;
}

public static void createCopyOfDatabaseIfNeeded(Context c) throws FileNotFoundException, IOException
{
    String preloadedDatabase = "preloaded/mydatabase.db";
    File dbdir = new File(myDB.getDBPath(c));
    if (!dbdir.exists())
        dbdir.mkdirs();
    File db = new File(myDB.getDBFileName(c));
    if (!db.exists())
    {
        // copy file from preloadedDatabase to db;
    }
}