locked
Conectar Windows Phone 8.1 com o MySQL RRS feed

  • Pergunta

  • Olhei diversos foruns a procura de alguma solução para conectar ao MySQL.

    Alguns falavam em criar um WcfService e chamar a função no código do WP, mas não funcionou.

    Alguém teria alguma dica de como fazer essa comunicação?

    Muito obrigado.

    sexta-feira, 10 de abril de 2015 17:46

Respostas

  • Olá Felipe,

    É possível acessar diretamente um banco de dados MySQL criando “wrapper” de serviço para suas operações de banco de dados. Isto irá expor todas as operações que você vai precisar de uma forma simples (ASP.NET Web API ou serviço WCF). Não sei porque você teve problema com a sua aplicação. Somente um troubleshooting mais detalhado para sabermos.

    Porém você também pode usar o Provedor ODATA.

     Obrigado!

    Veiga

    • Sugerido como Resposta Eduardo.Romero segunda-feira, 13 de abril de 2015 12:09
    • Marcado como Resposta Eduardo.Romero segunda-feira, 13 de abril de 2015 20:08
    sexta-feira, 10 de abril de 2015 20:00

Todas as Respostas

  • Olá Felipe,

    É possível acessar diretamente um banco de dados MySQL criando “wrapper” de serviço para suas operações de banco de dados. Isto irá expor todas as operações que você vai precisar de uma forma simples (ASP.NET Web API ou serviço WCF). Não sei porque você teve problema com a sua aplicação. Somente um troubleshooting mais detalhado para sabermos.

    Porém você também pode usar o Provedor ODATA.

     Obrigado!

    Veiga

    • Sugerido como Resposta Eduardo.Romero segunda-feira, 13 de abril de 2015 12:09
    • Marcado como Resposta Eduardo.Romero segunda-feira, 13 de abril de 2015 20:08
    sexta-feira, 10 de abril de 2015 20:00
  • Eu fiz da seguinte forma.

    Criei um WcfService

    - Código do IService.cs

    namespace WcfService1
    {    
        [ServiceContract]
        public interface IService1
        {
    
            [OperationContract]
            DateTime GetDateTimeServer();
        }
    }

    - Código do Service1.svc.cs

    namespace WcfService1
    {
        public class Service1 : IService1
        {
            public DateTime GetDateTimeServer()
            {
                MySqlConnection mysqlConnection = new MySqlConnection(ConnectionString);
    
                try
                {
                    mysqlConnection.Open();
    
                    MySqlCommand cmd = new MySqlCommand("SELECT NOW();", mysqlConnection);
                    MySqlDataReader reader = cmd.ExecuteReader();
    
                    while (reader.Read())
                    {
                        return Convert.ToDateTime(reader[0]);
                    }
                    
                    return new DateTime();             
                }
                catch
                {
                    return new DateTime();
                }
                finally
                {
                    mysqlConnection.Dispose();
                }
            }
        }
    }

    Ai criei um projeto WP Silverlight, adicionei a referencia do WCF e fiz o seguinte trecho de código:

    namespace PhoneApp1
    {
        public partial class MainPage : PhoneApplicationPage
        {
            Service1Client proxy;
    
            public MainPage()
            {
                InitializeComponent();
    
                proxy = new Service1Client();
                proxy.GetDateTimeServerCompleted += proxy_GetDateTimeServerCompleted;
            }
    
            private void proxy_GetDateTimeServerCompleted(object sender, GetDateTimeServerCompletedEventArgs e)
            {
                if(e.Result != null)
                {
                    txtDtServidor.Text = e.Result.ToString();
                }
                else
                {
                    txtDtServidor.Text = "ERROR";
                }
            }
    
            private void btnConectar_Click(object sender, RoutedEventArgs e)
            {
                proxy.GetDateTimeServerAsync();
            }
        }
    }

    Mas ao rodar o app, o seguinte erro acontece:

    An exception of type 'System.ServiceModel.CommunicationException' occurred in System.ServiceModel.ni.dll but was not handled in user code
    
    Additional information: The remote server returned an error: NotFound.

    Não sei o que posso fazer para funcionar... Preciso muito fazer a conexão com o MySQL...

    sábado, 11 de abril de 2015 02:25
  • Boa tarde Felipe,

    Sugiro que verifique nesses links abaixo se alguma das soluções lhe ajuda a resolver seu problema. Caso não tenha sucesso, desmarque a resposta e nos envie mais detalhes do seu erro para que possamos continuar ajudando.

    https://msdn.microsoft.com/en-us/library/hh567802(v=cs.95).aspx

    http://stackoverflow.com/questions/21699039/an-unhandled-exception-of-type-system-servicemodel-communicationexception-occu

    Obrigado,

    Abraço!


    Eduardo Romero

    Esse conteudo e fornecido sem garantias de qualquer tipo, seja expressa ou implicita.

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as respostas que resolveram o seu problema. Essa e uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais facil para os outros visitantes encontrarem a resolucao mais tarde.

    segunda-feira, 13 de abril de 2015 20:08
  • Olá Felipe,

    Eu criei o mesmo cenário que o seu, um serviço WCF, uma aplicação WP Silverlight 8.1 consumindo este serviço, onde o Serviço lê as linhas de um DB. A única diferença foi que não usei o MySQL, usei o SQL Server como provedor. Em teoria a única diferença que deveríamos ter seria o “Connection String”. Em relação ao serviço WCF, a minha aplicação foi capaz de conectar e consumir uma linha da tabela retornando a minha data de nascimento e exibindo na tela do WP.

    A minha sugestão seria você eliminar o MySQL do senário e tentar apenas consumir um serviço para retornar um valor constante, tipo uma mensagem de texto. Assim você apenas validaria que o seu WCF está sendo consumido pela a sua aplicação. Só depois, introduzir o DB de volta.

    Fiz uma pesquisa sobre o erro que você está recebendo e achei uma coisa interessante mas que parece se aplicar apenas a aplicações XAML. Para maiores detalhes veja o forum “WCF Add Service Reference Not Supported for Windows Phone 8.1 XAML Applications”.

    Boa sorte,

    Veiga

    segunda-feira, 13 de abril de 2015 21:14