问题:
我有一个使用Microsoft azure(MySQL)作为数据库服务器的旧C#Windows窗体应用程序,我想构建一个Android应用程序(使用Xamarin窗体),该应用程序从C#WFA应用程序使用的同一MySQL服务器(Azure)获取数据
问题:
Xamarin Forms是否提供了这样做的方法?
是否有更好的方法,我可以(作为初学者)与两个不同平台(在我的情况下为台式机和手机)上的两个不同应用程序共享同一数据库?
预先感谢
答案 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;
}
}
祝您编程愉快!