如何将Azure MySQL服务器与Xamarin表单应用程序连接?

时间:2019-01-16 13:36:26

标签: c# mysql azure xamarin

问题:
我有一个使用Microsoft azure(MySQL)作为数据库服务器的旧C#Windows窗体应用程序,我想构建一个Android应用程序(使用Xamarin窗体),该应用程序从C#WFA应用程序使用的同一MySQL服务器(Azure)获取数据

问题:
Xamarin Forms是否提供了这样做的方法?

是否有更好的方法,我可以(作为初学者)与两个不同平台(在我的情况下为台式机和手机)上的两个不同应用程序共享同一数据库?

预先感谢

1 个答案:

答案 0 :(得分:0)

首先,欢迎您!

  

Xamarin Forms是否提供了这样做的方法?

(不幸的)简单答案是:否

如果要使用Xamarin Forms重复使用与Azure上存储的数据库完全相同的数据库,则应在与Azure数据库交互的Web上公开API。然后,您的Xamarin Forms应用程序将使用HttpClient类连接到您的API,以便发布/获取数据。 Xamarin表单支持本地SQLite数据库引擎,仅此而已。如有必要,有关使用Xamarin Forms here的本地数据库的更多信息。

  

有没有更好的方法可供我(作为初学者)使用   在两个不同平台上具有两个不同应用程序的同一个数据库(   在我的情况下是台式机和手机)?

最好的方法是定义一种公开链接到Azure数据库的Web API。将来,您的桌面和移动应用程序(以及任何其他应用程序)将调用ApiController方法,这意味着这将在所有应用程序之间共享代码。

下面介绍了有关如何从Xamarin Forms调用API的通用示例方法:

public static async Task<TResult> GetData<TResult>(string apiTarget)
{
      using (var client = new HttpClient())
      {
           //setup client
           client.BaseAddress = new Uri(_API_BASE_URI);
           client.MaxResponseContentBufferSize = 9999999; 
           client.DefaultRequestHeaders.Accept.Clear();
           client.DefaultRequestHeaders.Add("Authorization", "Bearer " + _TOKEN);
           TResult _Result = default(TResult);
           //make request
           HttpResponseMessage response = await client.GetAsync(apiTarget).ConfigureAwait(false);
           if (response.IsSuccessStatusCode)
           {
               var content = await response.Content.ReadAsStringAsync().ConfigureAwait(false);

               _Result = (TResult)JsonConvert.DeserializeObject<TResult>(content);
           }
           return _Result;
      }
}

祝您编程愉快!