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)
说明: 执行当前 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)
我的问题主要是我的成绩表的姓名字段全部显示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();
你不用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()+"'");
update score set score=isnull(XZ_score,0) + isnull(TK_score,0) + isnull(PD_score,0)
你不就是要这样的效果吗
update score set score=isnull(XZ_score,0) + isnull(TK_score,0) + isnull(PD_score,0)
你不就是要这样的效果吗为什么不这样做???????????????????????????????