我编写了以下代码来将数据库文件从dropbox帐户复制到app数据库。但是我只想将特定的表从Dropbox复制到App数据库表。这是可能的。
protected Boolean doInBackground(Void... params) {
final File tempDir = context.getCacheDir();
File tempFile;
FileWriter fr;
try {
File data = Environment.getDataDirectory();
String currentDBPath = "//data//"+ "loginscreen.example.com.girviapp" +"//databases//"+DATABASE_NAME;
File currentDB = new File(data, currentDBPath);
FileInputStream fileInputStream = new FileInputStream(currentDB);
Entry existingentry= dropbox.metadata( path ,1000,null,true,null);
if (existingentry.contents.size() != 0)
{
for (Entry ent :existingentry.contents)
{
String name = ent.fileName();
if(name.equals(DATABASE_NAME))
{ FileOutputStream outputStream = new FileOutputStream(currentDB);
DropboxFileInfo info = dropbox.getFile(path + DATABASE_NAME, null, outputStream, null);
return true;
}
}
}
} catch (IOException e) {
e.printStackTrace();
} catch (DropboxException e) {
e.printStackTrace();
}
return false;
}
答案 0 :(得分:0)
这里的答案取决于你想要做什么。
如果您希望只能从Dropbox上存储的数据库文件中下载特定的表,为了通过不下载所有数据来节省带宽,那么不,这是不可能的。您正在使用的Dropbox API中的存储单元是文件,Dropbox不知道数据库文件中的各个表是什么,因此它无法指定特定的表。
另一方面,如果你不介意从Dropbox下载整个文件,那么是的,这是可能的。只需在您正在执行时下载文件,然后在本地将其作为数据库加载。然后只查询所需的数据,即所需的数据表,并用它做你需要的数据。