环境:VS2008+SQL2005我在用Linq做一条记录update操作时,发现更新不成功。但是在Page_Load里把赋值的语句拿掉后,却更新成功。请大家帮我看看,错在哪里并告知如何解决?谢谢代码如下:using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;public partial class change_info : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        string job_num = Session["Username"].ToString();
        string name = Session["User"].ToString();
        Label1.Text = job_num;
        Label2.Text = name;        //下面的语句拿掉,update就成功了
        SqlConnection con = new SqlConnection("Server=FUDAN-3B0AD2827;uid=sa;pwd=fudan107;Database=fudanOA");// FUDAN-3B0AD2827   www-b881bf8c5fa 
        //打开数据库连接
        con.Open();
        string b_sql = "select * from dbo.bill_user where job_num='" +job_num +"'";
        SqlCommand cmd = new SqlCommand(b_sql, con);
        SqlDataReader dr = cmd.ExecuteReader();
        while (dr.Read())
        {
            TextBox3.Text = dr["academy"].ToString();
            TextBox4.Text = dr["telephone"].ToString();
            TextBox5.Text = dr["cellphone"].ToString();
            TextBox6.Text = dr["address"].ToString();
            TextBox7.Text = dr["e_mail"].ToString();
            TextBox8.Text = dr["re"].ToString();
        }
        con.Dispose();
        
        
        
    }    protected void update()
    {
        string job_num = Session["Username"].ToString();
        DataClassesDataContext lq = new DataClassesDataContext();
        var result = from u in lq.bill_user
                     where u.job_num == job_num
                     select u;
        foreach (bill_user user in result)
        {
            TextBox3.Text = user.academy;
            TextBox4.Text = user.telephone;
            TextBox5.Text = user.cellphone;
            TextBox6.Text = user.address;
            TextBox7.Text = user.e_mail;
            TextBox8.Text = user.re;
        }
        lq.SubmitChanges();
    }    protected void Button1_Click(object sender, EventArgs e)
    {
        if(TextBox1.Text.Trim()!=TextBox2.Text)
            RegisterStartupScript("", "<script>alert('请输入相同的新口令')</script>");
        
        
        DataClassesDataContext lq = new DataClassesDataContext();
        var result = from u in lq.bill_user
                     where u.job_num == Label1.Text.Trim()
                     select u;
        foreach (bill_user user in result)
        {
            user.password = TextBox1.Text.Trim();    //很奇怪的,这些记录单独赋值如user.password ="11"都是成功的,
            user.academy = TextBox3.Text.Trim();
            user.telephone = TextBox4.Text;
            user.cellphone = TextBox5.Text.Trim();
            user.address = TextBox6.Text;
            user.e_mail = TextBox7.Text.Trim();
            user.re = TextBox8.Text;           
        }
        
        lq.SubmitChanges();
        update();
    }
}

解决方案 »

  1.   

      protected void update()
      {
      string job_num = Session["Username"].ToString();
      DataClassesDataContext lq = new DataClassesDataContext();
      var result = from u in lq.bill_user
      where u.job_num == job_num
      select u;
      foreach (bill_user user in result)
      {
      TextBox3.Text = user.academy;
      TextBox4.Text = user.telephone;
      TextBox5.Text = user.cellphone;
      TextBox6.Text = user.address;
      TextBox7.Text = user.e_mail;
      TextBox8.Text = user.re;

      }
      lq.SubmitChanges();
      }搞笑了。。你这是UPDATE操作么?  写反了吧
      

  2.   

    protected void Button1_Click(object sender, EventArgs e)
      {
      if(TextBox1.Text.Trim()!=TextBox2.Text)
      RegisterStartupScript("", "<script>alert('请输入相同的新口令')</script>");
        
        
      DataClassesDataContext lq = new DataClassesDataContext();
      var result = from u in lq.bill_user
      where u.job_num == Label1.Text.Trim()
      select u;
      foreach (bill_user user in result)
      {
      user.password = TextBox1.Text.Trim(); //很奇怪的,这些记录单独赋值如user.password ="11"都是成功的,
      user.academy = TextBox3.Text.Trim();
      user.telephone = TextBox4.Text;
      user.cellphone = TextBox5.Text.Trim();
      user.address = TextBox6.Text;
      user.e_mail = TextBox7.Text.Trim();
      user.re = TextBox8.Text;    
      }
        
      lq.SubmitChanges();
       update(); 问题就在这里
      }
      

  3.   

    update()的意思是将数据库中更新的记录再反馈回 textbox,让用户看到修改后的变化。真正的更新数据库操作是update前面的Linq语句。
      

  4.   

    这是老问题了protected void Page_Load(object sender, EventArgs e)
      { if(!PostBack)
    {
      string job_num = Session["Username"].ToString();
      string name = Session["User"].ToString();
      Label1.Text = job_num;
      Label2.Text = name;  //下面的语句拿掉,update就成功了
      SqlConnection con = new SqlConnection("Server=FUDAN-3B0AD2827;uid=sa;pwd=fudan107;Database=fudanOA");// FUDAN-3B0AD2827 www-b881bf8c5fa  
      //打开数据库连接
      con.Open();
      string b_sql = "select * from dbo.bill_user where job_num='" +job_num +"'";
      SqlCommand cmd = new SqlCommand(b_sql, con);
      SqlDataReader dr = cmd.ExecuteReader();
      while (dr.Read())
      {
      TextBox3.Text = dr["academy"].ToString();
      TextBox4.Text = dr["telephone"].ToString();
      TextBox5.Text = dr["cellphone"].ToString();
      TextBox6.Text = dr["address"].ToString();
      TextBox7.Text = dr["e_mail"].ToString();
      TextBox8.Text = dr["re"].ToString();
      }
      con.Dispose();
        
    }    
        
      }原因是在你点BUTTON后 页面刷新 又重新读了一次数据库的值 将你新输入的值给覆盖掉了
      

  5.   

    搞定了,谢谢
    加上if(!IsPostBack)就行了