[英]Saving to database, then reading from database, data is not there
我有此页面,用户可以在其中修改其信息。 页面加载后,它将用户信息填充到文本输入字段中。 然后,您可以更改您的信息并点击保存。 由于刷新,数据应保存到数据库,并且也应反映在文本字段中。 但是它不保存数据。 如果删除数据读取,则单击按钮时将保存数据,但是当有数据读取时,将不保存数据。
这是“读取数据”部分中的代码,这在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事件是在PostBack上的事件按钮之前启动的。 在这种情况下,读取的是旧数据再次填充字段并最终再次记录旧数据。 你检查了吗?
如果是这样,请将您的代码放在if(IsPostBack!)中的Page_Load中:
public void Page_Load() {
// ...
if (!IsPostBack) {
// code read the data
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.