如何在android sqlite数据库中用新文件替换旧文件?
我已经建立了一个应用程序,其中我使用.net web服务从服务器获取文件和文件夹,我有一个类广播接收器,我想在其中实现一个方法,应用程序调用服务检查是否有新版本,如果有,然后替换为本地sqlite数据库中的新版本,这是我创建的。。。 我的问题是如何将旧文件替换为从服务器到本地sqlite数据库的新文件如何在android sqlite数据库中用新文件替换旧文件?,android,android-sqlite,Android,Android Sqlite,我已经建立了一个应用程序,其中我使用.net web服务从服务器获取文件和文件夹,我有一个类广播接收器,我想在其中实现一个方法,应用程序调用服务检查是否有新版本,如果有,然后替换为本地sqlite数据库中的新版本,这是我创建的。。。 我的问题是如何将旧文件替换为从服务器到本地sqlite数据库的新文件 编辑:将新文件替换为旧的手机存储。如果我正确理解您的问题,您正在尝试使用从web服务器检索的新文件更新本地手机存储上的本地文件,对吗 要在本地更新文件,我假设您有两个文件路径数组OldFilePa
编辑:将新文件替换为旧的手机存储。如果我正确理解您的问题,您正在尝试使用从web服务器检索的新文件更新本地手机存储上的本地文件,对吗 要在本地更新文件,我假设您有两个文件路径数组OldFilePath和NewFilePath 我只是迭代并删除旧的,然后将新的放在如下位置:
foreach(var oldFilePath in foldFilePaths)
{
var oldFileName = Path.GetFileName(oldFilePath);
// This assumes that your files (old and new Ones have the same name).
// And that you are saving your new files in a temporary folder.
var newFilePath = newFilePaths.ToList().FirstOrDefault(f => Path.GetFileName(f) == oldFileName);
if (newFilePath != null)
{
File.Delete(oldFilePath);
File.Copy(newFilePath, oldFilePath);
}
}
现在,您还可以只更新数据库中的文件路径。假设您有一个
数据库中的文件名。为此,您可以执行以下操作:
const string selectSqlQuery = "SELECT FileID, FilePath FROM FILES";
var updateSqlQuery = "UPDATE FILES SET FilePath = '{0}' WHERE FileID = '{1}'";
var oldFilesList = new List<MyFile>(); // assuming you have object of MyFile {Id, FilePath};
using(var connection = new SqliteConnection(connectionString))
{
connection.Open();
// reading old files from Database
using (var command = connection.Command())
{
command.CommandText = selectSqlQuery;
IDataReader reader = dbcmd.ExecuteReader();
while(reader.Read())
{
oldFilesList.Add(new MyFile { Id = reader["Id"], FilePath = reader["FilePath"] });
}
}
// updating new filePaths, assuming that you have newFilesList from calling the web service
foreach(var oldFile in oldFilesList)
{
var newFile = newFilesList.ToList().FirstOrDefault(f => f.Id == oldFile.Id);
if (newFile != null)
{
using (var command = connection.CreateCommand())
{
command.CommandText = string.Format(updateSqlQuery, newFile.Id, newFile.FilePath);
command.ExecuteNonQuery();
}
}
}
}
//上面的代码是C MonoDroid,因为我使用的是C MonoDroid,我认为它离Java不远对不起,请澄清一下。例如,使用步骤。还有“哪个”本地SQLite数据库?应用程序中的那个?您好,是的,请告诉我您不了解的部分,是的,SQlite数据库抱歉是指我的本地电话存储,我正在下载文件并将id和url保存到其中。到底是什么问题?下载到一个文件夹。或者用新的url更新数据库?@RvdK用新的url更新数据?@RvdK,请告诉我这是怎么可能的?谢谢