2014-09-05 163 views
0

我的工作中,我必须使用更新查询一个项目,但问题是成功执行该查询后的数据没有更新 这里是我的代码更新查询执行成功但不更新数据

protected void Update_btn_Click(object sender, EventArgs e) 
{ 
    var aid = Convert.ToInt32(Session["Aid"].ToString()); 
    try 
    { 
     var conn = ConfigurationManager.ConnectionStrings["AccountsConnectionString"].ConnectionString; 
     using (var con = new SqlConnection(conn)) 
     { 
      con.Open(); 
      string query = "Update Tasks set [email protected],[email protected] WHERE [email protected] and [email protected]"; 
      var cmd = new SqlCommand(query, con); 
      cmd.Parameters.AddWithValue("@tname", taskname_tb.Text); 
      cmd.Parameters.AddWithValue("@tdetails", Detail_ta.Text); 
      cmd.Parameters.AddWithValue("@id",Convert.ToInt32(id_tb.Text)); 
      cmd.Parameters.AddWithValue("@aid",aid); 
      cmd.ExecuteNonQuery(); 
      Response.RedirectPermanent("~/AllTasks.aspx",false); 
     } 
    } 
    catch (Exception exception) 
    { 
     Response.Write("<script>Some Error occured</script>"); 
    } 
} 

尝试参数不转换为int32 但相同的结果 也当在sql中运行查询它工作正常。

表任务的架构

CREATE TABLE [dbo].[Tasks] (
[Id]   INT   IDENTITY (1, 1) NOT NULL, 
[TaskName]  VARCHAR (500) NOT NULL, 
[TaskDetails] VARCHAR (MAX) NOT NULL, 
[CreationDate] DATETIME  NOT NULL, 
[CreatedBy] INT   NOT NULL, 
PRIMARY KEY CLUSTERED ([Id] ASC), 
CONSTRAINT [FK_Tasks_ToAccounts] FOREIGN KEY ([CreatedBy]) REFERENCES [dbo].[Accounts] ([Id]) 

);下面的查询

+2

你应该看看[我们可以停止使用AddWithValue()了吗?](http://blogs.msmvps.com/jcoehoorn/blog/2014/ 05/12/can-we-stop-using-addwithvalue-already /)并停止使用'.AddWithValue()' - 它可能导致意想不到的和令人惊讶的结果... – 2014-09-05 18:56:57

+1

我不知道有关AddWithValue的问题。这很好。但为了以防万一...桌子上的任何触发器?当这种奇怪的行为发生时,我总是会责怪触发器。 – RThomas 2014-09-05 19:06:05

+0

@marc_s甚至没有像那样工作'cmd.Parameters.Add(“@ tname”,SqlDbType.VarChar).Value = taskname_tb.Text;' – Mohsin 2014-09-05 19:08:44

回答

0

首先试运行

SELECT * FROM任务其中id = @ ID和CreatedBy = @援助

应该返回一行。

第二次尝试在应用程序运行时重命名数据库文件。由于您尚未手动处理连接,所以如果尝试重命名/删除数据库文件系统,则不应允许它。

+0

是的,上面的查询返回一条记录,其次它不允许在应用程序运行时重命名数据库 – Mohsin 2014-09-06 04:09:15

0

问题以上的问题,我发现 我没有Page_Load()所以添加Is.Postback当我点击更新按钮很多思考后问题Asp.Net页面页面生命周期出现并再次将其取出旧值和更新所以我无法看到任何变化因为它正在更新旧数据

+1

在任何时候您似乎都没有真正检查实际的数据库值 – 2014-09-07 11:27:50