oleDbCon.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+ temp +";Extended Properties=Excel 8.0"; 
oleDbCom.CommandText = "select * from [aa$]";
oleDbCom.Connection = oleDbCon;
oleDbDA.SelectCommand = oleDbCom;
oleDbDA.Fill(this.dataSet1,"aa"); DataGrid1.DataSource = dataSet1.Tables["aa"].DefaultView;
DataGrid1.DataBind();oleDbCon.ConnectionString = "Location=192.168.0.130:50000;Provider=\"IBMDADB2.1\";Mode=ReadWrite;User ID= db2admin;Data Source=AISNB;Password = db2admin";
oleDbCom.CommandText = "select * from units where unit='aaa'";
oleDbCom.Connection = oleDbCon;
oleDbDA.SelectCommand = oleDbCom;
System.Data.OleDb.OleDbCommandBuilder cb=new System.Data.OleDb.OleDbCommandBuilder(oleDbDA);
oleDbCon.Open();
oleDbDA.Fill(this.dataSet2,"aa");
oleDbCon.Close();//
dataSet2 = dataSet1.Copy();
dataSet2.Tables["aa"].PrimaryKey = new DataColumn[]{dataSet2.Tables["aa"].Columns["unit"]};//建立一个主键
DataGrid2.DataSource = dataSet2.Tables["aa"].DefaultView;
DataGrid2.DataBind();
Response.Write(oleDbDA.Update(dataSet2,"aa"));
//总是返回为0没更新任何一行
如果不用copy()采用dataSet2.Tables["aa"].Rows.Add(dr);报错说是没有updatecommand

解决方案 »

  1.   

    你的代码里本来就没有修改dataSet2中的数据呀!
      

  2.   

    SqlConnection sqlConn = NewDbConnection();
    string strSelSql = ""
    SqlDataAdapter  sqlAdapter = new  SqlDataAdapter(strSelSql,sqlConn);
    //用于Update ---必须要有
    SqlCommandBuilder sqlCommBuilder = new SqlCommandBuilder(sqlAdapter); DataSet dsSql  = new DataSet();
    sqlAdapter.Fill(dsSql);
    // 
    for (int i=0;i<dt.Rows.Count;i++)
    {
    DataRow dr = dtSql.NewRow();
    //设置其他列
    for (int n=0;n<dt.Columns.Count;n++)
    {    .......... }

    dtSql.Rows.Add(dr);
    }
    //更新--Update                      sqlAdapter.Update(dsSql);
    sqlCommBuilder.RefreshSchema();
      

  3.   

    dataset2没什么数据,我加where是为了查出空数据
      

  4.   

    xls --> dataset1 --> dataset2 -->数据库
      

  5.   

    苯办法
    oleDbDA.SelectCommand = oleDbCom;
    oleDbDA.UpdateCommand = oleDbCom;
      

  6.   

    对于不返回任何基表信息的 SelectCommand 不支持动态 SQL 生成。 
    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.InvalidOperationException: 对于不返回任何基表信息的 SelectCommand 不支持动态 SQL 生成。
      

  7.   

    SqlCommandBuilder这个类的实例必须要有的,使用同楼上各位所说的!另外还要注意的是数据库中的表必须具有主键,如果没有那么无法使用自动更新,你必须手动设置apdat的updatecommand属性!!!
      

  8.   

    有主键 就是unit
    OleDbCommandBuilder我也加了之后用cb.GetInsertCommand().CommandText之类的看不到任何东西
      

  9.   

    Jouzen()的方法可行,我跟楼主的一个差不多的问题解决了,谢谢 Jouzen()
      

  10.   

    有主键是不够的,必须Select单个表,OleDbCommandBuilder才会起作用(不信可以试试)。建议自己写Command,不要用OleDbCommandBuilder,也不复杂,就是Select,Update,insert,delete对应的Command.