确定table里的数据和数据库不同?

解决方案 »

  1.   

    你用的是Oracle数据库,必须确认提交一下。
      

  2.   

    carl5chao :怎样确认提交??
      

  3.   

    有主键吗? 
    for (int i = 0; i < import_gongzuo.Items.Count; i++)
    {
    id1 = import_gongzuo.DataKeys[i].ToString();//主键
    gongzuo_ren1 = ((TextBox)import_gongzuo.Items[i].FindControl("gongzuo_ren")).Text;
    gongzuomingcheng1 = ((TextBox)import_gongzuo.Items[i].FindControl("gongzuomingcheng")).Text;
    gongzuoneirong1 = ((TextBox)import_gongzuo.Items[i].FindControl("gongzuoneirong")).Text;
    gongzongwanchengshijian1 = ((TextBox)import_gongzuo.Items[i].FindControl("gongzuowanchengshijian")).Text;
    gongzuoxuqiu1 = ((TextBox)import_gongzuo.Items[i].FindControl("gongzuoxuqiu")).Text;
    sql = "update sale_gongzuo set zerenren='" + gongzuo_ren1 + "' , gongzuomingcheng = '" + gongzuomingcheng1 + "' ,gongzuoxiangxineir = '" + gongzuoneirong1 + "' ,querenshijian = '" + gongzongwanchengshijian1 + "' , zhichi = '" + gongzuoxuqiu1 + "' where id = " + id1;
    DB.ExecSQLReInt(sql);
    }我就这样更新页面的 datagrid的啊
      

  4.   

    http://topic.csdn.net/u/20080704/13/49a9a287-79e7-41d8-a14d-36a8aceac449.html
    看看这个
      

  5.   

    carl5chao :
    我参照那个改了,但是还是更新不到数据库啊
      

  6.   

    OracleDataAdapter rar = new OracleDataAdapter(); 
                    conn.Open();                 trans = conn.BeginTransaction(); 
                    OracleCommandBuilder cmdBuiler = new OracleCommandBuilder(rar); 
    事务名字呢?????
      

  7.   

    事务也要提交的!~~
    transaction.Commit();
      

  8.   

    看一下OracleCommandBuilder 的几个Command是不是NULL,如果没有的话。
    为OracleDataAdapter 指定一个SelectCommand
      

  9.   

      看了一下,你的OracleDataAdapter相对应的OracleCommand对像没有定义啊,当然不能更新... OracleCommand comm = new OracleCommand(conn);
     OracleDataAdapter rar = new OracleDataAdapter(Comm); 
      

  10.   

    另外更新后DataTable后要调用AcceptChanges()。不然下次更新会有问题。
      

  11.   

    public static DataSet SelectOracleSrvRows(string myConnection, string mySelectQuery, string myTableName)
    {
       OracleConnection myConn = new OracleConnection(myConnection);
       OracleDataAdapter myDataAdapter = new OracleDataAdapter();
       myDataAdapter.SelectCommand = new OracleCommand(mySelectQuery, myConn);
       OracleCommandBuilder cb = new OracleCommandBuilder(myDataAdapter);   myConn.Open();
       DataSet ds = new DataSet();
       myDataAdapter.Fill(ds, myTableName);   //Code to modify data in DataSet goes here...   //Without the OracleCommandBuilder this line would fail.
       myDataAdapter.Update(ds, myTableName);
       myConn.Close();
       return ds;
    }
      

  12.   

    public static DataSet SelectOracleSrvRows(string myConnection, string mySelectQuery, string myTableName) 

    OracleConnection myConn = new OracleConnection(myConnection); 
    OracleDataAdapter myDataAdapter = new OracleDataAdapter(mySelectQuery,myConn); 
    OracleCommandBuilder cb = new OracleCommandBuilder(myDataAdapter);  DataSet ds = new DataSet(); 
      myDataAdapter.Fill(ds, myTableName);   //Code to modify data in DataSet goes here...   //Without the OracleCommandBuilder this line would fail. 
      myDataAdapter.Update(ds, myTableName); 
      myConn.Close(); 
      return ds; 
      

  13.   

    我不明白为什么要查询?
    如果是查询的话更新的也不是从datagridview中取得的数据啊
      

  14.   

    这个查询只是得到表的信息而已,没有其他的作用,你也可以只查询但是没有任何值的
    比如select * from 表 where 1<>1
    我觉的这个查询只是指定了要更新的是哪张表(-_-个人觉的,看其他高手怎么回答了)
      

  15.   

    问题是我已经按照上面的做了, 可结果还是不能更新到数据库里去啊
    倒是datagridview更新了
      

  16.   

            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.Open();                trans = conn.BeginTransaction();
                    //trans = cmd.Transaction;                OracleDataAdapter rar = new OracleDataAdapter(cmd);
                    OracleCommandBuilder cmdBuiler = new OracleCommandBuilder(rar);                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;
            } 
      

  17.   

                  OracleCommand cmd = new OracleCommand("SELECT * FROM CSHAREUSERINFO"); 
    大哥看清楚
                  OracleCommand cmd = new OracleCommand("SELECT * FROM CSHAREUSERINFO",conn ); OK???
      

  18.   

    你加个判断吧
    if(table.HasChanged())
    看看数据集里面有没有发生修改
      

  19.   

    还有你datagridview的数据源是怎么得到的,一起贴出来看看
      

  20.   

    没有发生改变,但是我取前台的datagridview取到了改变后的数据
      

  21.   

    那你把datagridview的数据源捞取代码帖来看看
      

  22.   

              try
                {
                    con = new OleDbConnection(constr);
                    con.Open();
                    OleDbCommand cmd = new OleDbCommand("Select St_CPID as 产品编号,St_CPName as 产品名称,St_CPAnquan as 安全存量 from TbStoreChanpinxinxi", con);
                    OleDbDataAdapter da = new OleDbDataAdapter();
                    da.SelectCommand = cmd;
                    OleDbCommandBuilder cbuild = new OleDbCommandBuilder(da);
                    da.Update(dscpxx1, "TbStoreChanpinxinxi");//dscpxx1是自己在数据源类添加的DataSet生成的,似乎也可以是自定义的。
                   // dataGridView1.DataSource = dscpxx1.Tables["TbStoreChanpinxinxi"].DefaultView;
                   // MessageBox.Show("更新成功");
                    con.Close();
                    con.Dispose();
                    cmd.Dispose();
                    da.Dispose();
                    dscpxx1.Dispose();
                 }这个是可以更新数据库的,虽然不是Oracle,但形式一样,只是语句不同。
      

  23.   

    上面代码中dscpxx1这个dataset如果是自定义的,似乎要先填充
      

  24.   

    个人从来都不喜欢用这种更新法,似乎是因为容易出错,一般都用循环来更新datagridview的数据到数据库。
    如果你的问题实在解决不了,不妨用循环来更新数据库。修改datagridview时,ID列为readonly,更新时循环datagridview中所有行(set NAME=datagirdview1.rows[i].cells[0].tostring() .....)
      

  25.   

    http://topic.csdn.net/u/20080709/09/fda49cd6-4ac3-49b8-85c9-8cd6291d7a1a.html