【问题标题】:UWP to MariaDB using MySQL Connector Net 6.7.9UWP 到 MariaDB 使用 MySQL Connector Net 6.7.9
【发布时间】:2019-03-25 21:01:32
【问题描述】:

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

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

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

然后我还找到了 mariadb 配置文件并注释了 bind-address 行。 skip-networking 行不再在文件中,所以忽略它。 (这是文档所说的允许远程连接)。

我在路由器上打开了端口 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;
        }
    }

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

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

可能是什么问题?

谢谢。

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

所以现在它只是解决了域名问题?

【问题讨论】:

    标签: c# mysql uwp mariadb


    【解决方案1】:

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

    你可能想要这个:

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

    在 MySQL 连接字符串中提及 http:// 没有意义,因为该连接不使用 HTTP 协议。而是使用 MySQL 协议。

    【讨论】:

    • 感谢您提供的服务,但删除 http:// 没有任何影响,实际上导致应用程序冻结。 passwd 也是我的通用无意义密码:)
    • 你可以检查this连接字符串。
    • 嗨,是的,我认为因为运行 Visual Studio 的 pc 和托管 db 的 pi 都在同一个局域网上,所以它不喜欢完整的 dns。使用内部 pi IP,一切正常,我可以从表中获取数据。我猜当应用程序在局域网之外运行时,完整的 dns 会起作用。
    【解决方案2】:

    问题是在家庭网络中同时使用 pc(客户端)和 raspi(服务器)。

    当我将主机更改为 raspi 的内部 IP 时,一切正常。

    【讨论】:

      猜你喜欢
      • 2021-10-24
      • 2019-12-01
      • 2016-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-08
      • 2012-04-29
      • 1970-01-01
      相关资源
      最近更新 更多