将数据或表从一个数据库复制到另一个数据库android(sqlite)

时间:2018-02-26 02:58:55

标签: android

我的应用程序中有一个数据库“softDb”,在新版本中我创建了新的数据库“softDatabase”。

如何将旧数据库(softDb)中的数据表或数据复制到新数据库softDatabase?

3 个答案:

答案 0 :(得分:0)

就这么简单,如果要更改现有的数据库方案,可以Alter方法onUpgrade表。使用此方法删除表,添加表或执行升级到新架构版本所需的任何其他操作。

如果要将一个表的数据复制到另一个表,请将其存储在临时数据库或Arraylist中,更改表后将其插入新表。

答案 1 :(得分:0)

当您更新数据库时onUpgrade()方法调用。如果要添加或删除tabel,db等,如果要将现有表中的所有数据复制到onUpgrade中代码下面的新表中,请使用onUpgrade()方法()方法。

INSERT INTO X.TABLE(fieldname1, fieldname2) SELECT fieldname1, fieldname2 FROM Y.TABLE;

答案 2 :(得分:0)

如果要将数据库复制到新数据库,那时你使用旧数据库文件的查找路径,然后将复制大厅数据库文件复制到新的数据库文件中,如下面的代码......

private void copyDataBaseFile()
{
    Log.i("Database",
            "New database is being copied to device!");
    byte[] buffer = new byte[1024];
    OutputStream myOutput = null;
    int length;
    // Open your local db as the input stream
    InputStream myInput = null;
    try
    {
        myInput =new FileInputStream("/data/data/com.example.adruser.stackoverflow/databases/"+"MyDb");
        // transfer bytes from the inputfile to the
        // outputfile
        myOutput =new FileOutputStream("/data/data/com.example.adruser.stackoverflow/databases/"+ "MyDb2");
        while((length = myInput.read(buffer)) > 0)
        {
            myOutput.write(buffer, 0, length);
        }
        myOutput.close();
        myOutput.flush();
        myInput.close();
        Log.i("Database",
                "New database has been copied to device!");


    }
    catch(IOException e)
    {
        e.printStackTrace();
    }
}

上面的代码创建新的数据库文件并复制旧的数据库数据。 还需要添加权限..

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