2017-11-21 12 views
0
using System; 
using Xamarin.Forms; 
using UIKit; 
using MySql.Data.MySqlClient; 

namespace test.project 
{ 
    public partial class ViewController : UIViewController 
    { 

     partial void UIButton197_TouchUpInside(UIButton sender) 
     { 
      if (textBoxName.Text == "" || textBoxpasswd.Text == "") 
      { 
       var alert = UIAlertController.Create("Fehler", "Bitte geben sie Benutzername und Password ein", UIAlertControllerStyle.Alert); 
       alert.AddAction(UIAlertAction.Create("Ok", UIAlertActionStyle.Default, null)); 
       PresentViewController(alert, true, null); 
       // Fehlerüberprüfung wenn leer ist 

      } 
      else 
      { 
       try 
       { 
        MySqlConnection con = new MySqlConnection("Server=localhost;Port=8889;database=app;User Id=root;Password=;charset=utf8"); 

        if (con.State == System.Data.ConnectionState.Closed) 
        { 
         con.Open(); 
         MySqlCommand cmd = new MySqlCommand("INSERT INTO users(id, username, passwd, rank) VALUES(@user, @pass, @rank)", con); 
         cmd.Parameters.AddWithValue("@user", textBoxName.Text); 
         cmd.Parameters.AddWithValue("@pass", textBoxpasswd.Text); 
         cmd.Parameters.AddWithValue("@rank", 0); 

         cmd.ExecuteNonQuery(); 
         errorLabel.Text = "ausgeführt"; 
        } 
        else 
        { 
         errorLabel.Text = "no connection"; 
        } 
       } 
       catch 
       { 
        errorLabel.Text = "catch"; 
       } 
      } 
     } 

     protected ViewController(IntPtr handle) : base(handle) 
     { 
      // Note: this .ctor should not contain any initialization logic. 
     } 

     public override void ViewDidLoad() 
     { 
      base.ViewDidLoad(); 
      // Perform any additional setup after loading the view, typically from a nib. 
     } 

     public override void DidReceiveMemoryWarning() 
     { 
      base.DidReceiveMemoryWarning(); 
      // Release any cached data, images, etc that aren't in use. 
     } 
    } 
} 

私はしています。データベースに接続しますが、行を確認してください。プログラムがクラッシュします。データベースに接続したい場合、クラッシュしますか?

答えて

1

明らかにデータベースへの接続に問題があります。

あなたのようにサーバーを定義している:Server=localhost

はこの絶対に正しいですか?私は非常にあなたが完全なMySQLサーバーをデバイス自体で実行している疑いがありますか?デバイスでサーバーを実行している場合、サーバープロセスは実行中ですか?

アプリケーションが終了する実行とは何ですか?

CONNECTION_TIMEOUT?おそらくファイアウォールの問題
CONNECTION_REFUSED? MySQLサーバプロセスが実行されていません。

また、多分試みとの接続をラップし、データベース障害に対して強化するアプリケーションを設計する必要があります

try { 

    connection.open(); 

} catch (Exception e) { 

    // TODO handle the connection error properly 
    System.err.println("An error has occurred."); 
    e.printStackTrace(); 
} 
関連する問題