2014-02-17 47 views
0

最近,我试图创建数据库相关的Windows Phone 8应用程序,因为我想动态更新内容,每当我更新,它会在我的应用程序还可以自动更新,怎样下载(.sqlite)从URL文件并将其保存在独立存储中的Windows Phone 8个应用

让我决定保持分贝(.sqlite)文件我的所有数据并上传到服务器上

请注意,我还没有在本地和我创建的数据库将尝试从服务器下载文件的SQLite,从sqlite的文件我会得到数据库表,

所以我Requir EMENT是

1)如何下载(.sqlite)从服务器通过服务器的URL文件像(www.example.com/folder/sample.sqlite)

2)如何保存在本地是sqlite的文件或独立存储

我已搜查,并从网上得到一些samplew,但所有这一切会在当地建立自己的数据库,

所以请有人给我的解决方案,如何直接从URL下载.sqlite文件并保存在本地。,

+1

如果你想下载一个文件,然后我写了【这里的答案](http://stackoverflow.com/a/21811036/2681948)。方法第一不适合,但第二和第三可能是。你也可以考虑一下后台传输 – Romasz

+0

我试图从其中U给出的链接第三mwthod,但我得到的错误这样的“可访问性不一致:返回类型‘System.Threading.Tasks.Task ’是比法“iccWorldT20i.MainPage.DownloadFileSimle(的System.Uri,字符串)” “。少的,请帮我解决,或者给一些其他的例子 –

+1

尽量让枚举DownloadStatus市民(我已经编辑答案)。给我一个帮助它的标志。 – Romasz

回答

1

好的现在我明白了。问题是该链接不包含该文件,您将不得不先使用GetResponse(),然后获取ResponseStream。

为了使它工作,你有你的WebClient(再次)延长:

public static class Extensions 
{ 
    public static Task<WebResponse> GetResponseAsync(this WebRequest webRequest) 
    { 
     TaskCompletionSource<WebResponse> taskComplete = new TaskCompletionSource<WebResponse>(); 
     webRequest.BeginGetResponse(
      asyncResponse => 
      { 
       try 
       { 
        WebRequest responseRequest = (WebRequest)asyncResponse.AsyncState; 
        WebResponse someResponse = (WebResponse)responseRequest.EndGetResponse(asyncResponse); 
        taskComplete.TrySetResult(someResponse); 
       } 
       catch (WebException webExc) 
       { 
        WebResponse failedResponse = (WebResponse)webExc.Response; 
        taskComplete.TrySetResult(failedResponse); 
       } 
       catch (Exception exc) { taskComplete.SetException(exc); } 
      }, webRequest); 
     return taskComplete.Task; 
    } 

之后,你只需要放少许修改代码:

public static async Task<DownloadStatus> DownloadFileSimle(Uri fileAdress, string fileName) 
{ 
    try 
    { 
     WebRequest request = WebRequest.Create(fileAdress); 
     if (request != null) 
     { 
      WebResponse response2 = await request.GetResponseAsync(); 
      using (Stream resopnse = response2.GetResponseStream()) 
      { 
      // the rest goes the same 

正如我曾尝试它的工作原理和该文件的下载内容。

希望这会有所帮助。

相关问题