【问题标题】:How i can connect azure MySQL server with my Xamarin forms app?我如何将 azure MySQL 服务器与我的 Xamarin 表单应用程序连接起来?
【发布时间】:2019-01-16 13:36:25
【问题描述】:
问题:
我有一个使用 Microsoft azure (MySQL) 作为数据库服务器的旧 C# Windows 窗体应用程序,我想构建一个从 C# WFA 应用程序使用的同一 MySQL 服务器 (Azure) 获取数据的 android 应用程序(使用 Xamarin 窗体) .
问题:
Xamarin Forms 是否提供了这样的方式来做到这一点?
有没有更好的方法可以让我(作为初学者)使用两个不同平台(在我的情况下为桌面和手机)上的两个不同应用程序共享同一个数据库?
提前致谢
【问题讨论】:
标签:
c#
mysql
azure
xamarin
【解决方案1】:
首先,欢迎来到 SO!
Xamarin Forms 是否提供这样的方式来做到这一点?
简单的答案是(不幸的是):不。
如果你想通过 Xamarin Forms 重复使用存储在 Azure 上的完全相同的数据库,你应该在 Web 上公开一个与你的 Azure 数据库交互的 API。然后,您的 Xamarin Forms 应用程序将使用 HttpClient 类连接到您的 API,以便发布/获取数据。 Xamarin 表单支持本地 SQLite 数据库引擎,仅此而已。如果需要,请提供有关使用 Xamarin 表单 here 的本地数据库的更多信息。
有没有更好的方法可以让我(作为初学者)分享
在两个不同平台上具有两个不同应用程序的同一个数据库(
在我的情况下是台式机和手机)?
最好的方法是公开一个链接到 Azure DB 的 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;
}
}
编码愉快!