如何在android sqlite数据库中用新文件替换旧文件?

如何在android sqlite数据库中用新文件替换旧文件?,android,android-sqlite,Android,Android Sqlite,我已经建立了一个应用程序,其中我使用.net web服务从服务器获取文件和文件夹,我有一个类广播接收器,我想在其中实现一个方法,应用程序调用服务检查是否有新版本,如果有,然后替换为本地sqlite数据库中的新版本,这是我创建的。。。 我的问题是如何将旧文件替换为从服务器到本地sqlite数据库的新文件 编辑:将新文件替换为旧的手机存储。如果我正确理解您的问题,您正在尝试使用从web服务器检索的新文件更新本地手机存储上的本地文件,对吗 要在本地更新文件,我假设您有两个文件路径数组OldFilePa

我已经建立了一个应用程序,其中我使用.net web服务从服务器获取文件和文件夹,我有一个类广播接收器,我想在其中实现一个方法,应用程序调用服务检查是否有新版本,如果有,然后替换为本地sqlite数据库中的新版本,这是我创建的。。。 我的问题是如何将旧文件替换为从服务器到本地sqlite数据库的新文件


编辑:将新文件替换为旧的手机存储。

如果我正确理解您的问题,您正在尝试使用从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,请告诉我这是怎么可能的?谢谢