使用MySQL Connector Net 6.7.9的UWP到MariaDB

时间:2018-10-21 18:00:59

标签: c# mysql uwp mariadb

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

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

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

然后我也找到了mariadb配置文件,并注释了绑定地址行。文件中不再包含跳过网络行,因此可以忽略该行。 (这就是文档所说的允许远程连接的内容。

我在路由器上打开了端口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并且一切正常。

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

2 个答案:

答案 0 :(得分:1)

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

您可能想要这样:

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

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

答案 1 :(得分:0)

问题是在家庭网络内部都使用了PC(客户端)和raspi(服务器)。

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