2013-05-02 59 views
1

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

编辑:用手机存储中的旧文件替换新文件。

+0

对不起,请你澄清一下。例如与步骤。还'哪个'本地SQLite数据库?应用程序中的一个? – RvdK 2013-05-02 12:33:07

+0

嗨,是的请让我知道哪一部分你不明白,是的SQlite数据库抱歉意味着我的本地电话存储,我正在下载文件并保存id和url。 – Shweta 2013-05-02 13:11:57

+0

究竟是什么问题?将其下载到一个文件夹。或者用新的URL更新数据库? – RvdK 2013-05-02 14:08:53

回答

0

如果我正确理解您的问题,您正在尝试使用从Web服务器检索到的新文件更新本地电话存储器上的本地文件,是吗?

更新到本地的文件,我会假设你有文件路径oldFilePaths两个阵列和newFilePaths

我只想重复删除旧,并把新的东西是这样的:

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的),因为这是我用什么,我不认为这是远从Java

相关问题