2015-10-26 72 views
0

我目前正致力於個人項目&我無法真正理解爲什麼應用程序在出現問題時不會告訴用戶。無法正常工作

private void button1_Click(object sender, EventArgs e) 
{ 
     if (connect.State == ConnectionState.Open) 
     { 
      MySqlCommand cmd = new MySqlCommand(); 
      cmd.Connection = connect; 
      cmd.CommandText = "INSERT INTO USERS (Namn,Personnummer,Username,Password,accountid,Avtal,Startdatum) values(@parameter1,@parameter2,@parameter3,@parameter4,@parameter5,@parameter6,@parameter7)"; 
      cmd.Parameters.AddWithValue("@parameter1", (textBox1.Text)); 
      cmd.Parameters.AddWithValue("@parameter2", textBox2.Text); 
      cmd.Parameters.AddWithValue("@parameter3", (textBox3.Text)); 
      cmd.Parameters.AddWithValue("@parameter4", (textBox4.Text)); 
      cmd.Parameters.AddWithValue("@parameter5", textBox5.Text); 
      cmd.Parameters.AddWithValue("@parameter6", (textBox6.Text)); 
      cmd.Parameters.AddWithValue("@parameter7", (textBox7.Text)); 
      MySqlDataReader accessed = cmd.ExecuteReader(); 
      MessageBox.Show("Account created!"); 
     } 
     else 
     { 
      MessageBox.Show("Something went wrong, could'nt establish a stable connection"); 
     } 
} 

至於現在,應用程序只是崩潰,如果一個穩定的連接不能啓動,而不會告訴用戶在MessageBox部分。

+3

你爲什麼一直打開連接?不要這樣做。相反,使用'using'語句可以在方法中儘可能快地關閉連接。請注意,關閉連接使其可以重複使用,但在連接池時並未關閉。 –

+0

使用try catch塊 – Mihai

回答

2
private void button1_Click(object sender, EventArgs e) 
{ 

    try{ 
    if (connect.State == ConnectionState.Open) 
    { 
     MySqlCommand cmd = new MySqlCommand(); 
     cmd.Connection = connect; 
     cmd.CommandText = "INSERT INTO USERS (Namn,Personnummer,Username,Password,accountid,Avtal,Startdatum) values(@parameter1,@parameter2,@parameter3,@parameter4,@parameter5,@parameter6,@parameter7)"; 
     cmd.Parameters.AddWithValue("@parameter1", (textBox1.Text)); 
     cmd.Parameters.AddWithValue("@parameter2", textBox2.Text); 
     cmd.Parameters.AddWithValue("@parameter3", (textBox3.Text)); 
     cmd.Parameters.AddWithValue("@parameter4", (textBox4.Text)); 
     cmd.Parameters.AddWithValue("@parameter5", textBox5.Text); 
     cmd.Parameters.AddWithValue("@parameter6", (textBox6.Text)); 
     cmd.Parameters.AddWithValue("@parameter7", (textBox7.Text)); 
     MySqlDataReader accessed = cmd.ExecuteReader(); 
     MessageBox.Show("Account created!"); 
    } 
    else 
    { 
     MessageBox.Show("Something went wrong, could'nt establish a stable connection"); 
    } 
    } 
catch 
{ 
     MessageBox.Show("Something went wrong, could'nt establish a stable connection"); 
} 
} 

您可以通過各種方式處理Catch。得到確切的錯誤。如:

try{} 
catch(Exception ex) 
{MessageBox.Show(ex.message);} 

MSDN link for try catch您可能會發現任何其他適當的方式。

+0

你是明星!非常感謝你:) – Hajpz

+1

正如Tim Schmelter所述,爲什麼連接保持開放?使用using語句,你不需要if和else,只需要try和catch。 – Chawin

+0

如果拋出異常,則存在一些潛在的問題。我認爲解決這個問題最好是將問題納入試驗階段。只是我的意見... –