none
更新不了,错在哪? RRS feed

  • 问题

  • 存储过程没有问题,我在数据库里执行过了

    C# code
    using System; using System.Collections; using System.Configuration; using System.Data; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Xml.Linq; using System.Data.SqlClient; namespace 汇通玩具网站.user { public partial class 用户资料修改 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { SqlCommand sqlcommand1 = new SqlCommand(); sqlcommand1.CommandText = "SELECT [会员编号], [用户名], [详细地址], [联系电话], [移动电话], [电子邮箱], [QQ], [MSN], [阿里旺旺], [密码提示问题], [密码提示答案] FROM [会员] WHERE [会员编号] =" + Session["会员编号"]; sqlcommand1.Connection = new SqlConnection(ConfigurationManager.ConnectionStrings["汇通玩具网站ConnectionString"].ConnectionString); sqlcommand1.Connection.Open(); SqlDataReader sdr = sqlcommand1.ExecuteReader(); while (sdr.Read()) { 用户名.Text = sdr.GetValue(1).ToString(); 详细地址.Text = sdr.GetValue(2).ToString(); 联系电话.Text = sdr.GetValue(3).ToString(); 移动电话.Text = sdr.GetValue(4).ToString(); 电子邮箱.Text = sdr.GetValue(5).ToString(); QQ.Text = sdr.GetValue(6).ToString(); MSN.Text = sdr.GetValue(7).ToString(); 阿里旺旺.Text = sdr.GetValue(8).ToString(); 密码提示问题.Text = sdr.GetValue(9).ToString(); 密码提示答案.Text = sdr.GetValue(10).ToString(); } if (!sdr.IsClosed) { sdr.Close(); } sqlcommand1.Connection.Close(); sqlcommand1.Dispose(); } protected void 提交会员信息_Click(object sender, EventArgs e) { SqlCommand sqlcommand1 = new SqlCommand(); sqlcommand1.Connection = new SqlConnection(ConfigurationManager.ConnectionStrings["汇通玩具网站ConnectionString"].ConnectionString); sqlcommand1.Connection.Open(); sqlcommand1.CommandType = CommandType.StoredProcedure; sqlcommand1.CommandText = "会员修改资料存储过程"; sqlcommand1.Parameters.Add("@会员编号", SqlDbType.Int); sqlcommand1.Parameters.Add("@详细地址", SqlDbType.NVarChar, 255); sqlcommand1.Parameters.Add("@联系电话", SqlDbType.NVarChar, 255); sqlcommand1.Parameters.Add("@移动电话", SqlDbType.NVarChar, 255); sqlcommand1.Parameters.Add("@电子邮箱", SqlDbType.NVarChar, 255); sqlcommand1.Parameters.Add("@QQ", SqlDbType.NVarChar, 255); sqlcommand1.Parameters.Add("@MSN", SqlDbType.NVarChar, 255); sqlcommand1.Parameters.Add("@阿里旺旺", SqlDbType.NVarChar, 255); sqlcommand1.Parameters.Add("@密码提示问题", SqlDbType.NVarChar, 255); sqlcommand1.Parameters.Add("@密码提示答案", SqlDbType.NVarChar, 255); sqlcommand1.Parameters["@会员编号"].Value = Session["会员编号"]; sqlcommand1.Parameters["@详细地址"].Value = 详细地址.Text.Trim(); sqlcommand1.Parameters["@联系电话"].Value = 联系电话.Text.Trim(); sqlcommand1.Parameters["@移动电话"].Value = 移动电话.Text.Trim(); sqlcommand1.Parameters["@电子邮箱"].Value = 电子邮箱.Text.Trim(); sqlcommand1.Parameters["@QQ"].Value = QQ.Text.Trim(); sqlcommand1.Parameters["@MSN"].Value = MSN.Text.Trim(); sqlcommand1.Parameters["@阿里旺旺"].Value = 阿里旺旺.Text.Trim(); sqlcommand1.Parameters["@密码提示问题"].Value = 密码提示问题.Text.Trim(); sqlcommand1.Parameters["@密码提示答案"].Value = 密码提示答案.Text.Trim(); sqlcommand1.ExecuteNonQuery(); sqlcommand1.Parameters.Clear(); 提示信息.Text = "资料成功修改!"; 会员修改信息表.Visible = false; 提示信息.Visible = true; //提示信息.Text = SqlDataSource1.UpdateCommand; sqlcommand1.Connection.Close(); sqlcommand1.Dispose(); } } }
    2010年4月5日 14:01

答案

  •  


    protected void Page_Load(object sender, EventArgs e)
      {
    //....
    }

    中没有区分页面首次载入和回送,这样就出现了问题:每次Page_Load都从数据库中读取用户的信息,而按钮提交是回送,回送前仍然从数据库中读取用户信息,用户修改的信息根本就不会存入到数据库中,存储到数据库中的仍然是从数据库中读取的原用户信息。

    在Page_Load中加
    if(!IsPostBack)
    {
       
    }

    • 已标记为答案 yzjiujian 2010年4月6日 1:53
    2010年4月6日 1:53