数据库更新成功,但是数据没有改变
用的是sqldatasource
<asp:SqlDataSource ID= "SqlDataSource1 " runat= "server " ConnectionString= " <%$ ConnectionStrings:EBusinessConnectionString %> "
OnUpdated= "SqlDataSource1_Updated " ProviderName= " <%$ ConnectionStrings:EBusinessConnectionString.ProviderName %> "
UpdateCommand= "UPDATE Categories SET name =@newname where category_id=@newcategory_id; ">
<UpdateParameters>
<asp:ControlParameter ControlID= "name " Name= "newname " PropertyName= "Text " />
<asp:SessionParameter Name= "newcategory_id " SessionField= "category_id " />
</UpdateParameters>
</asp:SqlDataSource>
后台代码:
public partial class Admin_categories_edit : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
name.Text = Session[ "name "].ToString().Trim();
}
protected void Button2_Click(object sender, EventArgs e)
{
Response.Redirect( "categories_mgr.aspx ");
}
protected void SqlDataSource1_Updated(object sender, SqlDataSourceStatusEventArgs e)
{
if (e.AffectedRows > 0)
{
// Perform any additional processing, such as sending an e-mail notification.
Label1.Text = Request.LogonUserIdentity.Name +
" changed user information sucessfully! ";
}
else
{
Label1.Text = "No data updated! ";
}
}
protected void Button1_Click(object sender, EventArgs e)
{
try
{
SqlDataSource1.Update();
}
catch (Exception err)
{
Label1.Text = err.Message;
}
}
}
总能显示e.AffectedRows > 0出现的changed user information sucessfully,但是数据库中显示的数据还是原来那个,我想可能是改变的数据是老数据,但是为什么会这个样子?还有我不想用ado或者其他办法解决,因为ms这个以后用着快些:)
[解决办法]
name.Text = Session[ "name "].ToString().Trim();==> if(!this.IsPostBack){ name.Text = Session[ "name "].ToString().Trim();}
[解决办法]
if(!this.IsPostBack)
{
name.Text = Session[ "name "].ToString().Trim();
}
..........
[解决办法]
name.Text = Session[ "name "].ToString().Trim();
看了半天
如果说我没有看错,你应该是这样的一种情况
首先你肯定是Update成功了的,也就是说你的e.AffectedRows > 0恒真
你仔细看看你的那条更新语句
(UPDATE Categories SET name =@newname where category_id=@newcategory_id)
应该是把当前满足条件的name字段赋值你登录的Session[ "name "]
可你的Session[ "name "]和数据库中那个记录的当前值进一致,所以才是显示修改成功,可以值又没有改变.
关注中,有消息说~