c# - Xamarin、MySQL 异常 : unable to connect to any specific host

标签 c# android mysql xamarin exception

我想制作一个简单的应用程序,可以从远程数据库中获取数据并将其显示在屏幕上,所以首先我制作了一个简单的控制台应用程序来测试连接,一切正常。这是代码:

static void Main(string[] args)
    {
        MySqlConnection con = new MySqlConnection("SERVER=85.10.205.173; PORT=3306; DATABASE=mybasework; UID=neawin; PWD=12345678; old guids=true; Connection Timeout=30;");
        try
        {
            if(con.State == ConnectionState.Closed)
            {
                con.Open();
                MySqlCommand command = new MySqlCommand("SELECT * FROM motto", con);
                using (MySqlDataReader reader = command.ExecuteReader())
                {
                    while (reader.Read())
                    {                           
                        Console.WriteLine(reader["motto"]);
                    }
                }
            }
        }
        catch(MySqlException ex)
        {
            Console.WriteLine(ex.ToString());
        }
        finally
        {
            con.Close();
        }
    }

但是当我尝试在手机上测试连接时,它显示无法连接到主机,代码如下:

using Android.App;
using Android.OS;
using Android.Support.V7.App;
using Android.Runtime;
using Android.Widget;
using MySql.Data.MySqlClient;
using System.Data;


namespace App1
{
    [Activity(Label = "@string/app_name", Theme = "@style/AppTheme", MainLauncher = true)]
    public class MainActivity : AppCompatActivity
    {
        private TextView Textmotto;
        protected override void OnCreate(Bundle savedInstanceState)
        {

            base.OnCreate(savedInstanceState);

            SetContentView(Resource.Layout.activity_main);

            Textmotto = FindViewById<TextView>(Resource.Id.textmotto);
            MySqlConnection con = new MySqlConnection("SERVER=85.10.205.173; PORT=3306; DATABASE=mybasework; UID=neawin; PWD=12345678; old guids=true; Connection Timeout=30;");
            try
            {

                if (con.State == ConnectionState.Closed)
                {
                    con.Open();
                    Textmotto.Text = "Success";

                }
            }
            catch (MySqlException ex)
            {
                Textmotto.Text = ex.ToString();
            }
            finally
            {
                con.Close();
            }
        }
    }
}

我想我尝试了连接字符串的所有变体,在第一个程序中我使用了 mysql.data 库,在手机应用程序中我使用了 Xamarin.Mysql Nuget Package,如果这有什么区别的话。抱歉,英语和格式很差,这是我的第一篇文章。

最佳答案

可能是网络问题。但请不要这样做。为了直接连接到数据库,您需要在应用程序中以纯文本形式输入数据库的密码(即使您对其进行加密, key 也位于您的应用程序中)。这是完全不安全的,任何脚本小子都可以拥有您的数据库。如果您需要数据库中的数据,请编写一个 Web 服务并让该 Web 服务访问数据库,这样您就不需要让身份验证信息离开您自己的服务器。

关于c# - Xamarin、MySQL 异常 : unable to connect to any specific host,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53147039/

相关文章:

c# - 使用 CancellationToke 添加作用域依赖项

c# - 当前上下文中不存在名称 'nameof'

android - 在方向更改时隐藏 Android 键盘

android - Android下如何使用Akka项目

PHP MySQL 增删改查 : Am I deleting safely?

php - 检查 MySQL 中的日期范围

c# - 在 C# 中管理时间序列

c# - OpenXML - 表创建,我如何创建表而不需要 excel 来修复它们

android - 不同 Android 版本的 Widgetsize

java - 从 MySQL 中超过 100 万条记录创建报告并在 Java JSP 页面中显示