c# - 使用 MySQL Connector Net 6.7.9 从 UWP 到 MariaDB

标签 c# mysql uwp mariadb

在开始开发我的应用程序之前,我一直在尝试让一些初始代码正常运行。 我可能在一年前就已经开始工作了,所以有人告诉我存在更新/版本问题。 但任何帮助都是好的。

我有一个使用 apache、MariaDB、php 等设置的树莓派。我有一个简单的网页正在运行,所以 apache 很好,我有另一个网页可以从表中提取数据,所以 MariaDB 很好(很好,给定我的问题)。我已经设置了 myphpadmin 并且可以登录创建新的数据库和用户等。

现在我想让一个 UWP 应用程序与我的 pi 上托管的数据库进行交互。我仅针对特定数据库使用 SELECT 和 INSERT 创建了一个新用户(希望这可以减少安全问题,但我是新用户,所以也许我希望如此)。

然后我还找到了 mariadb 配置文件并注释了绑定(bind)地址行。文件中不再存在跳过网络行,因此忽略它。 (这是文档所说的允许远程连接)。

我在路由器上打开了端口 3306,并且我也有一个域名并使用 no-ip,但我认为这一切都很好,因为 apache 运行良好。看到有人在谈论 SSH,我更改了 ssh 端口,但我认为这不是问题。

然后是 UWP。

上次尝试此操作时,我不得不使用 MySQL Connector Net 6.7.9,因为较新的版本无法与 RT 配合使用。所以我已将其添加到项目引用中。

现在为了简单测试连接,我有一个按钮和 TextBlock,单击按钮尝试连接并输出异常/结果。 尝试过 conn 字符串生成器以及直接的字符串,但都不起作用。

    private void ConnectDatabase_Click(object sender, RoutedEventArgs e)
    {
        string ConnString;
        MySqlConnection Conn;

        MySqlConnectionStringBuilder Csb = new MySqlConnectionStringBuilder();
        Csb.Server = "http://rnd-domain.me";
        Csb.Port = 3306;
        Csb.UserID = "usr";
        Csb.Password = "passwd";
        Csb.Database = "testdb";


        ConnString = "server=http://rnd-domain.me;database=testdb;uid=usr;pwd=passwd;";
        Conn = new MySqlConnection(ConnString);

        try
        {
            Conn.Open();
            DbUpdateText.Text = "connected";
            Conn.Close();
        }
        catch(Exception ex)
        {
            DbUpdateText.Text = ex.Message;
        }
    }

当我单击按钮时,前消息是“无法连接到任何指定的 MySQL 主机。”。 应用程序没有抛出任何错误,只有这条无用的消息。

我用谷歌搜索了这个,并浪费了周日 80% 的时间来尝试让它工作。我添加了 sslmode=none、charset=utf8、port=3306。我尝试使用 server=localhost 或使用我当前的 ip,甚至使用我的 mariadb 主用户(不是 root)。

可能是什么问题?

谢谢。

编辑: 我刚刚使用了 pi 的内部 IP 并得到了一条新的 ex.Message,了解了这个关于 SSl 的信息,添加了 sslmode=none 并且一切正常。

那么现在只是解决域名问题?

最佳答案

您的连接字符串不太正确。

您可能想要这个:

    server=rnd-domain.me;database=testdb;uid=usr;pwd=REDACTED;

在 MySQL 连接字符串中提及 http:// 没有意义,因为该连接不使用 HTTP 协议(protocol)。相反,它使用 MySQL 协议(protocol)。

关于c# - 使用 MySQL Connector Net 6.7.9 从 UWP 到 MariaDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52918291/

相关文章:

mysql - SQL使用多个查询从同一个表中获取多个值(来自同一列)

c++ - 使用c++/WinRT Direct3D UWP Game DR模板Direct X11的错误消息

javascript - 如何禁用 Webview 滚动并设置其高度以适合整个内容

c# - 自动更新 Windows 10 IoT 核心版内的应用程序?

c# - 在微秒内生成蜂鸣声C#

c# - Resharper冗余 'else'真的冗余吗?

c# - TypedFactory 在组件将其用作依赖项之前处理

mysql - 如何使用mysql通过将特定时间(秒)添加到现有时间戳来更新列中的时间戳值?

SQL 查询还是子查询?

c# - C# 中的基准测试方法调用