我的应用程序中有一个数据库“softDb”,在新版本中我创建了新的数据库“softDatabase”。
如何将旧数据库(softDb)中的数据表或数据复制到新数据库softDatabase?
答案 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"/>