mysql - 如何在没有 Web 服务的情况下将 Xamarin.Forms 应用程序连接到 mysql 数据库
问题描述
我需要开发一个跨平台应用程序以在内部网络中使用。该应用程序必须连接到该网络中的 MySQL 数据库。我必须在不接触网络上的任何服务器的情况下执行此操作(我无法在网络内设置 Web API)。我选择了 Xamarin.Forms 进行开发。
我搜索了将 MySQL 直接与 Xamarin.Forms 集成的方法,大多数人正确地推荐使用 Web API。不幸的是,在我的情况下这是不可能的。在 SO 上的一些答案中,我找到了 Nuget package Xamarin.MySql.Data
。
但是,当我将它添加到项目中时,构建失败并出现以下错误:
NU1202 Package Xamarin.MySql.Data 1.0.1 is not compatible with uap10.0.16299 (UAP,Version=v10.0.16299) / win10-arm. Package Xamarin.MySql.Data 1.0.1 supports:
- monoandroid (MonoAndroid,Version=v0.0)
- monotouch (MonoTouch,Version=v0.0)
- xamarinios (Xamarin.iOS,Version=v0.0)
我知道这是一个兼容性问题。
还有哪些其他选择?谢谢。
解决方案
根据 MySQL Connector for .NET 的官方文档,它可以在任何版本的 .NET 上运行,因此您应该能够从Xamarin.Forms应用程序中使用它。
MySQL Connector/NET 可在任何支持 .NET Standard(.NET Framework、.NET Core 和 Mono)的平台上运行(请参阅文档)
您可以从 NuGet 安装连接器,然后开始使用它。
如果您习惯了 ADO.NET(或愿意学习它),那么您可以开始使用MySqlConnection
该类。请参阅以下非常基本的示例:
List<MyObject> result = new List<MyObject>();
using var connection = new MySqlConnection(connectionString); // C# 8!
connection.Open();
using var command = connection.CreateCommand();
command.CommandText = "SELECT id, name FROM fooBar WHERE deleted = 0"; // whatever
using var reader = command.ExecuteReader();
while(reader.Read())
{
result.Add(new MyObject
{
Id = reader.GetUInt64("id"), // the parameter is the name of the column
Name = reader.GetString("name"),
});
}
return result;
(如果您不知道连接字符串的外观,请参阅此页面。请注意MySQL 实例必须可从应使用此连接的设备访问。)connectionString
如果您更喜欢使用 EF,则必须安装此 NuGet 包。
推荐阅读
- sql-server - SQL Server: join one table with two table have same names but select all data from table first if available, otherwise from second table
- r - 如何在 r 的函数中编写 if_else 条件,然后应用于数据帧的所有变量?
- javascript - 在 Angular 中设置页面加载时的输入值
- python - 如何在没有numpy的情况下计算矩阵对象的逆
- python-3.x - 从字符串中删除特定字符 (REGEX)
- c++ - 如何为 const 数据成员重载复制赋值运算符?
- javascript - 在新的 AWS-SDK.js V3 中使用什么来代替新的 CognitoIdentityCredentials()?
- optimization - Prestashop feature_value_lang 在数据库中重复
- ios - 带有选取器(分段控件)子视图和选择手势的列表项
- ios - 将 iOS 应用程序名称从一个 Apple 帐户转移到另一个