Xamarin, исключение MySQL: невозможно подключиться к какому-либо конкретному хосту - PullRequest
0 голосов
/ 05 ноября 2018

Я хочу создать простое приложение, которое будет извлекать данные из удаленной базы данных и отображать их на экране, поэтому сначала я создал простое консольное приложение для проверки соединения, и все это работает. вот код:

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, если это что-то меняет. Извините за английский и плохое форматирование, мой первый пост.

Ответы [ 2 ]

0 голосов
/ 05 ноября 2018

спасибо за помощь, я решил проблему, добавив в свой манифест разрешение ИНТЕРНЕТ, как предложил Владислав.

0 голосов
/ 05 ноября 2018

Вероятно, проблема в сети. Но, пожалуйста, не делай этого. Чтобы напрямую подключиться к БД, вам нужно поместить пароль к вашей БД в виде простого текста в вашем приложении (даже если вы зашифруете его, ключ находится в вашем приложении). Это совершенно небезопасно, и любой сценарист может быть владельцем вашей базы данных. Если вам нужны данные из базы данных, напишите веб-сервис и получите доступ веб-сервиса к БД, поэтому вам никогда не нужно, чтобы информация аутентификации покидала ваши собственные серверы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...