2013-02-09 64 views
0

這是我更新事件代碼:在GridView控件更新編碼我收到以下錯誤?

protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e) 
{ 
    if (con.State == ConnectionState.Closed) 
    { 
     con.Open(); 
    } 

    GridViewRow row = (GridViewRow)GridView1.Rows[e.RowIndex]; 
    int Label11 =Convert.ToInt32(((Label)row.FindControl("Label11")).Text);// this is the line m getting error in 
    int Label12 = Convert.ToInt32(((Label)row.FindControl("Label12")).Text); 
    int Label13 = Convert.ToInt32(((Label)row.FindControl("Label13")).Text); 
    TextBox TextBox4 = (TextBox)row.FindControl("TextBox4"); 
    TextBox TextBox5 = (TextBox)row.FindControl("TextBox5"); 
    TextBox TextBox6 = (TextBox)row.FindControl("TextBox6"); 
    TextBox TextBox7 = (TextBox)row.FindControl("TextBox7"); 
    TextBox TextBox8 = (TextBox)row.FindControl("TextBox8"); 
    TextBox TextBox9 = (TextBox)row.FindControl("TextBox9"); 
    TextBox TextBox10 = (TextBox)row.FindControl("TextBox10"); 
    GridView1.EditIndex = -1; 
    SqlCommand cmd = new SqlCommand("update monthly set date='" + TextBox4.Text + "',salary='" + TextBox5.Text + "',ta='" + TextBox6.Text + "',contigency='" + TextBox7.Text + "',nrc='" + TextBox8.Text + "',institcharges='" + TextBox9.Text + "',others='" + TextBox10.Text + "' where autoid='" + Label12 + "'", con); 
    cmd.ExecuteNonQuery(); 
    cmd.Dispose(); 
    con.Close(); 
    grid_show(); 

I M得到的錯誤是出現FormatException了未處理BU用戶代碼 輸入字符串的不正確的格式。

+0

首先是容易被SQL注入的目標。使用實體框架之類的ORM框架或使用參數化查詢。這是一場災難。用戶'TryParse'方法原始數據類型,以避免異常,並從那裏準備參數。 – 2013-02-09 09:30:52

+0

@JigarPatel:這可能只是值得寫這兩個點作爲答案... – 2013-02-09 09:38:18

+0

jigar嘿米新的這種方法可以告訴我如何使用這個我一直使用convert.toin32進行轉換。 – a2ulthakur 2013-02-09 09:39:00

回答

1

使用的TryParse方法適用於基本數據類型。解釋SQL注入和ORM框架超出了這個答案的範圍。

http://social.msdn.microsoft.com/Search/en-US?query=TryParse&ac=8的所有代碼

void Main() 
{ 
    //TryParse function signature 
    //bool TryParse(String, Int32) 
    //Above method is for Integer. There are similar methods for all primitive data types 

    //TryParse takes String value as an input and parameter as reference 

    //Integer example 
    int result; 
    bool success = int.TryParse("10", out result); 
    if(success) Console.WriteLine("Good value {0}", result); 


    //DateTime example 
    DateTime dtResult; 
    success = DateTime.TryParse("01/10/2013", out dtResult); 
    if(success) Console.WriteLine("Good date {0}", dtResult); 
} 
+0

感謝烏拉圭回合的幫助.. !!無論如何,如果有誰可以幫助...將是偉大的! – a2ulthakur 2013-02-09 13:22:09

相關問題