2013-02-09 2 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(); 

ошибка я получаю это FormatException был необработанным бушель кодом пользователя Входной строки не была в правильном формате.

+0

Прежде всего кода склонно быть мишенью SQL инъекции. Используйте инфраструктуру ORM, такую ​​как Entity Framework, или используйте параметризованный запрос. Это рецепт катастрофы. Пользователь 'TryParse' метод для примитивных типов данных, чтобы избежать исключения и подготовить параметры оттуда. –

+0

@JigarPatel: Вероятно, стоит просто написать оба этих вопроса в качестве ответа ... –

+0

jigar hey m new для этого метода может и сказать мне, как использовать это, я всегда использовал convert.toin32 для преобразования. – a2ulthakur

ответ

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

Смежные вопросы