Conversion failed when converting the varchar value '杨华涛' to data type int. 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Data.SqlClient.SqlException: Conversion failed when converting the varchar value '杨华涛' to data type int.源错误: 
行 38:             string sql = string.Format("update score set score = {0} where stuID = {1} and stuName={1}", score, dr["stuID"].ToString().Trim(),dr["stuName"].ToString().Trim());
行 39:              SqlCommand cmd = new SqlCommand(sql, con);
行 40:             cmd.ExecuteNonQuery();
行 41:         }
行 42:            con.Close();
 源文件: d:\biyesheji\result.aspx.cs    行: 40 堆栈跟踪: 
[SqlException (0x80131904): Conversion failed when converting the varchar value '杨华涛' to data type int.]
   System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) +95
   System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) +82
   System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) +346
   System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) +3244
   System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async) +272
   System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe) +367
   System.Data.SqlClient.SqlCommand.ExecuteNonQuery() +149
   result.Button1_Click(Object sender, EventArgs e) in d:\biyesheji\result.aspx.cs:40
   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) +3843 代码区:
 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=(dr["XZ_score"] == DBNull.Value ? 0 : Convert.ToInt32(dr["XZ_score"]))+ (dr["XZ_score"] == DBNull.Value ? 0 : Convert.ToInt32(dr["TK_score"])) + (dr["PD_score"] == DBNull.Value ? 0 : Convert.ToInt32(dr["PD_score"]));             string sql = string.Format("update score set score = {0} where stuID = {1} and stuName={1}", score, dr["stuID"].ToString().Trim(),dr["stuName"].ToString().Trim());
             SqlCommand cmd = new SqlCommand(sql, con);
            cmd.ExecuteNonQuery();
        }
           con.Close();
           Response.Write("<script   language=javascript>window.close();</script>");
    }
}数据库表:
我的数据库是
成绩表score:
id      int 
stuID  varchar(15)
stuName varchar(15)
score  int
XZ_score int
TK_score int
PD_score int 
学生表student:
id   int 
stuID varchar(15) primary key,
stuName varchar(10),
stuPwd varchar(10),
stuEmail varchar(50)

解决方案 »

  1.   

    string sql = string.Format("update score set score = {0} where stuID = {1} and stuName={2}", score, dr["stuID"].ToString().Trim(),dr["stuName"].ToString().Trim()); 
      

  2.   

    我把它改成stuID = {1} and stuName={2},出现了现在的问题,,
    我的问题主要是我的成绩表的姓名字段全部显示NULL,,成绩的姓名字段更新不了数据。。Invalid column name '杨华涛'. 
    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Data.SqlClient.SqlException: Invalid column name '杨华涛'.源错误: 
    行 39:             string sql = string.Format("update score set score = {0} where stuID = {1} and stuName={2}", score, dr["stuID"].ToString().Trim(), dr["stuName"].ToString().Trim());
    行 40:              SqlCommand cmd = new SqlCommand(sql, con);
    行 41:             cmd.ExecuteNonQuery();
    行 42:         }
    行 43:            con.Close();
     
      

  3.   

    杨华涛加单引号'杨华涛'
    你不用SqlParameter,拼接Sql语句也只能这样写了:
    string sql = string.Format("update score set score = {0} where stuID = {1} and stuName={2}", score, dr["stuID"].ToString().Trim(), "'"+dr["stuName"].ToString().Trim()+"'"); 
      

  4.   

    你为什么要搞那么复杂
    update score set score=isnull(XZ_score,0) + isnull(TK_score,0) + isnull(PD_score,0)
    你不就是要这样的效果吗
      

  5.   

    你为什么要搞那么复杂 
    update score set score=isnull(XZ_score,0) + isnull(TK_score,0) + isnull(PD_score,0) 
    你不就是要这样的效果吗为什么不这样做???????????????????????????????