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的结果存到一个表里
+ "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的结果存到一个表里
把ds2合并到ds1
for(int i=0;i!=Ds2.Table[0].Rows.Count;i++)
{
Ds1.Table[0].ImportRow(Ds2.Table[0].Rows[i]);
}
DataSet ds2=GetDataSet2();ds1.Merge(ds2,true,MissingSchemaAction.AddWithKey);return ds1;合并两个DataSet,一定要确定这两个DataSet里面表的结构是一样的。简单说,就是从一个数据表取2次数据放入2个DataSet,可以合并。
这个合并了DATASET没合并表吧 用union重写两个SQL语句,再查询即可 是什么意思 怎么写? 谢谢
SqlDataAdapter sda = new SqlDataAdapter(str,sqlconnLea);
DataSet ds = new DataSet();
sda.Fill(ds,"DSLea");用SqlDataAdapter的Fill方法就可以了
也就是说 dsl.table[0] 就是合并的表?
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就可以
SqlHelper 没有写 ExecuteDatatable 方法
而且我是要把2个表弄成一个表
-----------------
一是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();-------------------------
这样做的性能都受影响
呵呵呵
也可以这样
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");
union的就不要再說了,肯定不行。
最可行也是效率最低的是查出來後循環其中一個DataTable把記錄塞到另一個DataTable裡。
select * from 库1.表1
union
select * from 库2.表2
orcle 好像是库1..表1