Android重命名SQLite数据库

Som*_*omk 7 java sqlite android

是否可以重命名已在android中创建的数据库?

在我的应用程序更新中,我想重命名旧数据库并安装新的然后比较一些值,最后删除旧的.

我正在从assets文件夹中的sqlite文件进行创建.这就是为什么我不能重命名所有表并插入新表.

澄清:

旧数据库将只包含一个表,我需要将值与新(来自更新)数据库进行比较.

两个数据库都已从assets文件夹中的sqlite文件复制过来.

一旦我将旧数据库中的值与新数据库进行比较,我将删除旧数据库,并使用我比较的值在其位置使用new.

我想做的是重新命名旧的创建新的取而代之的所有事情.

Kev*_*gan 11

只需重命名文件.确保首先关闭数据库!

在您的活动类中调用它:

private void renameDatabase()
{
    File databaseFile = getDatabasePath("yourdb.whatever");
    File oldDatabaseFile = new File(databaseFile.getParentFile(), "yourdb_old.whatever");

    databaseFile.renameTo(oldDatabaseFile);
}
Run Code Online (Sandbox Code Playgroud)

回应澄清.重命名旧数据库(如上所述),从assets文件夹中复制新数据库,打开两个数据库并进行比较.然后删除旧文件.


Ren*_*aud 4

Flash大人是对的,你应该删除旧的数据库并复制新的\xe2\x80\xa6

\n\n

假设您使用 a SQLiteOpenHelper,您可以使用和createDatabaseIfRequired();中的方法getReadableDatabase()getWritableDatabase()

\n\n
private boolean checkOldDatabase() {\n    Log.d(Constants.LOGTAG, "OperationDbHelper.checkDatabase");\n    File f = new File(DB_PATH + OLD_DB_NAME);\n    return f.exists();\n}\n\npublic void createDatabaseIfRequired() throws IOException, SQLiteException {\n    if (!checkOldDatabase()) {\n      // do db comparison / delete old db / copy new db\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n