2017-09-26 87 views
-1

我是c#的新手,當我運行我的C#代碼時出現此錯誤。請任何人給我解決這個一個有效的方法..在c#中的運行時錯誤 - 在mscorlib.dll中發生未處理的類型爲'System.FormatException'的異常mscorlib.dll

Run-time error - An unhandled exception of type 'System.FormatException' occurred in mscorlib.dll

private void textBox13_TextChanged_1(object sender, EventArgs e) 
     { 
      conn.Open(); 
      MySqlCommand comm1 = new MySqlCommand("SELECT `l_points` FROM `customer` WHERE `ph_no` ='" + Convert.ToInt32(textBox13.Text) + "'", conn); 
      //MySqlDataReader mdr = comm1.ExecuteReader(); 
      //MessageBox.Show(comm1.ExecuteScalar().ToString()); 
      //textBox12.Text = comm1.ExecuteScalar().ToString(); 
      MySqlDataReader red = comm1.ExecuteReader(); 

     if(red.Read()) 
     { 
      textBox12.Text = red.GetString("l_points"); 
      conn.Close(); 
      conn.Open(); 
      //int x = (Convert.ToInt32(textBox12.Text) - Convert.ToInt32(textBox2.Text)) +Convert.ToInt32 (textBox10.Text); 
      //string qry = "Update customer SET l-points = x where ph_no= '"+Convert.ToInt32(textBox13.Text)+"'"; 



      ////// 
      MySqlDataAdapter da = new MySqlDataAdapter("Update customer SET l_points = '"+((Convert.ToInt32(textBox12.Text) - Convert.ToInt32(textBox2.Text)) 
                 +Convert.ToInt32 (textBox10.Text))+"' where ph_no= '" + Convert.ToInt32(textBox13.Text) + "'", conn); 
      da.SelectCommand.ExecuteNonQuery(); 
      MessageBox.Show("update sucess!!!!!!"); 
     } 
     conn.Close(); 

     //double bal = Convert.ToDouble(textBox7.Text) * 0.01; 
     ////double bal = 1000; 
     ////MessageBox.Show(textBox7.Text); 
     //textBox10.Text = bal.ToString(); 
    } 
+2

將代碼粘貼在這裏,你得到這個錯誤。 – Amit

+0

也要小心SQL注入,儘可能使用參數。 – vasek

回答

0

看來,你試圖等於datetime值與一個字符串值,你可以嘗試在DateTime.Parse如果你想將其轉換爲

0

您的某個文本框中的值不能轉換爲數字或整數。它是純文本,並且您正在使用Convert.ToInt32將其轉換爲整數。這就是爲什麼,你得到的錯誤。此外,請在此聲明前計算您的電話號碼。

int l_points = ((Convert.ToInt32(textBox12.Text) - 
Convert.ToInt32(textBox2.Text)) +Convert.ToInt32 (textBox10.Text)); 

int phone = Convert.ToInt32(textBox13.Text); 

MySqlDataAdapter da = new MySqlDataAdapter("Update customer SET l_points = "+l_points +" where ph_no= " + phone, conn); 

Moreso,你不應該產生這樣的SQL語句,以避免SQL注入。使用它作爲輸入參數,如果可能的話,存儲過程。

+0

對不起。仍然得到這個相同的錯誤。 << int l_points =((Convert.ToInt32(textBox12.Text) - Convert.ToInt32(textBox2.Text))+ Convert.ToInt32(textBox10.Text)); >> –

+0

檢查您的值。是任何文本框值文本或空白。將空白值轉換爲0。 – Amit

1

使用int.TryParse嘗試在解析發生之前將文本解析爲整數。使用Convert.ToInt32,如果字符串中有錯誤,它將加載一個異常。

int number10 = 0, number12 = 0, number2 = 0; 
int.TryParse(textBox10.Text, out number10); 
int.TryParse(textBox12.Text, out number12); 
int.TryParse(textBox2.Text, out number2); 

int l_points = number12 - number2 + number10; 

您也可以調試每一行知道什麼和在哪裏的問題是

相關問題