public DataSet UpInfo(DataSet table,String tableName)
        {
            String connString = "Data Source=ORAKSJH;user=u_ksjh;password=smksjh";
            OracleConnection conn = new OracleConnection(connString);
            OracleTransaction trans = null;            try
            {
                OracleCommand cmd = new OracleCommand(" SELECT * FROM CSHAREUSERINFO ",conn);
                conn.Open();                trans = conn.BeginTransaction();
                //cmd.Transaction = trans;                OracleDataAdapter rar = new OracleDataAdapter(cmd);
                OracleCommandBuilder cmdBuiler = new OracleCommandBuilder(rar);                if (table.HasChanges())
                {
                    rar.Update(table.Tables[tableName]);                    trans.Commit();
                    conn.Close();
                }
               
            }
            catch (Exception e)
            {
                e.ToString();
                trans.Rollback();
                if (conn.State == ConnectionState.Open)
                {
                    conn.Close();
                }
                
            }            return table;
        } 我在前台的datagridview中已经取到了改变的数据,可是为什么table.HasChanges()=false呢???

解决方案 »

  1.   

    "我在前台的datagridview中已经取到了改变的数据"?
    你把绑定到DataGridView的方法及相应数据源的捞取代码拿来看看
      

  2.   

    你要看你的Table有没有更新数据,而不是看DataGridView有没有改变数据;
    还有一个是,你有没有做过AcceptChanges()之类的事情?如果做了,那么DT的状态都变掉了。
      

  3.   

    他的table肯定是改变了的,从代码可以看出来。只是更新的时候出了点问题,HOHO
      

  4.   

    你在程序里看看传进来的DataSet中的值有没有变
      

  5.   

    private void Form4_Load(object sender, EventArgs e)
            {
                monthCalendar1.Visible = false;
                StringBuilder sb = new StringBuilder();
                sb.Append(" SELECT * FROM CSHAREUSERINFO WHERE(1=1) ");
                Form1 f = new Form1();
                dsAll = f.getCollections(sb.ToString());//查询的方法。           
                dataGridView1.DataSource = dsAll.Tables[0];
    }
      

  6.   

    你上面的代码一点问题都没有,问题出现在其他地方
    table.HasChanges()) 都判断没有修改记录了
    如果你确定DataGridView有修改过了(直接在上面修改的吧)那你这个方法中的table应该是DataGridView.DataSource
      

  7.   

    table中的数据发生了改变,你再监视一下table中的行状态是否发生了改变
      

  8.   

            private void button3_Click(object sender, EventArgs e)
            {
                Form1 form1 = new Form1();            //dsAll.AcceptChanges();
                DataSet flg = form1.UpInfo(dsAll,"USERS");
                dataGridView1.DataSource = flg.Tables[0];          
            }这个是我取前台datagridview的方法,我的dsAll是全局的
      

  9.   

    这段代码如果得到的结果是DataGridView上面有显示数据的话
    那你把"保存"的按钮事件中的代码拿来看看
      

  10.   

            private void button3_Click(object sender, EventArgs e) 
            { 
                Form1 form1 = new Form1();             //dsAll.AcceptChanges(); 
                DataSet flg = form1.UpInfo(dsAll,"USERS"); 
                dataGridView1.DataSource = flg.Tables[0];           
            }
    你试试
            private void button3_Click(object sender, EventArgs e) 
            { 
                Form1 form1 = new Form1();             DataSet _changeDS =dsAll.GetChanges()
                form1.UpInfo(dsAll,"USERS"); 
    dsAll.Merge(_changeDS);
                dataGridView1.DataSource = dsAll.Tables[USERS];          
            }
      

  11.   

    晕,你把
    form1.UpInfo(dsAll,"USERS"); 
    改成
    form1.UpInfo(dsAll,"CSHAREUSERINFO"); 
      

  12.   

    搞什么JB,一个问题搞那么复杂。
    干脆,分开写得了,返回table写一个,更新数据库写一个.
    那样就分得清了,去看上贴我最后给你的代码和建议,看看有没有帮助吧。虽然是ACCESS的,但是,只要改数据库语言就行了
    oledb..改成Oracle...
      

  13.   

    搞什么JB,一个问题搞那么复杂。
    干脆,分开写得了,返回table写一个,更新数据库写一个.
    那样就分得清了,去看上贴我最后给你的代码和建议,看看有没有帮助吧。虽然是ACCESS的,但是,只要改数据库语言就行了
    oledb..改成Oracle...
      

  14.   

    那个表名不是在程序.Fill(DataSet ,TableName)时的表名吗??
      

  15.   

    呵呵,现在的table.haschanges() =true了但是还是不能更新
      

  16.   

    public DataSet UpInfo(DataSet table,String tableName) 这个里面的String tableName从来都没用。
      

  17.   

    private DataSet _returnDS(string _str)
    {
    OracleConnection _conn =new OracleConnection(连接字符串);
    OracleDataAdapter _ada = new OracleDataAdapter(_str,_conn);
    DataSet _returnDS = new DataSet();
    _ada.Fill(_returnDS,"CSHAREUSERINFO");
    return _returnDS;}private void Form4_Load(object sender, EventArgs e) 
            { 
                monthCalendar1.Visible = false; 
                StringBuilder sb = new StringBuilder(); 
                sb.Append(" SELECT * FROM CSHAREUSERINFO WHERE (1=1) "); 
                dsAll = _returnDS(sb.ToString());           
                dataGridView1.DataSource = dsAll.Tables[CSHAREUSERINFO]; 
    }
     public DataSet UpInfo(DataSet table) 
            { 
                String connString = "Data Source=ORAKSJH;user=u_ksjh;password=smksjh"; 
                OracleConnection conn = new OracleConnection(connString); 
                OracleTransaction trans = null;             try 
                { 
                    OracleCommand cmd = new OracleCommand(" SELECT * FROM CSHAREUSERINFO ",conn); 
                    conn.Open();                 trans = conn.BeginTransaction(); 
                    //cmd.Transaction = trans;                 OracleDataAdapter rar = new OracleDataAdapter(cmd); 
                    OracleCommandBuilder cmdBuiler = new OracleCommandBuilder(rar);                 if (table.HasChanges()) 
                    { 
                        rar.Update(table.Tables[CSHAREUSERINFO]);                     trans.Commit(); 
                        conn.Close(); 
                    } 
                  
                } 
                catch (Exception e) 
                { 
                    e.ToString(); 
                    trans.Rollback(); 
                    if (conn.State == ConnectionState.Open) 
                    { 
                        conn.Close(); 
                    } 
                    
                }             return table; 
            }      private void button3_Click(object sender, EventArgs e) 
            { 
                dataGridView1.DataSource = UpInfo(dsAll);
            }这个是根据你的修改后的,你看看
      

  18.   

    呵呵这边改成  rar.Update(table.Tables["CSHAREUSERINFO"]); 
      

  19.   

    你传进来的虽然说是USERS但是实际上用的是CSHAREUSERINFOOracleCommand cmd = new OracleCommand(" SELECT * FROM CSHAREUSERINFO ",conn); rar.Update(table.Tables[tableName]); ==rar.Update(table.Tables["USERS"]); 
      

  20.   


    rar.Update(table.Tables[tableName]); 
      

  21.   

    大哥你先把人家的方法看清楚了,他本来的方法中是有用到的tableName的--.Update(table[taleName])!!!OK???
      

  22.   

    我现在能获得table的更改状态
    但是还是不能更新到数据库中。
      

  23.   

    你用我的代码?还是你自己的
    .update(table.Tables["名字"])
      

  24.   

    你的,
    更新的时候怎么取不到table中的值了???
      

  25.   


    你认为Update(table[taleName])!!!如果tableName!=“CSHAREUSERINFO”,会有用吗?不就是=没用过。
      

  26.   


    public DataSet UpInfo(DataSet table,String tableName) 
            { 
                String connString = "Data Source=ORAKSJH;user=u_ksjh;password=smksjh"; 
                OracleConnection conn = new OracleConnection(connString); 
                OracleTransaction trans = null;             try 
                { 
                    string CmdText="SELECT * FROM "+tableName;//这样就不会固定成一张表了
                    OracleCommand cmd = new OracleCommand(CmdText,conn); 
                    conn.Open();                 trans = conn.BeginTransaction(); 
                    //cmd.Transaction = trans; 
                    OracleDataAdapter rar = new OracleDataAdapter(); 
                    rar.SelectCommad=cmd;
                    OracleCommandBuilder cmdBuiler = new OracleCommandBuilder(rar); 
                    if (table.HasChanges()) 
                    { 
                        rar.Update(table.Tables[tableName]); 
                        trans.Commit(); 
                        
                    } 
                    conn.Close(); 
                } 
                catch (Exception e) 
                { 
                    e.ToString(); 
                    trans.Rollback(); 
                    if (conn.State == ConnectionState.Open) 
                    { 
                        conn.Close(); 
                    } 
                    
                }             return table; 
            } 
      

  27.   


    public DataSet UpInfo(DataSet table,String tableName) 
            { 
                String connString = "Data Source=ORAKSJH;user=u_ksjh;password=smksjh"; 
                OracleConnection conn = new OracleConnection(connString); 
                OracleTransaction trans = null;             try 
                { 
                    string CmdText="SELECT * FROM "+tableName;//这样就不会固定成一张表了
                    OracleCommand cmd = new OracleCommand(CmdText,conn); 
                    conn.Open();                 trans = conn.BeginTransaction(); 
                    //cmd.Transaction = trans; 
                    OracleDataAdapter rar = new OracleDataAdapter(); 
                    rar.SelectCommad=cmd;
                    cmd.Transaction = trans;                OracleCommandBuilder cmdBuiler = new OracleCommandBuilder(rar); 
                    if (table.HasChanges()) 
                    { 
                        rar.Update(table.Tables[tableName]); 
                        trans.Commit(); 
                        
                    } 
                    conn.Close(); 
                } 
                catch (Exception e) 
                { 
                    e.ToString(); 
                    trans.Rollback(); 
                    if (conn.State == ConnectionState.Open) 
                    { 
                        conn.Close(); 
                    } 
                    
                }             return table; 
            } 
    需要加上这句话!
      

  28.   

    这里发贴,表示您接受了CSDN社区的 用户行为 准则。
    这里发贴,表示您接受了CSDN社区的 用户行为 准则。
    这里发贴,表示您接受了CSDN社区的 用户行为 准则。