CmdText1 = "select VALUE_TIME,TAG_VALUE from DWSSJK.DW_TX_SSJK_HISTORY_DATA"
+ "where DWSSJK.DW_TX_SSJK_HISTORY_DATA.VALUE_TIME between startTime and endTime";CmdText2 = "select VALUE_TIME,TAG_VALUE from "+ ds.Tables[0].Rows[0][TARGETTABLE] 
+"where DWSSJK.DW_TX_SSJK_HISTORY_DATA.VALUE_TIME between startTime and endTime";dataset ds1 = SqlHelper.ExecuteDataSet(sqlConnectionString1, CmdText1, "SqlConnectionString");
dataset ds2 = SqlHelper.ExecuteDataSet(sqlConnectionString2, CmdText2, "SqlConnectionString");从2个不同数据库查结构相同的表 连接字符串肯定不同 怎么把这表2的结果和表1的结果存到一个表里 

解决方案 »

  1.   

    ds1.Merge(ds2)
    把ds2合并到ds1
      

  2.   

    用union重写两个SQL语句,再查询即可
      

  3.   

    不知道能满足不 
      for(int i=0;i!=Ds2.Table[0].Rows.Count;i++)
                {
                   Ds1.Table[0].ImportRow(Ds2.Table[0].Rows[i]);
                }
                   
      

  4.   

      DataSet ds1=GetDataSet1();
    DataSet ds2=GetDataSet2();ds1.Merge(ds2,true,MissingSchemaAction.AddWithKey);return ds1;合并两个DataSet,一定要确定这两个DataSet里面表的结构是一样的。简单说,就是从一个数据表取2次数据放入2个DataSet,可以合并。
      

  5.   


    这个合并了DATASET没合并表吧 用union重写两个SQL语句,再查询即可  是什么意思 怎么写? 谢谢
      

  6.   


    SqlDataAdapter sda = new SqlDataAdapter(str,sqlconnLea);
    DataSet ds = new DataSet();
    sda.Fill(ds,"DSLea");用SqlDataAdapter的Fill方法就可以了
      

  7.   

    你可以把 这两个Sql语句构造成一条Sql   用Union all 连接(因为你两个表的结构是相同的) 即可得到一个表1和表2 的集合  下面你在想放哪 怎么操作都可以了 。
      

  8.   


    也就是说 dsl.table[0] 就是合并的表?
      

  9.   


    CmdText1 = "select VALUE_TIME,TAG_VALUE from DWSSJK.DW_TX_SSJK_HISTORY_DATA" 
    + "where DWSSJK.DW_TX_SSJK_HISTORY_DATA.VALUE_TIME between startTime and endTime"; CmdText2 = "select VALUE_TIME,TAG_VALUE from "+ ds.Tables[0].Rows[0][TARGETTABLE] 
    +"where DWSSJK.DW_TX_SSJK_HISTORY_DATA.VALUE_TIME between startTime and endTime"; Datatable table1 = SqlHelper.ExecuteDatatable(sqlConnectionString1, CmdText1, "SqlConnectionString"); 
    Datatable table2 = SqlHelper.ExecuteDatatable(sqlConnectionString2, CmdText2, "SqlConnectionString"); 
      sqlAdapter.Fill(ds, "table1")
    sqlAdapter.Fill(ds, "table2")把两个不同名的table fill到datset就可以
      

  10.   


    SqlHelper 没有写  ExecuteDatatable 方法 
    而且我是要把2个表弄成一个表
      

  11.   

    有3中方案
    -----------------
    一是ds1.Merge(ds2) 
    把ds2合并到ds1
    这个方案我没用过呵呵
    ---------------
    二是 Union all 将数据库表连接起来
    select a,b from table01
     union all
    select aa as a,bb as b from  table02
    ---------------------
    三是后台拼接表
    //-----------------数据源01
            if (dst.Tables.Count != 0)
            {
                if (dst.Tables[0].Rows.Count != 0)
                {
                    //gvModule.DataSource = dst.Tables[0];
                    //gvModule.DataBind();
                    DataTable newTable = new DataTable();                newTable.Columns.Add("ModID", typeof(System.Int32));
                    newTable.Columns.Add("ModName", typeof(System.String));
                    newTable.Columns.Add("moduleNameRe", typeof(System.String));
                    newTable.Columns.Add("subjectNum", typeof(System.String));
                            for (int i = count01; i < count02; i++)//dst.Tables[0].Rows.Count
                        {
                    DataRow dr = newTable.NewRow();
                    dr["ModID"] = dst.Tables[0].Rows[i]["ModID"].ToString();
                    dr["ModName"] = ModuleNameAll(dst.Tables[0].Rows[i]["ModName"].ToString());
                    dr["moduleNameRe"] = dst.Tables[0].Rows[i]["Re"].ToString(); ;
                    dr["subjectNum"] = send;
                             }
                  //---------------------数据源02
      if (dst02.Tables.Count != 0)
            {
    for (int i = count01; i < count02; i++)//dst.Tables[0].Rows.Count
                        {                dr["ModID"] = dst.Tables[0].Rows[i]["ModID"].ToString();
                    dr["ModName"] = ModuleNameAll(dst.Tables[0].Rows[i]["ModName"].ToString());
                    dr["moduleNameRe"] = dst.Tables[0].Rows[i]["Re"].ToString(); ;
                    dr["subjectNum"] = send;
    }
            }
                   newTable.Rows.Add(dr);
                   }
            }
     gvModule.DataSource = newTable;
                        gvModule.DataBind();-------------------------
    这样做的性能都受影响
    呵呵呵
      

  12.   


    也可以这样
    CmdText1 = "select VALUE_TIME,TAG_VALUE from DWSSJK.DW_TX_SSJK_HISTORY_DATA" ;
    CmdText1 +="where DWSSJK.DW_TX_SSJK_HISTORY_DATA.VALUE_TIME between startTime and endTime"; 
    CmdText+ = " union "
    CmdText+ = "select VALUE_TIME,TAG_VALUE from (select top1 TARGETTABLE as 表名 from table where...) ";
     CmdText+ = " where DWSSJK.DW_TX_SSJK_HISTORY_DATA.VALUE_TIME between startTime and endTime "; dataset ds1 = SqlHelper.ExecuteDataSet(sqlConnectionString1, CmdText1, "SqlConnectionString"); 
      

  13.   

    肯定不行 不在同一个数据库 怎么用同一个 sqlConnectionString1????
      

  14.   

    ds1.Merge沒用過,樓主可以自己試試
    union的就不要再說了,肯定不行。
    最可行也是效率最低的是查出來後循環其中一個DataTable把記錄塞到另一個DataTable裡。
      

  15.   

    我记得在.Merge中可以把结构和数据都集合在一起 至于具体怎么操作就要看LZ的要求了
      

  16.   

    sql
    select * from 库1.表1
    union
    select * from 库2.表2
    orcle 好像是库1..表1