昨天调试一天了//用户修改
public partial class UserInfo : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
User user = new User(Session["UserName"].ToString());
NickName.Text = user.nickName;
Password.Value = user.password;
Question.Value = user.question;
Answer.Text = user.answer;
}
}protected void EditInfo_Click(object sender, EventArgs e)
{
if (Page.IsValid)
{User user = new User();
string strMd5 = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(Password.Value, "md5");
bool Result =user.EditInfo(UserName.Value, NickName.Text, strMd5, Question.Value, Answer.Text);
if (Result == true)
{
Response.Write("<script language=\"javascript\">alert('恭喜您,修改成功!');window.open('Default.aspx','_top')</script>");
Response.End();
}
}
}
}
//数据库更新类
namespace BBS.User
{
    public class User
    {
        private string UserName;
        private string NickName;
        private string Password;
        private string Question;
        private string Answer;
。。
///显示用户信息
public User(string UserName)....///修改用户信息
public bool EditInfo(string UserName,string NickName, string Password, string Question, string Answer)
{string sql = "User_EditInfo";
DataBase db = new DataBase();
SqlConnection conn = db.ReturnConn();
SqlCommand cmd = db.CreateCmd(sql, conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@UserName", UserName);
cmd.Parameters.AddWithValue("@NickName", NickName);
cmd.Parameters.AddWithValue("@Password", Password);
cmd.Parameters.AddWithValue("@Question", Question);
cmd.Parameters.AddWithValue("@Answer", Answer);
cmd.Parameters.AddWithValue("@Sex", Sex);
cmd.Parameters.AddWithValue("@UserHead", UserHead);
cmd.Parameters.AddWithValue("@Birthday", Birthday);
cmd.Parameters.AddWithValue("@Hobby", Hobby);
cmd.Parameters.AddWithValue("@UserSign", UserSign);try
{
cmd.ExecuteNonQuery();
return true;
}
catch (Exception ex)
{
LogWrite.WriteLog(ex.ToString());
return false;
}
finally
{
db.Dispose(conn);
}}
数据库连接另外定义的,别的注册、添加等功能都实现了,就只有用户信息不更新,希望大家帮忙解决一下

解决方案 »

  1.   

    把EditInfo中的try catch去掉,加个断点跟一下,先确定是哪里出错了
      

  2.   

    User_EditInfo是存储过程吗?
    还有你是直接通过ADO.NET操作数据库的吗?
    还是用的其它的持久化层的框架。
      

  3.   


    User_EditInfo是存储过程,昨天一个同学帮忙查了一下,但是没改对,我们都是新手……麻烦大家帮忙解决一下吧
      

  4.   

    我在这public bool EditInfo(string UserName,string NickName, string Password, string Question, string Answer)
    加了断点,然后正常执行了
      

  5.   

    不更新的意思是没有报错,但是资料没被更新?定义一个变量来接收执行返回的影响笔数 int i = cmd.ExecuteNonQuery();
    查看是否i >=1 ,如果不是,说明sql语句条件不正确,导致update没有更新到资料.具体哪里不正确,你调试一下就应该知道的.
      

  6.   


    sql语句没有错,我是根据用户名定位的,if (Page.IsValid)
    {User user = new User();
    string strMd5 = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(Password.Value, "md5");
    bool Result =user.EditInfo(UserName.Value, NickName.Text, strMd5, Question.Value, Answer.Text);
    是不是因为红色部分没有定位UserName?
      

  7.   

    最小白办法:
    1、先直接在数据库里测试存储过程,看存储过程是否正确
    2、把下列编码中的变量UserName、NickName等变成定值'dfd'一定要确保数据类型正确,然后运行看看能不能更新
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.Parameters.AddWithValue("@UserName", UserName);
    cmd.Parameters.AddWithValue("@NickName", NickName);

    3、如果到2都没问题,就是数据类型出错了