protected void btnEdit_Click(object sender, EventArgs e)
{
string str = "update users set pwd='" + txtPwd1.Text.Trim() + "',email='" + txtEmail.Text.Trim() + "' where uid='" + Session["username"].ToString() + "'";
con.Open();
SqlCommand cmd = new SqlCommand(str, con);
SqlDataReader dr = cmd.ExecuteReader();
if (dr.Read())
{
Response.Write("<script language=jscript>alert('修改成功!');</script>");
}
else
{
Response.Write("<script language=jscript>alert('账号或密码错误!');</script>");
}
con.Close();
明明修改执行成功,怎么还运行else里面的语句,而不运行if里面的语句?
{
string str = "update users set pwd='" + txtPwd1.Text.Trim() + "',email='" + txtEmail.Text.Trim() + "' where uid='" + Session["username"].ToString() + "'";
con.Open();
SqlCommand cmd = new SqlCommand(str, con);
SqlDataReader dr = cmd.ExecuteReader();
if (dr.Read())
{
Response.Write("<script language=jscript>alert('修改成功!');</script>");
}
else
{
Response.Write("<script language=jscript>alert('账号或密码错误!');</script>");
}
con.Close();
明明修改执行成功,怎么还运行else里面的语句,而不运行if里面的语句?
用ExecuteNoQuery()可以
ExecuteNonQuery() 这个方法并不返回一个DataReader对象,而是返回一个int类型的值,即在执行之后在数据库中所影响的行数
发表于:2007-12-14 15:47:017楼 得分:0
ExecuteReader();返回一个SqlDataReader对象或OleDbDataReader对象 你这里是个update ,自然不会返回 SqlDataReader对象或OleDbDataReader对象,结果跳到else 所以要用
ExecuteNonQuery() 这个方法并不返回一个DataReader对象,而是返回一个int类型的值,即在执行之后在数据库中所影响的行数
他说的是正确的 就是这样!