我如何从网址下载(.sqlite)文件并将其保存在Windows Phone 8应用程序的隔离存储中

时间:2014-02-17 12:00:21

标签: database sqlite windows-phone-8

我最近尝试创建与数据库相关的Windows Phone 8应用程序,因为我想要动态更新内容,每当我更新它时,我的应用程序中也会自动更新。,

所以我决定将所有数据保存在db(.sqlite)文件中并将其上传到服务器上

请注意,我没有在本地创建任何数据库,我将尝试从服务器下载sqlite文件。从该sqlite文件中我将获得数据库表。,

所以我的要求是

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

2)如何在本地或隔离存储中保存该sqlite文件

我已经搜索并从网上获得了一些样本。但是所有这些都会在本地创建数据库。

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

1 个答案:

答案 0 :(得分: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

正如我所尝试的那样有效并且文件下载了其内容。

希望这有帮助。