2014-12-04 3 views
1

Я пытаюсь подключиться к базе данных MySQL на своем мобильном устройстве с ОС Windows Phone 8.1. Я использую WCF, чтобы создать это подключение (только для тестирования):Подключение к MySQL в Windows Phone 8.1

public class Service1 : IService1 
{ 

    public string PobierzHandlowca() 
    { 
     String sql = "SELECT nazwa FROM Handlowcy WHERE id_handlowcy=1"; 
     MySqlConnection connection = new MySqlConnection("Server=localhost; Database=msoh; Uid=root; Pwd=;"); 

     try 
     { 
      connection.Open(); 
      MySqlCommand command = new MySqlCommand(sql, connection); 
      MySqlDataReader reader = command.ExecuteReader(); 

      while (reader.Read()) 
      { 
       return (string)reader["nazwa"]; 
      } 
     } 
     catch { } 
     finally 
     { 
      connection.Dispose(); 
     } 

     return null; 
    } 
} 

Тогда в моем приложении Windows Phone Silverlight Я добавить ссылку на службу. И тогда я просто сделать это:

public partial class MainPage : PhoneApplicationPage 
{ 
    ServiceReference1.Service1Client proxy; 


    public MainPage() 
    { 
     InitializeComponent(); 

     proxy = new Service1Client(); 
     proxy.PobierzHandlowcaCompleted += proxy_PobierzHandlowcaCompleted;   
    } 


    void proxy_PobierzHandlowcaCompleted(object sender, PobierzHandlowcaCompletedEventArgs e) 
    { 
     if (e.Result != null) 
     { 
      tbHandlowiec.Text = e.Result; // tbHandlowiec is a TextBox control 
     } 
     else 
     { 
      tbHandlowiec.Text = "Error!"; 
     } 
    } 

    // button 
    private void btnPobierzHandlowca_Click(object sender, RoutedEventArgs e) 
    { 
     proxy.PobierzHandlowcaAsync(); 
    } 
} 

При нажатии на эту кнопку, через некоторое время я получаю эту ошибку - исключение типа «System.ServiceModel.CommunicationException» произошло в System.ServiceModel.ni.dll но не обрабатывался в коде пользователя

Что не так с этим кодом? Что мне не хватает?

+1

Никогда не рекомендуется иметь пустой блок catch. Если что-то не удается на сервере, у вас нет способа узнать, что случилось. – Steve

+0

Определите время, это может быть тайм-аут, если это достаточно долго, а это значит, что вы на самом деле никогда не нажимаете на сервис. –

+0

@ Mr.B - Это около 5 секунд. – XardasLord

ответ

0

Хорошо, я нашел решение.

Я создал службу WCF на Local IIS:

enter image description here

также пришлось установить некоторые .NET, HTTP и функции IIS в Turn Windows, или отключение компонентов (Панель управления -> Возможности программы).

Теперь я могу получить данные на своем Windows-телефоне из базы данных, расположенной на моем компьютере.