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