【问题标题】:Saving to database, then reading from database, data is not there保存到数据库,然后从数据库中读取,数据不存在
【发布时间】:2015-10-22 13:10:30
【问题描述】:

我有这个页面,用户可以在其中修改它的信息。当页面加载时,它将用户信息填写到文本输入字段中。然后,您可以更改您的信息并点击保存。由于刷新,数据应该保存到数据库中,并且也应该反映在文本字段中。但它不保存数据。如果我删除数据的读取,点击按钮时数据会保存,但是当有数据读取时,数据不会保存。

这是“读取数据”部分的代码,在Page_Load()中:

string loggedInUser = System.Web.HttpContext.Current.User.Identity.Name;
    SqlConnection ConnectDb = new SqlConnection("Data Source=serverHere;Initial Catalog=catalogHere;User ID=userNameHere;Password=passwordHere;"); //Opretter database connection string
    SqlDataReader infoReader = null;
    SqlCommand getUserInfo = new SqlCommand("SELECT firstName,lastName,age,city,contact,bio FROM UserInfo WHERE userName = @userName", ConnectDb);
    getUserInfo.Parameters.Add("@userName", loggedInUser);
    ConnectDb.Open();
    infoReader = getUserInfo.ExecuteReader();
    infoReader.Read();
    {
        tbInfoFirstName.Text = infoReader["firstName"].ToString();
        tbInfoLastname.Text = infoReader["lastName"].ToString();
        tbInfoAge.Text = infoReader["age"].ToString();
        tbInfoCity.Text = infoReader["city"].ToString();
        tbInfoKontakt.Text = infoReader["contact"].ToString();
        tbInfoAbout.Text = infoReader["bio"].ToString();
    };
    ConnectDb.Close();

这是保存按钮的代码:

string loggedInUser = System.Web.HttpContext.Current.User.Identity.Name;

    SqlConnection ConnectDb = new SqlConnection("Data Source=serverHere;Initial Catalog=catalogHere;User ID=userNameHere;Password=passwordHere;"); 
    SqlCommand SavePersonInfo = new SqlCommand("UPDATE UserInfo SET firstName = @firstName,lastName = @lastName,age = @age,city = @city,contact = @contact,bio = @bio WHERE userName = @userName", ConnectDb);
    SavePersonInfo.Parameters.AddWithValue("@firstName", tbInfoFirstName.Text); 
    SavePersonInfo.Parameters.AddWithValue("@lastName", tbInfoLastname.Text);
    SavePersonInfo.Parameters.AddWithValue("@age", tbInfoAge.Text);
    SavePersonInfo.Parameters.AddWithValue("@city", tbInfoCity.Text);
    SavePersonInfo.Parameters.AddWithValue("@contact", tbInfoKontakt.Text);
    SavePersonInfo.Parameters.AddWithValue("@bio", tbInfoAbout.Text);
    SavePersonInfo.Parameters.AddWithValue("@userName", loggedInUser);


    ConnectDb.Open(); 
    SavePersonInfo.ExecuteNonQuery(); 
    //Response.Redirect("Manage.aspx"); 
    ConnectDb.Close();

如前所述,保存代码自行工作,但在阅读代码也处于活动状态时不起作用,例如:未注释掉。

【问题讨论】:

  • 请通过使用工具查看您的数据库来调试失败的部分(选择或插入)。
  • Page_Load 在 Web 表单中的按钮事件处理程序之前触发。
  • 是的,它在页面加载时读取数据。但它不应该只做一次吗?
  • 尝试将加载的数据放入一个!ispostback
  • KratosMafia,这行得通,谢谢!

标签: c# asp.net sql-server database


【解决方案1】:

我相信 Page_Load 事件是在 PostBack 上的事件按钮之前启动的。 在这种情况下,读取的是旧数据再次填充字段并最终再次记录旧数据。 你检查了吗?

如果是这样,请将您的代码放在 Page_Load 中的 if (IsPostBack!) 中:

public void Page_Load() {
    // ...

    if (!IsPostBack) {
        // code read the data
    }
}

【讨论】:

    猜你喜欢
    • 2015-04-21
    • 1970-01-01
    • 1970-01-01
    • 2017-06-16
    • 2021-03-02
    • 1970-01-01
    • 1970-01-01
    • 2013-12-24
    • 2015-10-14
    相关资源
    最近更新 更多