protected void Button1_Click(object sender, EventArgs e)
    {
        SqlConnection con = DB.createrDB();
        con.Open();
        SqlDataAdapter da = new SqlDataAdapter("select * from score ", con);
        DataSet ds = new DataSet();
        da.Fill(ds);        DataTable dt = ds.Tables[0];        foreach (DataRow dr in dt.Rows)
        {
            int score =Convert.ToInt32(dr["XZ_score"].ToString().Trim())+ Convert.ToInt32(dr["TK_score"].ToString().Trim()) + Convert.ToInt32(dr["PD_score"].ToString().Trim());
            string sql = string.Format("update score set score = {0} where stuID = {1}", score, dr["stuID"].ToString().Trim());
             SqlCommand cmd = new SqlCommand(sql, con);
            cmd.ExecuteNonQuery();
        }
           con.Close();
           Response.Write("<script   language=javascript>window.close();</script>");
    }运行时出现的错误异常详细信息: System.FormatException: 输入字符串的格式不正确。源错误: 
行 33:         foreach (DataRow dr in dt.Rows)
行 34:         {
行 35:             int score =Convert.ToInt32(dr["XZ_score"].ToString().Trim())+ Convert.ToInt32(dr["TK_score"].ToString().Trim()) + Convert.ToInt32(dr["PD_score"].ToString().Trim());
行 36:             string sql = string.Format("update score set score = {0} where stuID = {1}", score, dr["stuID"].ToString().Trim());
行 37:              SqlCommand cmd = new SqlCommand(sql, con);
 源文件: d:\biyesheji\result.aspx.cs    行: 35 堆栈跟踪: 
[FormatException: 输入字符串的格式不正确。]
   System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal) +2753155
   System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info) +102
   System.Convert.ToInt32(String value) +68
   result.Button1_Click(Object sender, EventArgs e) in d:\biyesheji\result.aspx.cs:35
   System.Web.UI.WebControls.Button.OnClick(EventArgs e) +96
   System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +116
   System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +31
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +32
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +72
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3838 

解决方案 »

  1.   

    dr["XZ_score"].ToString().Trim()
    dr["TK_score"].ToString().Trim()
    dr["PD_score"].ToString().Trim()
    是否为int型,用Tryparse
      

  2.   

    dr["XZ_score"].ToString().Trim() 要是数字才行,包含字母和其它符号就不行了可
      

  3.   

    设置断点单步调试一下就知道啦dr["XZ_score"].ToString().Trim()
    dr["TK_score"].ToString().Trim()
    dr["PD_score"].ToString().Trim() 
    有不能显示转换成int的字符,比如字符串ab显示转换成int,就会出现转换异常。
      

  4.   

    dr["XZ_score"].ToString().Trim() 
    dr["TK_score"].ToString().Trim() 
    dr["PD_score"].ToString().Trim()这三个里面有一个或多个不能正确的转换为整数
      

  5.   

    我的数据库是
    id      int  
    stuID   varchar(15)
    stuName varchar(15)
    score   int
    XZ_score int
    TK_score int
    PD_score int
    数据库里的数据:
    18 1111 NULL NULL 5 0 0
    19 1111 NULL NULL 5 0 0
    20 1111 NULL NULL 5 0 0
      

  6.   

    本帖最后由 ojlovecd 于 2009-12-16 22:42:45 编辑